2
0 Comments

Moving from enterprise software to video game

I am developing a video game for the first time ( Outer Space Shack : a space base builder set in current era ). As a developer with experience in the enterprise space, this is certainly a different adventure.

Development is mostly the same. I moved from Java to C#, not a big deal. And the way you code events in Unity is quite similar from other GUI frameworks I have used (javaFx, Swing). And the way to organize properly and refactor code in video-games is very similar to other areas.

I find a lot of similarities on the data to manage in a management game compared with enterprise software.

There are a few specifics though on the code side:

  • some logic to code animations (based on delta time on each frame update, and some features like "Lerp" providing smooth camera moving)
  • you use quite a lot your geometry skills
  • you store data in memory / on disk and cannot count on database accesses and SQL to organize your data, so you have to rely, typically, on hash-maps.
  • your code has to be very fast (you need to execute many routines every frame). So your own code becomes, much more than enterprise software, the performance bottleneck. So some things I was used to doing in enterprise software (like file logging, which is Ok as much faster than database access) do not really work in a video game.

The big difference I found is that a video game is a mix of code and art. According to my first experience, in term of time, the split is around 70% coding and 30% art. I am not sure how the ratio will evolve as time progresses.

Art includes 2D assets, 3D assets, animations and music. As a developer, you may have varying levels of skills in art, and so, in any video-game projet, you will need a plan about which art you build yourself, use free assets (there is quite a lot), buy or outsource. One good surprise I had is that is is quite easy, investing, say, 10 to 20 hours to learn, to model 3D in Blender, at least for buildings and mechanical items (humans and animals may be harder). In the screenshots you see on the project subreddit, I draw my own 3D and put free textures on top of it. I think it looks OK. And so, my current plan is to build most of the 3D myself, and outsource / buy assets for human 3D models and music.

Another skill you need is story building, and I am not sure yet if it is just a question of spending time on it, or specific skills have to be learned.

I also need online marketing skills to make the games known, and organize events around it (Kickstarter...). I find the marketing easier than on my previous project (an open-source programming framework), most people have a real enthusiasm for video-games.

Overall, it is a great adventure, and if feel you need some fresh air after feeling stuck in the enterprise software space, I would recommend it. I certainly think that the experience of managing complexity in enterprise software gives you a great head start in video-games.

If you want to follow the project, the best is to subscribe to the newsletter. You are also welcome on the subreddit.

on March 13, 2021