Sign-up for Email Updates:

Help Survive Development:

Development Blog
May 19, 2015 By: David Tse

This week I started to tweet everything I worked on/finished during the day every night before I went to sleep. You guys seem to like it so I'm definitely going to keep doing these daily updates. If your interested you should go follow me on Twitter!

On top of those daily updates there are also going to be weekly blog posts describing everything I got done during the week in more detail. So this week I primarily worked on the roads in Survive. I got a lot done in both the high level generation of road networks and the actual rendering of them in the world.



World Generation

The first work I did this week was in the offline world generation that happens every time you create a new game/world. First I need to give a little more detail on how the world generation will work. Everything this offline generation step outputs is sort of like the shell of the world. It exports high level low resolution terrain heights that primarily describe where land/water is and the location of mountain ranges.

World generation places all the highways, street roads, and interstates in the world. Once the roads are created it places all the buildings around them. When the generation places something it just adds a position, orientation, bounds, and type to the world gen data. Then the game loads this stuff at run time, creates the road meshes, creates the actual buildings, and places the loot/other objects.

Road Networks
Shows interstates loaded into the world and fit to the terrain. Cities are generated where these roads meet. Terrain height data is just some test mountain stuff so please ignore it. Also ignore noise in terrain color.

Another thing I did this week was change the way the generation data is saved out so everything this offline step creates is split into a regular grid of chunks. These chunks are going to be loaded as they are needed. So it will load in only the chunks near you and then add all of their data to the quad tree hierarchical representation of the world. This new hierarchical world system was also done this week so everything in the world can be very efficiently culled. When moving through the world these chunks are loaded and data outside of the world are removed. This is only possible because all of this chunk data is saved in a new custom stream friendly data format.

In the actual generation of the data I did some work on generating the actual city street layouts and handling road intersections. Its not done yet, but is starting to get there. The actual output of this source world generation data is pretty much working so all of the world gen focus will be on the actual generation algorithms. So next week in world generation I will mostly be working more on the city layout gen algorithms and pruning/tweaking of roads where they intersect.

World Loading

Now for the other side of the generation, the actual loading and usage of the world gen data. This week I spent a little less time here compared to the generation, but did get some cool stuff done. So first I actually loaded the world chunks into the world. I have not implemented the streaming stuff I talked about earlier so all the data in the ENTIRE world is currently being loaded into the game. On a side note the world is about the size of earth 25,000 x 25,000km. It could technically be much larger, but in reality it doesn't need too.

No streaming is not a huge issue at the moment because the data is not insanely dense yet, but once all the city roads and buildings are in those chunks this will not be possible hence the need for the chunk system in the first place. I will hopefully implement this chunk streaming stuff next week if I get enough of the city gen stuff done to were I start to need it, but implementing it should only take a few hours now that the data format is tested and working perfectly.

Road Mesh
This old screenshot has alignment issues, but it shows a test mesh with sidewalk being extended along road spline.

Once the chunk data was loaded I started working on creating the actual road meshes, because the road data that's actually saved into the chunks is just a list of road spline segments. This works by extending an arbitrary road mesh along these road segments. So now literally any mesh can be placed along the road and then welded at the seams. This is much more useful, and more difficult, than just creating a quad for each segment of road.

With this system we can extend things like roads with an attached sidewalk mesh(example shown in screenshot) or even telephone poles could be done this way. I'm not sure if telephone poles will actually be done this way because I haven't tested it, but sidewalks definitely will. I also did some stuff with texture coordinates so I can tile textures along the entire road spline in world space. This way the road or sidewalk textures will have proper scaling along the entire road and so vertex welding where two road segments meet will work correctly.



This is the first of many weekly updates and I hope you guys enjoyed it. I also hope you could get some insight into development and what I'm currently working on. I almost forgot to mention Pre-Alpha 5 and when you guys will get to play with all of these changes. I don't have a guaranteed timeline, but it will be released when the road stuff is finished(its really close now) and the buildings are in the game. That's looking something like 2-3 weeks from now, hopefully.

Please let me know what you think about the first weekly update. Tell me if you want more technical details, less technical details, or if you want to know anything else about what I'm doing. That's it for this week and be sure to go follow me on Twitter for DAILY updates on the development of Survive!

January 8, 2015 By: David Tse

I mentioned some of this in the forums, but here is a quick update on what's going on with Survive.

The Pre-Alpha 5 update that was planned for the beginning of this month has obviously not come out yet and I've decided to push it to the end of this month. As you may know this update is all about building generation. I've actually decided to move slightly away from working on the building generation itself to working on the actual world generation!

Over this last week I have decided to make some changes to the initial world generation plan. Originally the plan was to have a literally unlimited sized world. While that sounds cool it doesn't actually add anything to the gameplay and actually conflicts with some of the other planned features like dynamic geography based weather and temperature.

So what I'm doing now is creating an actual earth sized map by generating tectonic plates and simulating their movement along with heat, moisture, and temperature simulations to generate the actual land layout and biomes of the world. So coastal areas with naturally be tropical and it will get colder the further away from the equator you go. This is even better than the original unlimited plan because you will actually be able to circle the globe if you happen to find a jumbo jet with enough fuel. The world can be any size because the engine was already designed for unlimited size. So scaling down to 510.1 million km²(size of earth) from unlimited is no problem.

If you where previously a Dead Linger fan and want to read my thoughts on their changes you can read my post in this thread: Here

This continent generation system is really exciting and will allow you to find a map of the world in the game and even be able to choose an exact location on the exact continent you want to play on when making a new game if you want to.

Things are getting really exciting now and we are only a few weeks away from having full world generation with continents and city/building placement!

December 8, 2014 By: David Tse

Everyone who already bought the game can now upgrade to any Survive reward tier they want! You can simply go to your My Account page on the forums and click the upgrade button!

From there you can choose what tier you want to be upgraded to. You will only have to pay the difference between the two tiers to get the upgrade. So if you where at the $40 start in your own house tier and wanted to upgrade to the $50 Closed Multiplayer Beta Access tier you would only pay $10.

Body Tint Variations
Random screenshot of Terminator 2 Zombies.

The engine and the editor are still in a state of deep reconstruction so there are no screenshots of the editor just yet, but there will be more info soon. Thank you all for supporting the game and getting the new reward tiers it really helps. I'm so excited to be getting back into %100 focus on the game after working on all the website and kickstarter stuff, buildings are going to be in Survive very soon!

November 30, 2014 By: David Tse

Hello Everyone, 

So first off I want to say thank you to all the backers and everyone else who so passionately supported the campaign. You guys are really awesome and I love you!

I meant to stop the Kickstarter a few weeks ago after it was clear the goal was not going to be reached, but I had to finish the new custom crowd funding page and the back-end required to handle the different rewards. I will be doing a full postmortem on what went wrong with the Kickstarter itself soon, but right now I'm just going to focus on the future. 

Don't worry, development is not going to change at all. For those of you who have been following development since before the Kickstarter, things will be getting back to normal with an update every month or so. If you found the game because of the Kickstarter then welcome! If you haven't already you should head over to the Forums and join the community

Like i mentioned before, there is a brand spanking new crowd funding/preorder/store page here: subsurfacegames.com/survive. This new page has most of the rewards that where on the Kickstarter, but with some revised price points. Many tiers are cheaper than they were before. Most notably the "start in your own house" tier and the "closed multiplayer beta access" tier are a full $10 cheaper! If you get any of the rewards on the new page you will be able to immediately download the game via steam key or direct download! You could be playing the game in less than 30 minutes depending on your internet speed! I also added some more details to all the rewards so you should go check them out

While getting the full $60,00 goal would have been nice that full amount is not really necessary right now. As I said before, that amount was for the bare minimum art for the entire game. If most of the people who pledged on the Kickstarter go to the new page and get one of the rewards then there will be more than enough money to cover the basic world generation up to the steam release on early access.

Atlas

As for the current state of the game I have not done much more work on the actual building generation since the last video for two reasons. The first reason was I had to drop everything and focus on finishing the new crowd funding page before the Kickstarter ended.

The second and much more time consuming reason is that I spent a large amount of time working on the game editor which is called Atlas. The perfect name considering the engine is the Titan Engine and Atlas is the Titan of astronomy and navigation. I've been putting Atlas off for a long time, but now that i'm working on building generation it's become a necessity. You might be wondering why I would even need Atlas considering the game is procedurally generated, and you would be right to an extent. 

While the world and the layout of the buildings are generated the things inside them can't be fully generated. By things inside the building I mean book shelves, end tables, sinks, cabinets, desks, tv's, ect. All of these things must first be created by an artist and then to actually get them usable for the generation system a few things need to be done. lights need to be added in the correct places, scripts need to be added for things like turning water faucets on and off, volumes need to be placed to describe where and what kind of loot can be spawned on/in an object like a cabinet, and certain markers need to be placed to determine how the generator should place/orientate these objects in the building. All of that stuff needs to be done in an editor. What this means is Atlas is not a traditional map editor like the editors from other engines(Unity, UE4's editor, Valve's Hammer, ect.). Atlas is only meant to create these self contained entities which are then fed to the generation system, there is no overall world editor. Atlas will also have a few sub editors like a material editor, script editor, and data manager to further speed up development.

Unfortunately I can't show you a screenshot of Atlas right now because before I started working on the website stuff I was in the middle of restructuring a part of the engine. Which means Atlas and the engine are currently broken and won't run. Now that I can focus all of my time on development screenshots, videos, and more info on Atlas and the world gen will be coming soon .

If any of you still have questions that I didn't answer here please feel free to leave a comment. 

David

November 9, 2014 By: David Tse By: David Tse

I finally started working on building generation! Check out the Kickstarter update and video where I talk about the progress: Kickstarter Post

World Gen wip 1

In the coming days I'll be posting more updates and videos about the building mesh generation!

Previous Page