As we get closer to the next update (thanks for your patience) I thought I'd do a quick behind-the-scenes post. I'm hoping to do a few more of these as the updates are released over the coming months, feel free to ask questions, and I'll address in a future post if I can (some things I can't talk about though - I'll do my best).
There's a lot to programming pinball machines, so I thought we'd go into that briefly with this update. What's the process, what tools do we use, and what does the Ultraman code look like from a high level.
First, lets talk about "regular" software development, which often all happens in the one environment. Normally you'd make a change, save, sometimes compile the code, check the result. Repeat. And repeat... Depending on the language and application there are tools to speed this up, and there are lots of clever folks out there continually improving things, sometimes you can even make a change "live" and everything is instant, that's the holy grail of development.
Pinball machines and other hardware devices bring another layer of complexity, in that you can only do so much on your development machine before you need to get it running on the actual hardware to really test it. The whole process isn't as quick and there are a LOT of moving parts and variables in a pinball. For a start, if something isn't working the first question is "is it physically broken, electrically or is the software?!" Oh boy. We have a lot of test cases where the machine is put into a certain state and we can quickly jump to testing something specific. We don't have to play through a real game to get to a multiball for example. After we make more changes we can re-run those tests and make sure we didn't accidentally break something that was working.
So, what's in the Ultraman code? Here's some stats:
- 17,549 individual files in the project, it's about 3.5 GB
- 1,637 files are videos and sounds
- the longest C# code file is currently the Zetton wizard mode at 2871 lines
See below for a photo of my desk, yes, four screens is probably excessive, but you gotta have at least three =). Unity on the left, Visual Studio in the middle, playfield with switches and keyboard shortcuts on the vertical screen on the right, project management and music on the top. Tools used include: Visual Studio (C# code), Unity (engine), Git (version control), Beyond Compare (check and copy things between projects), Trello (project management), Miro (diagrams), Photoshop (images), Shotcut (videos), lots of USB sticks for update files(!)
Hopefully that was of some interest, the next update is really coming along, and we're doing everything we can to get it done and tested and released as soon as possible. We've got a lot of cool improvements in the pipeline too as we all work to make the game as awesome as possible.