Development blog
This is our development blog! We have been maintaining this blog with updates for over 1000 days now, starting June 10th, 2013. Here you can read about the work that goes into making a game as complex as Brutal Nature:
July 8th update
Wrote the modding web page today. Did some other minor work on the website.
Did some more work on the crafting system and added disassemble recipes for all ammo and cases.
July 7th update
Added a new script type that executes periodically as I wanted to add a new feature I call “Treasure Island”
Its a script that spawns chests containing weapons and ammo across the island. When a chest is picked up or destroyed a new chest will spawn at a random location on the island. This will hopefully encourage exploring as treasure will accumulate anywhere you avoid and become scarce in commonly travelled areas.
Since its a script and not hard coded, it can be adjusted or turned off by server owners. Right now it just picks random weapons and ammo, but it could easily be tuned to pick some ammo types more often then others or never pick some weapons, etc.
July 6th update
Got the death script now dropping ammo crates into the world when a player dies that contain his lost ammo. As it is a script and not hard coded, it can be totally reconfigured however the server owner wishes including outright disabled.
July 5th update
More work cleaning up code and making sure everything still works.
Started work on adding 'Death scripts'. Scripts executed when a player dies. So far got it selecting random ammo from the players inventory and removing it until he has lost 20% of his total ammo. Next I need to add some code to allow scripts to drop container objects in the game world.
July 4th update
Polished up the mod download code. Its fully functional now! Any changes made to files are the server are now downloaded to the client when he joins that server.
Did some play testing and bug fixing as well today. Very important to catch bugs before release.
July 3rd update
Today I mainly worked on the mod file system code. It now sends files to the client on connect when the client is missing files in its cache directory. Need to restructure the directories now to separate client and server only data from shared data.
July 2nd update
Did more work on shadows. Now Worldcrafter has flicker free shadows in areas near the user. Still have to implement cascade shadow maps, But getting closer. Rather large hit in FPS due to shadows however. I think I need to implement terrain LOD first before improving them further.
July 1st update
Happy Canada day! So since its a holiday I took the day off working on shadows.. And worked on mod management instead.
Developing a system for the server to send the client any files it needs for a modded server automatically. It will also detect when a server runs modified versions of a file and download the modified version while keeping it separate from other copies of the file.
The goal will be to allow joining a modded server to be transparent to the end user. Nothing to install or configure, just join the modded server and wait for the mod download to finish. If you have previously joined any server that even partially shares content with the server that shared content won't need to be re-downloaded!
June 30th update
Its the end of the month and looking back it has been a very productive month I must say! 3 new versions of Worldcrafter released! Tons of new sound effects, Lots of GUI upgrades, new weapons and new armor. Improved networking code, Improved client and server CPU usage, even new game play mechanics like endurance, food, recoil, radar, parties, etc. Objects can now be interacted with and can move.
A very productive month overall.
As for today, I spent most of the day researching shadow mapping, trying to understand thousands of lines of sample code. Implemented a percentage closer filtering (PCF) to filter depth shadow maps. Shadow quality has greatly improved, but only with shadows covering a small area. To enable proper shadow coverage over the entire landscape, Cascade shadow maps will be required. Those seem to be the more complex part of modern shadow mapping techniques.
June 29th update
Spent some time researching shadow mapping techniques. Spent most of the day implemented basic shadow mapping. Had some set backs due to having the incorrect view port for rendering the shadow map but eventually figured it out. Sadly basic shadow mapping is just not suitable for large terrain at decent resolution. Good news is there is about a dozen methods derived from shadow mapping to deal with these problems. There are 3 main methods of improving the shadows I will be investigating
Cascade shadow maps or Parallel-split shadow maps: using multiple shadow maps to achieve more even shadow resolution. Allows high resolution textures close up while allowing shadows at long distances. These can be used with all other shadow mapping methods.
Depth, variance maps and exponential maps: Different ways to store the depth information for shadowing, Each has its own method of comparing the depth information to get resulting shadow information and each can be filtered a different way
Filtering: Many types of filtering exist and seem to be the major contributor to shadow map quality or lack there of. They also use a lot of GPU processing time. A major difference in shadow map techniques is the filtering methods that can and can't be applied to each one.
June 28th update
Finished item dropping. All inventory items can be dropped into the real world and picked up again. Objects persist even if the server is shut down and saved, but can be destroyed by weapons fire, like everything else in the game.
June 27th update
Back to work on the drop item feature. Found some models for 'default' items. Added a new quantity pop-up when you click the drop item button.
Why is dropping items important you ask? Its the start of allowing basic cooperation and trading... Also once its done, I will be able to litter the landscape with respawning weapons, ammo, resources, etc.
And once there is loot to be found, there will be a reason to explore. That then leads to more fun features like tunnel generation, shadows and placeable lights.
June 26th update
Finally done the octtree code for movable objects. Now Worldcrafter has greatly improved support for objects that move around.
June 25th update
Work on the inventory drop function has resulted in more work having to be done on the object octtree structure to better support dynamic objects. Got most of it done, but now have to decide how movement updates should work.
June 24th update
More research into smelting and the chemistry that goes on while smelting ores.
Reworked some internals of the game. Started work on adding a drop function for inventory items.
Released: 0.24
0.24 is now released:
- Added new terrain brightness noise to greatly improve look of terrain.
- Added Endurance and Food system
- Endurance is now used by running and jumping. You will move slower and be unable to jump as high at less then 35% endurance
- Endurance is now used by shooting weapons and reloading
- Endurance is regenerated by using up food. High food, High health and low endurance all speed endurance recovery
- If no food left, Endurance will be regenerated by using health
- Health now slowly regenerates as long as you have some food remaining in your stomach
- The more food you have and the less health you have, the faster it will regenerate
- Server lag greatly reduced
- Weapons now have recoil. Recoil is influenced by endurance if endurance is under 40%
- World objects can now be interacted with, picked up or harvested for materials
- Constructable smelters added
- World objects now fall when you mine the ground out from under them
- Added chemistry recipes
- Added gunpowder requirement for ammo
- Refined some terrain textures
- Added new materials, Rock salt, Marble, Saltpeter, Basalt
June 23rd update
Polished up the smelter GUI. Made harvest, butchering and skinning results depend on size of object/animal.
Did some final bug checks and fixes, then released the new version of worldcrafter! enjoy!
June 22nd update
Never ending smelter work! Mainly work on the GUI, the smelter itself works fine now. I think the smelters good enough for release now. Got a model for the smelter today! Still some additional features to add, Like fuel purity for recipes, etc. But those can wait till next version.
Researched cupellation, the process of separating noble metals from base metals. That makes about 9 different processes for refining metals I know of now.
Added support for shrinking the GUI for people with multiple monitor setups.
June 21st update
Yet more rewriting of the smelter system. Its now working on a recipe system. This will allow more complex smelting recipes with and without fluxes with the same furnace able to produce different products from the same material if desired. It will also let me reuse the code for machines like grinders, separators, blast furnaces, etc.
I am a lot more happy with this system now. GUI still needs more work, but its functional for now.
June 20th update
Spent the day researching smelting and roasting of ores and trying to decide exactly how to proceed with further machines.
Going to do some rewriting of the smelter system to be more flexible and expandable.