Sign-up for Email Updates:

Help Survive Development:

Development Blog
May 12, 2016 By: David Tse

Pre-Alpha 5.1 is now out to everyone who has preordered! I did a bunch of improvements in 5.1 so now it’s going live to everyone who has the game without needing to opt in. Below are the full patch notes.

Screenshot from Pre-Alpha 5.1.
Screenshot from Pre-Alpha 5.1

  • Significantly reduced stuttering and framerate drops when streaming in new building and road chunks. It’s far from where I would like it to be, but it’s actually playable now compared to 5.0
  • Many general optimizations and performance improvements. The fps on my machine went from 40-45 to 90-115. It’s still not that great, but is much better now.
  • Implemented a fancy zone profiler that makes it much easier to track down performance issues and lag spikes.
  • Improved streaming performance by reducing lock contention
  • Fixed a bug where terrain physics would only be generated around the roads
  • Major optimization to shadow rendering. Only renders one of the 4 cascades per frame effectively speeding up shadow rendering by 4. Shadows are a little laggy now, but you can’t really see it.
  • Fixed a bug that would cause the game to crash if you tried to resize the window by temporarily disabling text resizing. So if you resize the window the text will be too big or too small until you restart the game.
  • The game will now check your display size and make sure to never create a window that’s larger than it. If the game wants to make a window the same size as your desktop resolution or larger it will now maximize the window for you.
  • Overlapping houses are now culled during generation time. So there should not be any houses that overlap with each other or the roads.
Right now I’m working on a video showing everything that’s changed since Pre-Alpha 4 and that should be out soon. This build still has some big issues, but I think they’re manageable right now so I’m going to start working on the loot and inventory system as soon as the video is finished.

If you have any issues with this current build please let me know. I’m really excited to start releasing builds again and can’t wait until we can gather loot and actually start surviving for real! Pre-Alpha 6 should not be too far away and my focus now is on doing much smaller faster updates so stay tuned to the Development Trello and my Twitter for the latest info on what’s being worked on!

May 6, 2016 By: David Tse

Pre-Alpha 5 is finally out! You can download it now if you’ve pre-ordered. It has a lot of issues with the biggest problem being that it has terrible performance. Because of that I decided to only release it as an opt in beta on steam. So if you want to play you need to opt-in. It has some serious problems that I know about, but I’m sure it has many more that I don’t so if you find ANY issues or have feedback/suggestions please let me know.

Normally I would do a detailed changelist of every little thing that’s changed since the last update, but it’s been so long that it’s impossible for me to remember everything and even if I could it would fill multiple pages of this blog. So here is a high level list of stuff that’s changed since Pre-Alpha 4.

Full Changelist

  • City Generation
  • Neighborhood Generation
  • Road Generation
  • House Generation
  • World streaming of all the generated data
  • New world shift system. Old system shifted you one chunk at a time so it was possible to outrun the shifting. New system shifts you back to the origin no matter how far you’ve traveled so it’s impossible to break it.
  • New and improved terrain system that has faster streaming, better world shifting, higher detail, further view distance, better performance, and less hitching while streaming.
  • New view distance is about 100,000 meters while in Pre-Alpha 4 it was like 12,000 meters
  • New depth buffer to handle huge view distances without z fighting
  • Custom asset pipeline with custom binary formats and automatic baking tool. This significantly improves loading times. They went from 121 seconds in Pre-Alpha 4 to 5.2 seconds in Pre-Alpha 5.
  • Basic LOD system to speed up house rendering
  • So many improvements and fixes that I don’t remember

how to opt in.
How to opt into the beta.



Ok so for those of you who have been following the development lately already know most of this stuff was in the new build so now I’m gonna talk about what I’ve been working on since the last blog post update.

So since the last update I’ve made some serious progress on the house generation and spent a little time cleaning stuff up and fixing things for the initial release.

Room connection

The first thing I did was make it so there is a door connecting every single room in the house so there are no rooms that are inaccessible. This is done by going through all the wall voxels and making a list of connecting rooms. Then if the wall is large enough we try to make a door between them. This system still need some improvements mainly making it so doors and windows don’t spawn too close to the edge of walls.

This system is also used to place windows going outside. We just treat the outside voxels as one room and if we want to make a connection between a room and the outside we can also place windows with the doors.

outside.
Screenshot of the outside of a new house with some dead zombies and floating flashlight.

Mesh Placement and Fitting

So now that we have voxel sized holes in between rooms the next step is to add in the window and door meshes. Placing them is easy enough, but after that we have to get the actual wall mesh to squeeze in to conform perfectly to the mesh.

There is not much to talk about how this was done. It’s just a matter of tweaking the mesh generation to increase and decrease the voxel sizes to fit the window/door meshes.

inside.
Screenshot of the inside with new materials and mesh placement.

After the doors and windows were In I also added a trimming mesh that lines the floor. That was relatively straight forward too. Just extend a base trim mesh along all the wall voxels on the sides that touch the inside. So now all the walls have trimming lining them. I also did a flat trimming mesh on the edges of the roof. This will be replaced with a more detailed mesh in the future.

Door Physics

So once the door mesh was in the game I needed to give it a physics constraint connecting the hinges to the door frame. This way to can open it with the new interaction system or shooting it with a gun. This was surprisingly annoying to implement and get working with random house rotation. Those PhysX joints just don’t make any sense sometimes.

Also speaking of the interaction system, I implemented one. Not much more to talk about that so it doesn’t deserve its own section, but you can press E on doors to open them now. This system will be used for picking up loot and interacting with other stuff in the world.

blue inside.
Another screenshot of the inside of a house.

I also have the rest of the house physics which is just about giving the mesh to PhysX. I still don’t know if it’s more efficient to make it out of box shapes or if PhysX triangle meshes are just as fast if they have the same number of tris. So if any of you know about this please let me know. The windows don’t have any physics and don’t react to being shot by anything, which sucks but it’s not my priority right now.

Content Integration Pipeline Improvements

This was a larger time sink than I expected, but this will make getting new content into the game significantly easier. I mentioned in the changelist that I started using new binary asset formats for everything in the game to improve load times. To go with this I just implemented an auto asset builder that scans all the files and compiles everything that’s changed.

So this means I can change a texture or something, hit a button and then see the changes compiled and in-game. This will make adding assets to the game much easier and faster. I also completely restructured the content folder which took way too much time, but you can admire my work by looking in the files after you download the game.

inside.
Screenshot of the inside with parallax corrected cube maps, not in the current build but will be in the future.

The main reason this took too much time is the links to all these assets in the game were broken and I had to go and fix them. I have an idea for a new system that will load all the assets into a large asset database then if we want to load a texture or something in-game you just specify the asset name like Door_001 instead of a long ass file path. This will mean asset links only break when the actual asset name changes and I can move the folders around all I want. Will add a tiny amount of overhead to the loading, but it’s worth it.

I also did a simple material baker that searches all the files in a directory and if it fines files that make up a full material like “BaseColor”, “Normals”, “Roughness” it will gather them all up best it can and bake them into a custom binary material file. This alone will really speed up asset integration.



On top of all that I also did a ton of small fixes and improvements to get the release out. It’s exciting to see you guys playing the game again and I can’t wait to start pushing out more updates. My focus right now is getting the performance to an acceptable level then completely focus on adding loot and the inventory system which is where stuff really starts to get crazy.

Again if you have ANY issues or suggestions/feedback please go post in the forums. I can’t wait to see you guy’s in-game!

March 24, 2016 By: David Tse

I recently started using Trello to manage development and I’m really loving it! Now that I’ve got it all set up and have been using it for a little while I’ve decided to open it up to you guys! Now you can get the most real time view of development possible short of a 24/7 live stream.

You can use the Trello board to see upcoming features, what’s left to be done for the current update, exactly what me and Erik(artist) are currently working on, bugs, and everything that’s been finished for this update.

Screenshot of the Trello Survive development page.
Screenshot of the current Survive development Trello board.

You can also use Trello to vote on the issues and features you think are most important! This way we know what you guys want us to prioritize when choosing what to work on next. If you want to vote you need to register an account. Luckily if you use my link to sign up and I get a free month of Trello gold which saves me a bit of money. So if you are going to sign up please use this link: https://trello.com/david_tse/recommend

Survive Development Board: trello.com/survive-development

Feel free to go check out the board and vote on some issues! There’s not a ton of stuff in there just yet, but as development goes on it will continue to grow. Once the next update releases you can submit the glorious bugs to me and I’ll add them to the list. Then you all can go vote on them to prioritize what gets fixed first.

I'm really excited to open up more of the development to you guys and I can't wait to start getting more of your feedback. Let me know what you think about it and if you have any suggestions!

Previous Page