GameDev 2019 Week 5: Big Map
Big Map, Auras, Traps03.02.2019 - 17:17
Last week ended with the map editor taking 37 minutes to load a project with a lot of models in it, which is obviously unacceptable, and as mentioned I have a faster way of loading the map, so I updated the loading function and the editor now loads the same project in 40 seconds, which is good enough for the editor at the moment. However, 40 seconds to load a map would be very annoying in the game. Luckily the game uses a different exporter and importer and can load the same map in about 1 second. And I also created a blue spruce and a cactus model.
Today I started by improving the numeric layer feature in the editor. Numeric layers can now be rendered in colors if they dont exceed 16 values, because I only added 16 unique distinguishable colors. And there is now a way to mass place numeric layer values similarly to the mass place models or texture tiles option. Then I used the updated numeric layer features to add a player layer to the map to specify which tiles belong to which player and limited the building to only the players tiles. Finally I added a ui at the top to show the players gold and lives and also added some more gold related things such as towers acutally deducting the gold and entities rewarding gold when killed.
Again some more work on the editor by adding a copy paste feature for texture tiles, because I wanted to highlight waypoints and paths in some way and I didn't want to measure and repeat the same thing for every player so copying and pasting seemed like a good idea. And I also wanted a way to mass place objects only in the non player areas so I gave the mass object placing feature an option to only place models in obstructed tiles. Then I was finally able to create a bigger map and export it to the game and the game still works fine with the new map. Continuing on I worked on some more smaller things for the game, you can now only build in the actual building state and the client does some checking whether a building spot is valid before telling the server. I also fixed a bug in the map water renderer, it was still using the normal shadow map instead of the cascading one, so it now uses the correct shadow map and doesn't show any weird shadow edges in the water anymore. In the evening I tried to play the game in real multiplayer mode with multiple clients instead of the singleplayer emulated server mode. And after a few small fixes it also works fine with multiple clients.
I started on effect blueprints which are effects that a tower can have like spreading an aura to other towers or slowing an entity that it hits. For it I integrated ranges, to this point all towers had a huge range because I never converted from the blueprint range to actual in game units, e.g. a tower had 400 range, but the map in game is only 32 units wide. And in the multiplayer tests yesterday I noticed that you couldn't really tell which player you are, so I changed the multiplayer stats ui to highlight the client player. And I had to update my messenger app so I didn't have that much time today.
Since I was on my laptop to compile the server for the messenger app anyway I decided to build the dedicated game server on linux so I could use it on my server. But I never created linux builds for a couple of libs that the game needs and I dont have the extremely convenient visual feature of project dependencies on linux ( with visual you can say a project depends on another and when compiling visual will automatically rebuild every dependency project )( codeblocks may have something similar to this, but I never looked into it ) so it took over 2 hours to get everything to compile and run... and I hate stuff like this, creating projects, configuring them and trying to get all linker dependencies right is just annoying, boring and very frustrating... Anyway enough complaining, I continued to work on the tower effects by starting to implement the aura effect and created a model for the aura tower.
I finally finished the auras. There are aura sources which spread the aura and every tower in the range of the aura source gets the aura. Both building an aura spreading tower and a normal tower in range of an aura source gives the aura to every tower, if it doesnt have the aura already, auras do not stack by default, I might add stacking ones later, but it might be too strong. The auras also update the towers stats, e.g. a 20% damage aura will boost the damage by 20%. I also added an icon to the tower window when the tower is under the effect of an aura. The only things thats still missing is updating the towers when an aura tower gets deleted, haven't thought of a good way to do this yet. I want to have a monthly release build of the game thats playable by itself to be able to look back at it later on and see how it has changed. So I completed the release configuration of the project, because of visual and the way my libs are set up this was a lot less of a hassle than the linux build and I only had to change a few pathes to files to have everything in a single folder and playable from there, though it aint much of a game yet, more a collection of a few proof of concepts.
Saturday, the day were I should be writing the blogpost, so obviously I was very motivated to work on the game and I added traps, which do not obstruct the tile and are triggered if an entity walks on top of them. To test it I added a flame trap and I wanted to have some kind of flame burst particle effect when it is triggered. So I changed/added a few things in my particle editor to create a flame burst effect, which I could then add into the game. It doesn't have a texture yet and I'm not really an expert in creating good looking particle effects, so its just red quads at the moment. Anyway the concept of traps works, but still needs some polishing. To end the day I made a model for the flame trap.
Just writing this blogpost so far, and tonight is the Super Bowl which ends at about 5 am in Germany ( to all the NFL commissioners who are reading this, please remove the Halftime Show to make it end earlier ^.^ ), so I'm not sure how awake I'm going to be tomorrow ;)
by Christian - 03.02.2019 - 17:17