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:
June 19th update
Yet more work on that smelter interface. Today I finally got my first copper out of it. The interface needs lots of polishing but it is getting there. Need to spend some time thinking about how ore roasting will work, because I wish to add a sulfur/sulfuric acid recovery mechanic to roasting. Sulfuric acid being an important industrial chemical, currently required to make gunpowder.
Did more work with the new lighting noise too. Added the ability to adjust the intensity per material and changed how the noise was added to the base texture.
June 18th update
Still working on smelter interface. Gave world objects the ability to store arbitrary data.
Added some large scale noise to the terrain lighting. Big improvement in how terrain looks. Yet another thing I have to tweak however.
June 17th update
Now can craft smelters and place them. Crafting them is like any other recipe, done at the crafting menu.
Working on the smelter user interface now. Finding it difficult to decide on how I want to implement it. Decided to try a basic implementation at first and see about adding additional features afterwards.
Adjusted terrain generation some more. Researching geology and new rocks to add.
June 16th update
Added a new section to crafting called chemistry. Contains recipes for explosives, gunpowder and other precursor chemicals. Added gunpowder requirement for all ammo recipes. Chemical recipes are based on research of real production methods. Ammo crafting recipes are based on real world reloading data.
Refined the rock salt and saltpeter texture some. Also radically changed the Granite and Covellite textures to remove the tiling.
Added ability to pick up and store in inventory world object such as trees and bushes. You can then use the inventory menu to drop them.
Now to think about adding a smelter of some kind. I did some research on smelting to determine typical fluxes used for smelting lead/copper/iron and making steel, as well as the different methods used to smelt ores and make steel. So many different methods have been used throughout human history.
June 15th update
Objects in the game now fall when you mine under them or explode the terrain under them. Lots of back end code to have it all work efficiently, with low CPU and network usage. A typical map contains over 20,000 objects so efficiency is key.
Added a menu for interacting with trees. About time we found a use for them! Now you can convert them into wood. I also added a salt and saltpeter material to the world for you to mine for. More on that tomorrow.
June 14th update
Fixed a few minor console bugs. Further tweaked recoil system. Added endurance drain for reloading.
Spent much of the day looking over code and planing on how best to add new types of objects to the game.
June 13th update
Researched recoil. Learned many interesting things, Like a significant portion of the recoil is actually the gases escaping after the bullet leaves the barrel. Some guns achieve significantly less recoil then other guns while firing the same bullet at the same speed, both felt recoil and actual energy. And indeed, duration and decay rate is an important part of recoil.
Trying to fit all this into a game is tough, but doable. I always hated the vague expanding cross hair some FPS games use to simulate recoil, it does not allow skill to compensate for recoil and does not give you a feeling of recoil or losing control of the weapon.
As for the system I have implemented, now when you fire a weapon there will be recoil upward with a slight random angle to the left or right. The recoil is not a sudden change in position but a smooth movement you can resist by moving the mouse. It has a decay time that is decreased by moving the mouse and increased by having low endurance. The exact amount of recoil is set per weapon as recoil seems to depend as much on weapon design as weapon weight and bullet fired. Recoil is also adjusted by endurance and is slightly randomized for each shot to simulate human inaccuracy and fatigue.
Endurance currently only affects recoil when it drops below 40%, with effects linearly increasing till you hit 0% endurance. At 0% endurance most fully automatic weapons become uncontrollable.
Note there is still a base accuracy for weapons, but that base accuracy is constant for every shot. With the recoil system your weapon will still fire exactly where the crosshairs are pointed, regardless of endurance or other conditions.
June 12th update
I spent a lot of time optimizing the server today. It had some lag spikes that where annoying me. Pooled some memory allocations and changed how I scanned the octtree some, that managed to smooth most of them out.
Did some research and got some hand written asm improvements for zlib compiled in after fighting with some compiler errors. Also added a 'Network Compression Level' setting to the server.cfg, So server owners can choose to trade off bandwidth for CPU.
Overall I think I reduced CPU usage on the server by 80%.
June 11th update
Today I changed spawning so that when you rejoin, you join in the same place where you logged out. Added version guards to the map/player data and added code to save/load parties on server exit. Investigated reported movement behaviour at low FPS and found I need to do some work fixing that soon, but not today. Instead I decided to work on adding a food requirement to the game and adding endurance used for things like jumping and sprinting. And what a system I have come up with!
You have endurance, food and health. Endurance is used for jumping, moving, shooting, etc. The lower your endurance the faster it regenerates. Endurance consumes food when regenerating. Endurance will regenerate slower if you are below 50% food or above 80% food, It will also regenerate slower if you are below 70% health. If endurance falls below 35%, you will move slower and not jump as high.
Food also has a small constant drain, so even idle you eventually need food. If food is above 10%, Your health will regenerate slowly using food. The lower your health the faster it will regenerate, with penalties if food is below 50% or above 80%. If food falls below 10%, Health will be used instead of food for the idle drain and to regenerate endurance. The penalty for having 100% food is only a 20% reduction in endurance/health regeneration, scaling linearly from 0% penalty at 80% food. It is meant to represent overeating and feeling stuffed.
Endurance will also let me add some additional interactions, for example: weapons could use endurance to fire. Pistols would need hardly any while machine guns would require it to control recoil. At low endurance weapon accuracy could drop for weapons with high recoil, This would mean you are most accurate and effective when calm, uninjured and well fed. Damage can also factor in, with blunt damage doing more endurance damage then health damage and piercing damage doing more health damage then endurance damage. This would mean bullets blocked by armor have more of a stunning effect
Summery: Eat when food falls below 50%, Try not to eat past 80% food but its not a big deal if you do. Starving however is bad, very bad, a slow painful death. Get food from interacting ('T' by default) with dead bears.
June 10th update
Today I have decided to try and make more frequent updates to the website detailing progress of the game. So today I decided to try and work on a trailer for the game. Recorded a lot of video. Tried to edit it with windows live movie maker.. Only to find out it greatly degraded the quality.
Then I tried Avidemux, nearly had something but was not all that good. Then I accidentally hit the wrong button and all my work was lost! I had saved the project earlier, but the project file refused to open. I don't think Avidemux is going to do the job. I will abandon the trailer for now and look for someone with experience to make one, video editing is hard work. Took some new screen shots and uploaded them to the website however.
Released: 0.23
0.23 is now released:
- Added compass
- Added radar system
- Added party system
- Added party menu
- Improved terrain generation
- Added X button to top right corner of GUI windows.
- Esc now closes GUI windows, Only opens quit menu when all other GUI windows are closed
- Roughness added to explosive terrain damage.
June 3rd Update
Lead developer here, 10:00pm on my birthday, Still working away on worldcrafter. Improving the terrain generation some today. Next order of business will be to add a compass and radar user interface, then onto a party system. While I will call it 'radar' it will be more like sonar, in that you will see where any sounds are made like gunshots and bullet impacts, thus stealth will still be a tactic.
Released: 0.22
0.22 is now released:
- New sound effects for changing weapon, equipping/removing armor, eating, butchering, skinning, jumping, landing, dying, etc.
- Edit box control now has a background and scrolling effect
- Background added to console for better visibility
- Console now shows old messages and allows scrolling when open
- Log in screen now uses edit box control
- GUI now supports tabbing between controls
- New Tree List GUI control
- New Text Box GUI control
- Crafting menu now uses tree list
- Mouse Scroll wheel now supported
- New weapons: RPD, AK-47, SKS, TRG-42, AWM. Now 14 weapons total
- New ammo: .300 Win Mag, 7.62x39mm. Now 7 types of ammo total
- New armor: Leather boots, Leather Gauntlets, Leather Armor, Leather Helmet, Leggings, Mittens. Now 22 armors total
- New recipes for new items: Now 78 recipes total
- Improved network code
- Improved multithreading code for voxel to vertice conversion
May 30th Update
Another week and another progress update. Got lots of new sound effects for the game. Now actions like butchering, jumping, landing, eating, etc all have sound effects.
Aside from sound effects I have also been working like mad on the GUI, most controls have been rewritten to support tabbing and scroll wheel. The entire GUI should be usable with just the keyboard now. The console is now easier to read as it has a semi transparent background and supports viewing older messages.
Most excitingly I have added a 'Tree List' control that has allowed me to much better sort the crafting menu. I have taken advantage of this by adding new armor, weapons and ammo and recipes to make them. There is now 14 weapons, 22 armors and 78 recipes in the game!
Released: 0.21
0.21 is now released:
- Users now have persistent accounts.
- Announce server provides single sign on. Servers never have access to your password
- PassHash9 algorithm used for securely storing password hashes
- Current health, status effect and all items on a user are saved on logout
- GUI button element now has background and mouse over effect
- GUI scroll bar behaviour improved
- Weapon, armor and ammo inventory menus now display additional info about selected items
- Added 'Grapple pistol' and 'Grapple rifle'
- Player movement now has acceleration/deceleration. Control is lowered in midair.
- Armor now has encumbrance. Wearing more armor makes you run slower.
May 21st Update
Added persistent accounts to servers with single sign on, Now when you log back into a server, you will have the exact same health and inventory as when you left.
GUI has improved some with new button backgrounds, mouse over effects, scroll wheel behaviour improvements and new info being displayed on the weapon, armor and ammo menus.
Now I am working on adding a grapple. Something I have wanted to add for awhile now. I will be reusing the basic gun mechanics, so some interesting things have resulted. Ammo is required to use a grapple. There will be multiple grapple guns, each with a different clip count, fire rate, accuracy, muzzle velocity, etc.
Movement has changed some due to the addition of the grapple and code to support it. You now have 'acceleration' when moving, and less control when in midair then on the ground. Its also harder to climb hills now, with jumping or the grapple needed to climb really steep hills. The grapple will drag you across the ground, but you will go faster if you run with it and even faster if you jump.
While tweaking movement, I realized that it might make an interesting mechanic for armor to affect movement, reducing acceleration to make manoeuvring slower, as well as reducing top speed. This would make heavily armored characters an easier target, giving advantages to wearing lighter armor.
Released: 0.20
0.20 is now released:
- Added armor support
- Dead NPC's can now be skinned for hide
- Greatly improved net code
- Added scroll bar to list boxes
- New status menu
May 12th Update
Armor can now be crafted and has its own menu. Then I ran out of room on the crafting menu for recipes! Now I have to code a scroll bar for the list box control, but I can add tons more recipes!
Speaking of more recipes, Now that there is armor, we need new types of bullets! So I will add JSP (Jacketed soft point), AP (Armor piercing), FMJ (Full metal jacket) and HP (Hollow point) rounds. Read more about ammo here: Ammo Details
The networking code has greatly improved and there should be way less lag now. The new status menu has helped me track down a few networking issues.
Added new 'Download Bandwidth' and 'Upload Bandwidth' entries to Worldcrafter.cfg. It would be best to set these correctly for your connection for best performance. If they are set too high you may experience lag.
Moved the health bar and ammo info to the centre of screen.
May 10th Update
Got some great new features in the works here for 0.20. Namely armor! you will finally be able to fend off bullets and war bears alike with a little more ease. Now I just need to find a good system for the armor. Dwarf fortresses head/upper body/lower body/hands/feet/shield with over/under/armor/coverage for each slot seems the most attractive to me. However I find its permit system that allows multiple items for the same layer to be confusing in practice. As I don't want you to need a calculator and database to figure out what to wear in the morning, I will limit it to 1 item per layer per slot. That is still 20 pieces of clothing/armor plus a shield.
I still must figure out how to apply armor damage resistance in a realistic way. At first it will likely be a simple damage reduction percent. Eventually I would like it to be more realistic where armor resists slashing (knife/sword/claws), piercing (throwing knife, bullets, biting, etc), and blunt damage (hammers, biting, explosions) separately.
Armor would turn piercing and slashing damage into blunt damage that has to then be absorbed by lower layers of armor, padding and clothing. Exceeding the armors piercing or slashing resistances will result in the attacks going down to the next layer as piercing/slashing damage along with blunt damage of any resisted damage.
Networking code is also getting a minor overhaul that should greatly reduce lag along with a new client status window that shows client/server networking stats.
Released: 0.19
0.19 is now released:
- Added vertex buffer memory management
- Server now reconnects to announce server on disconnect
- Dead NPC's can be butchered for meat
- Meat can be eaten to restore health
- Login screen now has background
- New healthbar