In this post I briefly described how I handle saving the game state in a JSON file. One thing that I knew I had to address is migration of game save files from one version of the game to the next. During alpha and beta it may not be as important to be forward compatible, but when the game is released I’ll have to accommodate for this. Otherwise if any of the models in the game change, an old game save file may load in an inconsistent state, or worse, fail to load altogether.
I put together a simple migration mechanism that allows me to directly manipulate the JSON before it’s deserialized into the game entities/objects. This is not too dissimilar to many libraries used for migrating databases:
When I first started this blog my plan was to update it at least once a week. And I managed to do that for about a year, longer than I have ever stuck to blogging regularly. There are a couple of things that have changed in the recent months which have changed that:
Earlier this year I began streaming some of my development on twitch as an experiment and really wanting to start building a community. It has been slow going and I’m still trying to understand how it works and how to increase viewership (probably worth another post). Nevertheless it feels the time put into streaming ultimately gets more eyes on the game than a blog like this would do in an of itself.
Why People Come Here
I have been watching the traffic to this site, and the majority is either from Google search for something technical, or via something I have posted on reddit which again would be technical or otherwise useful to a game developer audience. My most successful post to date is Screen Space Gradient Shader with Dithering in Unity which comes up on the first page of Google results for Gradient Shader and gets many hits daily. What I’m getting at is that technical and tutorial style posts generate far more traffic than “hey here is an update of the game” type post at least while there isn’t much of a community around the game. Of course I doubt that kind of traffic would ever convert meaningfully for me however I still much prefer spending time on an article that’s going to help someone out regardless, than something that never gets looked at.
Overall it’s apparent that the Mailing List, Twitch channel, and Discord are better channels for keeping people up to date and I’ll be focusing on those more. I’ll reserve blog posts for more elaborate technical or otherwise informative posts and so they’re going to be less frequent. Of course I’ll still be posting any major announcements here too.
This blog has a been a little quiet as of late but progress on Startup Freak continues. I have been streaming a little on twitch in the mean time though so far haven’t seen a lot of traction there in terms of viewership.
But I digress. My intention with this update is to announce that I have begun releasing weekly updates of Startup Freak as a Beta of sorts. I’m not advertising this widely as I want to get a bit more of the artwork done first, but I have been noticing more people ask me on twitch and elsewhere if they can play the game, and I want to stop making excuses not to show the game. That, and I do think putting it out there sooner is necessary if I’m ever going to release this.
You can download the betas here.
At this point the game is essentially feature-complete. I’m now focusing my efforts on:
- Balancing the game
- Adding content and art
- In-game tutorial
Update: It has been brought to my attention that what I have implemented below is essentially the Marching Squares algorithm. Still it might be useful for those who don’t want to deal with too much theory.
One of the core systems in Startup Freak is feature building. The player is presented with a grid which I call “Market Space”. At any given time only some parts of the market is visible and known to player, and this is the area he/she can build features on. In order to build more features the player needs to perform market research. Visually it’s not too dissimilar to an RTS map, hence the title “fog of war”.
Initially this visible area was simply one circle that increased in radius. Recently I made a change so that the player could explicitly pick an area they want to research. As such, the fog of war could have a lot more variations and non-symmetric shapes. I wanted to have a smooth transition into the dark areas, but this turned out to be non-trivial:
On Friday I came across an interesting art related problem with a really simple technical solution that I think is worth sharing. Let’s talk gradients:
My very first code commit for Startup Freak was 12th of January 2016. Four days short of a year have passed for a project that I first wanted to finish in 8 months. That was ambitious to be sure but I still have the end in sight. The journey so far has been both exciting and draining. As I have gotten older though, I have come to enjoy finishing things. Somehow the drag of working on the same bits of code day after day and just chipping away at a larger project strangely becomes its own reward.
Anyway enough sappy stuff. Holiday season has been quite busy with family commitments but here are a few updates:
I have completed an overhaul pass of the UI and ended up sticking with a darker theme to complement the very colorful game graphics. I also added a number of icons on the buttons and tabs myself and I’m for the most part happy with those. Polishing is always possible but at this point given my aim to converge and finish the game, this will have to do. Here are a few screenshots:
Of course some of the art like the employee avatars are still placeholders as and I’ll be outsourcing those. Overall I’m quite happy with how this turned out!
Streaming has been going well. It’s been a blast pulling out some hardware like my AT4040 microphone and Zoom H4n that had been collecting dust for a long time and putting them to good use. I have streamed and handful of times now and while the viewership is tiny, I have found that I’m actually more disciplined while streaming and productivity is good because I’m not inclined to have frequent breaks or do random browsing. I’m really not sure what the distraction would be like if and when there is a larger audience but I’ll take it as it comes. At this point I plan to twitch twice a week:
Last year I got the help Rob Hayes to create the art work for buildings and offices. I’m going to use those works to create the set of offices that you can rent in the game. The office capacities range from 3 to 20 (not sure any more than that would make sense) and while the tile-set is intentionally quite simplistic, I still hope to have a reasonable amount of variety in the looks of each. At this point I’m aiming for 5 or so offices, and once the game is a little more baked and play-tested, I’ll add another 4-5.
I’m clearly running out of decent post titles. I figure it’s still better than Development Update #12038. Anyway things have slowed down a little as, well, life demands it. Nevertheless progress is being made. I’m also travelling over the Christmas period so updates may be more patchy but hopefully I’ll have some quiet time in January to really get rolling again. Here is what I have been up to:
Here is a quick update of what’s happening with startup freak:
- Rob completed the first batch of art for the game and I’m stoked about it. It contains most of the environmental items such as city backdrops, office tile sets, clouds, skies and trees.
- Most of the work on my end has been addition of code to support the new art. This includes:
- support for texture atlases for arbitrary sprites in the level.
- Automatic switching between High Def and Standard Def versions of textures depending on resolution.
- A new shader for transitioning textures between seasons (I previously did color tint transitions, but for better results for things like trees I now use separate textures for each season).
- Camera filter layers to give each season a better look and feel.
- A new shader for internal office lights.
- Some work around better “pixel perfect” rendering.
- I have also started more seriously on the music for the game, starting with purchasing a relatively cheap Midi controller. It’s a fun change from coding, that’s for sure. I’ll write up a post about my tooling and process at some point.
Given it’s coming up to a year since I started this game, my biggest goal is to get the game into a beta state so that I can get some more feedback. There is still quite a bit to do though. Here is what I’m focusing on:
- Add one or two win conditions to the game. This kind of mentally closes for me the idea that the game can be played and finished and is…well… a game.
- The UI definitely needs an overhaul. Given my budget constraints around art, I’m going to attempt to do this myself by looking up various templates online.
- Add in a bunch of content (offices, items, servers, etc) and re-balance until the game is playable again.
- Work with Rob on the rest of the art. Still debating how much of it needs to be done before a Beta. Certainly before I can start getting some screenshots out I want to finish more of it. The remaining work includes:
- Avatars for employees and investors, both the animated characters and UI icons
- All the store items (furniture and so on)
- More graphic heavy parts of the UI like icons.
The work continues 🙂
I have been playing with image effects for the first time in Unity and feeling a bit like a kid in a toy store, trying to hold myself back from throwing in all sorts of crazy effects. The first thing I’m using it for is to blur out and darken the background when a UI panel is being displayed. The blurring part is easy: it’s already one of Unity’s built-in effects. But there is nothing out of the box that darkens the screen. Given this is probably the simplest possible image effect you can do, it was a great candidate for learning: