The past months have been a really wonderful experience, going independant has allowed me to have the highest level of professional satisfaction of my entire career. However, over the past month my productivity has slid and I’ve only been getting about 30 hours a week of good programming in. Also a lot of of product management and other work tasks (this blog for instance) has been getting neglected. So I’m clearing my schedule of as much as possible so I can focus on getting back to development and get the game clipping along.
The game itself? I’m still neck deep in systems development, since a large part of the gameplay is data driven a lot of work needs to be done to ensure that gameplay systems have good lines of communication amongst themselves. Hopefully this will pay of dividends down the road since it’ll greatly simplify the amount of programming later in the game’s development.
Also I’ve been working to try and mitigate potential porting and performance issues now as opposed to handling them later. For example, making sure performance is as good as possible while having things like input and text data not be platform specific so it should be easy to swap out when we decide to port the game to other systems. File size might be an issue though since the game is going to be media heavy, but it’s still early days so we’ll see how this all goes down when it’s time for release.
Work Life Balance
This is one of those subjects that comes up all the time in game development. Videogame are incredibly complicated and the tools we use for making them still relatively primitive (Industry has only been around for 40 years folks) so there’s lots of reinventing the wheel even when using something like Unity or Unreal. It’s easy to have videogame development escape from you and become a mess of complexity that takes a crazy heroic effort to keep under control. This is where the industry’s infamously long hours come from. I’ve been stuck in development hell before (Where a project appears to never advance due to a combination of poor implementation and constantly changing project focus) and I was always aware that largely this was caused by a combination of poor project management (not much you can do about that one) and poor implementation on my part (much easier to fix). Since this is my first game as an independant I was determined to get the mix right and prevent myself from burning out or rushing development only to wind up with headaches down the road.
Well…I certainly succeeded in this (apparently) but…I also way over-corrected and I’m just not getting enough work done. Too much relaxing and planning and not enough work happening. Which can be a nice position to be in, up to a point but the game’s suffering because development is probably about a month behind at this point based on my initial schedule. Yes, stop the presses: “videogames’ development behind schedule!”. So I’m refocusing on more work and less relaxation. It’s been a great summer, lots of meeting with friends and community festivals but now it’s nose to the grindstone time. I’m going to avoid the kind of hours that would result in burnout, but I want to spend as much of the day being productive as possible. This can mean switching from programming to product management to research to blog writing. Just keeping myself mentally rested but focused and actively working on the game.
The Game! Developing Systems – “Future Proof” Style Programming
I had always intended to try and port this game to as many languages and platforms as possible. One of the earliest bits of advice I got regarding this was to use Unity, yes not exactly a revelation. However, I had been seriously considering using GameMaker Studio (GMS) (Awesome software by the way, lots of fantastic games have been made with it) since I had so much enjoyed using the software in the past for making some quick game tests, however what I was hearing was that GMS does have an issue with porting from platform to platform. So once we had the PC version of the game done…getting it onto PS4 or Smartphones would be a real challenge. Actually this issue was brought up recently when Heart Machine (Development Lead on Hyper Light Drifter) announced that they had so much difficulty with their Vita and Wii U ports of the title they were going to have to cancel them…after months of pretty exhausting development. Now, there’s no way we’re going to avoid all pitfalls when it comes to porting and localization, but we’re doing our best to ensure the game is being developed with those concerns in mind.
For localization, we’re using a system where all text in the game is sent through a central lookup table populated by a single file. So we can hand off that one file to a localization team and all text in the game will be correctly translated. The system even allows for things such as basic sentence structure definitions for cases where you have something like ‘Use Item A on Object B’, the nouns are part of a separate lookup table and the combination of verbs and nouns is defined by a function, so we can adjust the system to allow for different sentence structures depending on the needs of the language being translated to.
As for platform porting, currently the big focus is on getting performance as good as possible. We’ve already started profiling the game and doing tweaks to ensure that we’re not shooting ourselves in the foot performance wise down the road. The game doesn’t require a lot of horsepower, but I still want to ensure it’s as efficient as possible so we can port it to some less-supported platforms like the Samsung Smart TV or Tizen. I’d love to have this playable some of the more obscure, lower cost platforms out there. Currently I’m targeting 2000 FPS on my development platform (i7 PC), but I’m curious to see how much of that get’s chopped off when we try and run the game on low-cost Smart TV or old Smartphone/tablet.
Lots of optimization still has to be done, but I’m flagging every inefficient function and system call so I can go back and optimize them once the code gets more stable. Optimizing too early on can result in a lot of wasted effort as the structure of the game’s engine changes during development.
Another big issue to be addressed down the road is input handling, currently Unity has a new input system in development that allows for somewhat platform agnostic input but it’s not ready for prime time yet. However, as development advances I’m sure we’ll be switching over to that system to allow us to better handle inputs on different platforms (EG, keyboard/mouse to gamepad to touchscreen controls).
Actual Gameplay Development?
Saving the best for last. Since the last blog post the following changes have been made on screen:
- Unified UI System
- Development of game ‘Info’ inventory system. After receiving information about an upcoming meeting players can research topics to be used during the meeting.
- Development of game ‘Event’ system. Effectively this is how the story of the game progresses. There is a chain of events that hand off from one to the other.
- Time Systems implemented. The Majority of action in the game take ‘time’ to occur now, it’s effectively a gameplay currency. So the player will need to figure out how to achieve their objective given the remaining time the have.
No new screenshots I’m afraid since the majority of development has been code side. I’ll have something for next blog post though.