Micro Arcade Development

Early Developments

20th – 26th Janurary, 2020

The first week was mostly focused on getting everything setup ready to go for the project, this included getting important documents started, researching solutions to potential problems that may come up during the project and beginning to prototype some of the core features of the software product part of the project.

I started this week by completing the project proposal, a formal document that is required before the project can be officially started. This document summarised what the project was about, some of the aims and objectives and a basic risk assessment to start things off.

On the Wednesday I had the 2nd part of the FMP presentation, this went into more detail about what is next for the projects and how we should be conducting our weekly workflow. They recommend 33 hours a week on the project, which makes sense as it is a double unit. I decided to dedicate Monday, Tuesday, Thursday 9-5 & Saturday 11-7 to the project, making up 32 hours consistently. Then making up the remaining hours each week either on Wednesday afternoons, Friday mornings or on the evenings on the dedicated days.

Later in the week I focused on designing the games for the cabinet. I decided upon a simple 2-layer verses pinball game to be the retro game, it’ll be high score based with lives and bonuses for outlasting your opponent. The modern game is going to be a co-op bullet hell game with 3 parts and a final boss.

Lastly, I worked on the menu system and prototyping the first game. I hope to have the first game feature complete by week 3 and have it tested and ready to go by week 4/5. The menu system is fully setup and works as intended, it is not polished at the moment but that will be worked out as the games get developed.

A Few Weeks Later…

1st – 9th February, 2020

So, this weekend the cabinet got its last piece, the perspex screen. However, there is still a little more to do, as I made a mistake. There has also been a lot of work on the software project since my last post so here is where we are at currently. The main menu has had a lot of work, with a selection of canvases running the system. This is by far one of the biggest parts of the project as it controls all of the settings and game access etc. Below just shows the hierarchy as it currently is along with how the menu system looks right now.

There is still a lot to do on the menu system as the game settings, credits reel & joystick sensitivity needs sorting along with the artwork and sound. This will be worked on periodically while I work on the main games.

Pinball Progress

There has been a lot of work on the code side of things, getting the main systems sorted for the game. Currently I’ve got the following completed:

  • Player Flipper Controls
  • Ball Spawning & Movement
  • Bumper
  • Game Scoring
  • Game Types
  • Game Win States
  • Game Over Screen

Considering I took most of the last week off to take part in a game jam, I feel I did quite well on getting the main mechanics coded. Speaking of game jams…

Game jam???

I took part in the CGFX 2020 game jam last week (Feb 3rd – 7th). I made a game called Displace, where you take photos with a camera to get rid of obstacles and rob the bank. There wasn’t much of a game to show really, due to how much I could do in one week, but the concept is there, and it won the award for most potential which I’m pretty happy with. An extra thing the game does is it saves the photos you take in the game so you can view them afterwards, including the ones the enemies took of you. You can see the game and give it a try by downloading it from it’s itch.io page linked below.
https://carter-games.itch.io/displace

More Cabinet Construction

So, this brings us to this weekend. Where I got the last bit for the cabinet, that being the light strip perspex. But there is a little problem here! This been the fact that it is not quite tall enough for the gap. So, it’s time to get inventive. I have a few ideas to solve this problem:

  • White electrical tape layered up either in front of the Perspex or on the same line as it
  • Modelling wood, cut to size and put on the bottom edge to fill the gap
  • Some kind of corking, not sure if it this idea would work though
  • Get a new bit of perspex, rather not do this though.

I’ve also got a bit more cable management done, having the power strip attached to the back of the monitor mount and a hole in the back board for the power cable to go out of so the box can be closed off and just have a power cord coming out the back.

Last Prgress Update

9th March, 2020

Game Menu

This has had a lot of work and still has a fair bit to go, but a lot of the ground work is there. The script that controls this is by far the biggest script of the entire software product, currently being 585 lines long. There are still a fair few features missing from the menu; currently the game selection is being re-worked to accommodate more than two options & the game settings need implementing entirely. This is work I plan to do before classes on Fridays from now on as I’d like to get it done before April as the last month will be super busy with post production, deadlines & running.

Progress Report

So, on the 2nd of March I had my first graded assessment, this being the progress report. This report had been worked on for the last few months through ungraded mini-reports designed to help make this report easier. 

Ultimate Pinball

So, the first game was planned to be completed by the end of February. Well that didn’t fully happen….Not to say it wasn’t complete, but there were a few missing mechanics that need adding and the game could use some tweaking/polish. But due to the tight schedule and scope of Operation: Starshine (the 2nd game) I had to focus on making that game for March so I can still deliver the two games. Speaking of…

Operation: Starshine

While only 9 days into development progress is good for the new game. Currently all the ships the player can choose to have their stats setup on start, can shoot both their weapons and move around the scene. The movement still needs locking so the players can’t escape the camera and shields need to be added as well as some basic artwork and stages. So basically, a lot to do still 😊.

Cabinet Paint Job

The last major progress has been the cabinet itself. As of today, I’ve got an extra £60 which I can put towards the cabinet. I’m planning on producing some artwork this coming weekend to be printed on to vinyl, giving the cabinet some much needed colour. Other than that, I have painted the sides, back and top black to give the cabinet a two-tone colour effect.

What will run the cabinet? Raspberry Pi?

With the cabinet already mostly done. I had to figure out what on earth was going to power it. Now that isn’t exactly a hard question as pretty much any computer can run the cabinet, it’s not exactly demanding kit for modern day computer hardware. However, I don’t exactly have a spare computer from the last five years lying around so It was time to get creative…

Raspberry Pi?

I remembered that I had an old Raspberry Pi from back when I did computing in school. While it felt like a long shot, I gave it a try. It worked, but one thing struck out instantly, it was terribly slow! Doing a little digging, turns out I had an original 2012 model B. The latest Raspberry Pi was the model 4 B which was close to being a full desktop. So naturally I ordered one of those. A few days later I had the 4 B working with the cabinet. But that wasn’t the last hurdle…

Trial & Error

While the Pi worked, it wasn’t able to run the builds from Unity natively. This was a big problem, as the builds needed to run on the cabinet. So, back to google I went, after some digging, I found several solutions which had varying chances of success. The first method I tried was using Quora, a poorly documented tool that would be able to run x86 applications. However, this seemed to either not work or I mucked up somewhere with the install. Considering everything I was doing was command line, there wasn’t much if any feedback the whether or not I was doing it right. So, I decided to leave that option there and try another one…The next one being WINE, which was a package that could actually be install from the package manager and was made to run windows programs on Linux. One large and seeming undocumented problem, it only runs certain windows applications, you can’t run your own. At least I wasn’t able to find a way to do it, next solution… The last method I researched involved making universal platform builds in Unity and doing some command line to get them to run on Linux. I decided to not even both with this method purely based on the forum discussions alone. It was a big no! Those who tried it and got it working only got around 5 frames per second, on a blank project. Now there were other solutions that may have worked, a good example is Exagear, which seemed promising, but based on the previous attempt I decided to leave the Pi there as performance would seemingly be a big problem with it.

Conclusion

So, what is running the cabinet? Well, my current laptop, an old HP 15-inch notebook from 2013/14 makes a good fit for the role. It can run unity games fine, can run a monitor without needing its screen raised, has all the right ports etc. So that is what I’m going with. By far it’s not an ideal solution as means there is some extra setup for the cabinet that requires the back panel to be removed every time, I want to run it. But it should work for the project. I’m sure if I keep the cabinet after University, I’ll find the time to put a compact PC into the cabinet to complete it.

Making a Bartop Arcade Cabinet

Introduction

Making the arcade cabinet was one of the biggest parts of the project. Not only is it a decent size physically, it also is the platform that I’m making the games for, so it needed to be right.

The Design

The design for the cabinet was based on the rough shape of a bar top arcade cabinet. I decided against making a full size one as it would’ve been tricky to move and cost a fair bit more to make. Considering I was doing this project totally out of my own pocket it needed to be as cheap as I could make it while still been good quality.

When it came to getting actual measurements, I used a Legend of Zelda bartop cabinet writeup as a guideline. I mostly used the diagrams to figure out the dimensions I would need for my cabinet. As I was going for a more modern cabinet rather than a retro one, I purchased a budget BenQ 16-9 1080p monitor for the screen. This meant I had to widen the design to suit the monitors dimensions. This actually resulted in a more ergonomic design as the 2 players have a bit more space between their controls.

Materials & Measuring

The material for this project was simple 9 ply, plywood in big sheets. I believe they were 4’ by 8’ but don’t quote me on that. We got 2 sheets cut in half to make squares, due to this we somehow managed to get one for free as the checkout lady, who looked new to the job, but had nice two tone dyed hair got confused and only charged us for the one piece. I’m not complaining as made the materials a tad cheaper.

Measuring each part of the cabinet out was a relatively simple process, having the example project helped getting the right measurements, but measuring it out was tedious as the tools I had to measure with. That being an oversized set square, a bandsaw rail attachment with angles on it and a pencil which was barely visible to me due to my partial colour blindness.

Cutting out the pieces

The next main step was cutting out the pieces. Most of the pieces were simple to cut out as they were 24” wide and varying heights. However not all the pieces were so simple. The sides proved to be difficult as the bandsaw couldn’t get to the line to cut out the shape, the table saw was no better. We ended up getting close with the bandsaw but cutting it out in random shapes in steps and then smoothing it out using a mounted router.

Assembly

Assembling the cabinet together was a puzzle really. It was more or less; get this piece to fit here, at the right angle and with the right depth so it looked good. We put the sides on first so that it could be used as a base for the rest of the pieces and gave the structure some rigidity early on. The bottom piece was a simple fit with a few supports on the interior of the cabinet, though that was the only quote on quote easy piece.

The next piece was the control board, where the joysticks and buttons for both players would be. This was a hard piece as the drill we were using couldn’t handle the cuts for the larger buttons and couldn’t reach over half the buttons on the board. Because of this we ended up using a more powerful hand drill, with one of us drilling while the other held the board as still as possible. This worked surprisingly well all considering. We made two mistakes. The first been the top row of buttons which were there for menus and confirmation in the games. They were supposed to be all in a straight line, but a mistake on measuring meant that the outside hole was slightly higher than intended. We hid that mistake by matching the hole on the other side and making it look natural. However, the left players joystick hole also went a bit weird. While cutting the board wasn’t quite flat on the table and we had a few minor scrapes on the edge which left a not perfect hole. We planned to hide this with the provided covers for the joysticks and left it at that.

After that was probably the next hardest piece which was the monitor. The monitor I had brought for this project was a 21.5” 1080p BenQ monitor. I got this one as the reviews for it on Amazon were good and it had the Vesa 100 x 100, Vesa been a universal wall mounting size format with several variations, most monitors you buy will have them. I planned to use these mounting holes instead of the base that came with the monitor when mounting it into the cabinet as it would be easier to maintain. The piece itself first needed cutting. It was the standard 24” wide but needed a hole in the piece for the monitor screen to show through. I went with the monitor been behind the board, so it added a little depth to piece which was needed. The biggest challenge here was getting the mounting right, which ended up requiring a lot of little pieces to get the mounting screws far enough away to not cause damage to the monitor while also holding it firmly in place. As with the majority of the screws in this project we used a wood glue along with screws to hold everything in place. The exception here is that the monitor could be removed from the piece if needed by unscrewing the 2 screws either side holding it in place. This may prove to be useful later on if I decided to repaint the cabinet.

Next was the speakers. To save on cost and as I happened to already have some, I reused an old Design Tech project that I did in Year 11. This been a RKAmp4 kit which we assembled as part of a speaker project. Now I kept mine and the sound quality is actually not too bad for a simple kit. It does have a downside that is phone signal interference is picked up, but this is something I may be able to fix in the future. The board itself and the speakers all still worked, it did need a heatsink to stay cool, which was mentioned in the documentation for the product when used with high power (12V). Conveniently the amplifier which was the component that needed cooling had a small hole big enough for a screw to go through. So, we attached a left over heatsink which we had found some time ago and mounted it in the optimal position for cooling, drill a hole for a screw and attaching it with a screw through the hole in the amplifier and the heatsink. The speakers were mounted in 2 holes which were cut out with the drill, which took a while as the drill had trouble with the layers in the wood. We managed to get around this by cutting until the drill bit broke through, then flipped the board over and cut in from the other side and meeting in the middle. The speakers also got a little screen which was bit a meshed metal which is just there to protect the speaker from being poked. All the parts were just screwed with standoffs on the PCB board directly to the wood, with some cable management and clips to make the connections to the board less likely to fall out.

The last main panel which is the top front piece is currently not done as I didn’t have the bits for it. This is a part that will be added in part 2. The remaining pieces, those being the back and top pieces were just a simple fit into place with screws so they could be removed as needed. The top had its edges cut at angles so they would end up flush to the front and back pieces.

Painting & Decals

After the main assembly was done it was time to paint. I went with a grey colour for a start, with 2 coats on pretty much every piece, I could always get a new colour and change it later on if needed. I do plan to add some artwork to the sides and control board in the future. This been either acrylic prints or something similar that I can just glue to the pieces with minimal tools to hand.

Conclusion

For a 6-day project, this went rather well. Now its not fully complete, hence this been listed as part 1, but the majority of the work is done. Currently the list of things still to do is:

  • Paint one of the joysticks hole covers white, so it matches the joystick.
  • Attach the joystick covers to control board.
  • Design & print the artwork for the cabinet, though this will probably be done during the unit.
  • Find & attach an opaque material for the top front piece as well as some LED scripts to light it.
  • Drill some holes for air flow
  • Decide on the system to run the cabinet, this being either my laptop or a raspberry pie or something similar.
  • Install internal plugs on an extension bar so the cabinet can be turned on and off when powered at the wall or with a button or switch on the back of the cabinet.