Jan Zeleny's Development blog
13
2012
Upgrade system & Assets
I almost finished upgrade system for buildings and technologies. I also balance rules for first epocha.
This will provide posibility to review the game from horizontal slice and one of many conditions to achieve alpha state.
I've also added posibility to have one vagon or locomotive from more parts (tenders, articulated locomotives etc). As time progressed, I made more assets. Last of them is here (Mallard).
- The whole locomotive is white, because of new feature able to colorize trains and buildings by player color.
27
2012
Making of assets
I have recently discovered, that this game needs quite a huge pile of game assets (models, textures, sounds, etc etc).
It is not easy to create them or gather them by another way so first I decided to learn how to use 3D modeling softwares and how to create and texturize my models. I am still looking for some outsorced assets.
I also hired my girlfriend, which is quite talented graphic artist:)
By design, I will need around 150 individual models from 7 different eras.
First model created from scratch was one old farm house inspired by "Dlaškův statek" (real historical building here in my country). You can see result here:
27
2011
Changing seasons and optimization
To improve the impression of playing the same map for a long time, I implemented the runtime changing seasons technique. Now there can be different light, fog and vegetation color for every year season, leaves fall off in autumn,
snow descends into the lowlands in the winter, grass grow in spring etc.
I also did a lot of optimizations for vegetation, reflections in the water, and many others so the framerate is almost doubled. Therefore I also enlarged map to have 512*512 tiles.
19
2011
Far ambient
I got rid of impostoring optimization and instead of it, I made a new optimization for drawing objects in a distance.
I call it "far ambient" and the principle is quite simple: Every object has its own low-poly approximation and when some
chunk of a map has been changed, the engine bakes all geometry and textures used in current map chunk to one huge mesh.
This takes some time (~0.1s) but It needs to be done only when some object has been added or deleted (when constructing, or using dynamite).
In ordinary frame, all far ambient objects from map chunk can be drawn by one render call! It saves the video memory used for impostors
and the most important thing: It saves the render time.
When the camera goes near the object, it is smoothly transformed to high-poly model by screen space noise thresholds.
You can see result here:
16
2011
Few updates
In last two months I did only few changes to engine and I've been working on gui migration to new API, cleaning of code, fixing some bugs. Now the development should go better with all of these changes.
You can see list with some of them here:
- Code polishing, few bugs fixed
- New gui system (without graphics yet)
- Better track laying
- New sea shader (improved normal map, reflection, sea shore waves)
- New grass shader able to cut grass on rocks, lower grass under tracks or buildings.
- Flowers where local humidity is high enough
2
2011
Development news
The development of multiplayer is not going very well, because of huge data that needs to be transported when player logs in (whole map with all trains, buildings statuses etc.) One of possible solutions is to disallow player to connect when game already started, but this is not what I want. I'd like to create server and let players connect run time.
I am also working on new gui system (not gui graphics yet). It should be more flexible and better designed for future updates. This task is almost done, now I am rewriting old functionality
into this gui system.
1
2011
Game rules improvement and plan for next week
I finally wrote some design document for this game and it forced me to make some decisions. One of them was industry system and benefits from satisfying some of market demands. I will not reveal what kinds of industry will be in Mashinky, but player will get different benefits from different production buildings and there will be around 20 different buildings/industries in 7 eras. I have already implemented all of these buildings and polishing rules (there are only placeholder models for all of these buildings, so I'd rather not take any screen-shots from this version :-) ).
Now I am trying to implement multiplayer via TCP/IP, so it will be possible to play via LAN or internet.
Players should have choice to cooperate or compete with each other.
13
2011
Track smoothing and First train station visualization
I would like to create game that will not only be strategy, but it should also be a very simple simulator where the player will be able to drive his train. This point of view changes the desired qualities of close look on building, trains and track where everything has to be more detailed.
The major problem for doing this was the shape of tracks. It was not smoothed in heights, so when the train changed slope, it was like a train accident. Now the tracks are finally smoothed and it is less annoying.
I am also thinking about train stations layout, because tracks are (due to tiles size) quite far from each other. Probably there will be covered platforms
and player will be able to build non-track tiles connected to the station like station building, warehouse etc. I will have to solve if the first train set will be American or European.
13
2011
Sea shader
It is more complicated to create a water surface in engine for Mashinky than in Transport tycoon. First implementation was back in university,
where I had sophisticated drainage system capable of creating rivers, lakes etc.
This system was great, but it had few disadvantages:
It took almost 1 second to rebuild drainage system after every change of map and It also couldn't reflect surrounding world due to many different lake heights.
I had to abandon this way and try to do it better designed for today's hardware.
Second try to implement sea surface was much better, because the game has only one level of water and it doesn't need to care while changing the terrain. The system for new water is only one huge quad across the whole map with following properties:
- Shader optimized for PS2.0
- It can render waves across the sea with small waves at sea shore and foam
- You can change terrain independently in real-time and the waves will adapt on new shore shape
- Capability to reflect terrain and objects like bridges above the sea gulf.
- It also has interesting visual qualities above very shallow lagoon
3
2011
New trees
I've decided to switch from generated trees to pre-modeled versions. Now the game engine uses 3 new trees (acacia tortilis, acer platanoides and fagus grandiflora) from very talented graphic artist Jan Marvanek.
Also the grass has been changed and all vegetation in game engine is now slightly animated in breeze. You can see
new HD screen-shots below:
25
2011
Winter trees
All trees in this engine have now two versions: summer and winter. I don't have seasons in my engine yet, but there is a snow fields, when you travel high in mountain.
It is much more realistic when these snow areas are covered by winter-looking trees, so when tree should grow high enough, engine will use winter texture.
28
2010
Speedup + Highlighting
In last few days I've tried to speedup starting of the game. This is improvement especially for this state of development (I need to run the game for few times per minute, so every second counts).
- Precompile of shaders
- Render object streaming when they are needed
- Track lay highlighting
Track lay highlighting is new feature that helps you to see what you are building and if it is possible. Here you can see one
screen-shot from construction mode:

22
2010
Save/Load/New game
Save and load of whole map with trees, trains, stops, buildings status, etc. has been completed. It has advantage for development, because now I can create many different maps for testing different situations and load which one do I want.
I've added "New game" option so I don't need to restart application to create new map.
There is also new camera for construction mode. Now it is simpler to lay track or manage terrain.
22
2010
Development progress
The development of this game is quite slow at this time. I have full-time job in another game development and I can not spend a lot of time on my own project, but I've developed few things recently and here is the list of main improvements:
- Grass has been updated with new color scheme
- Camera can now be s