GhostVac
An electromechanical, ghost-sucking arcade machine of your own!

Controls:
[LEFT] / [RIGHT] Control the GhostVac
hold [Z] suction
release [Z] blow
press [Z] restart (if you're in gameover mode)
Suction a GHOST into your GhostVac and then shoot it into an open mechanical TRAP.
Trap all ghosts to win.
Software Used:
Photoshop and Illustrator for concept art and 2D textures
Photoshop for the Dot Matrix Display animations
Cinema 4D for 3D
Construct 2 for compositing, 2D physics and fake 3D representation!
BFXR and an electric vacuum used for sfx
Theme
it started out as a game where you feed a cute creature balls to keep it alive, but the gameplay wasn't where I wanted it to be, so now it's a game where you feed ghost traps to kill ghosts. I'm still happy I didn't go with my lemmings or throw wood in a fire idea.

Tags: #3d, #arcade, #breakout, #cleaning, #electromechanical, #ghosts, #mechanical, #paranormal, #vacuum
Genres: shooter


Comments82
BUT
It's pretty fun, simple and good looking! I even beat the boss.
The arcade machine feel was a nice touch, but i found the gameplay / physics a little too frustrating for me to be honest. I think this is because i had to spend a lot of time waiting for the ghosts to get sucked in by the vacuum in my playthrough ?
Enjoyed it enough to play it twice too. Though, the second time through the time kept going even when I scored all the ghosts, not sure what happened there.
Overall one of the better games I've played this jam, but I'm not sure how it relates to the theme.
Presentation is incredibly CUTE with the little faces on the screen. And genuinely feels like an arcade machine (love that reflection, like Le Slo said!)! At least for me it's got the difficulty to boot as well—the boss was *tough*!
Loved the sounds too but unfortunately some of them were a bit too shrill for my ears to cope with, sorry about that. 😅
LOVED IT. 💜💜
(also I spent way too long figuring out 幽霊退治 👻)
I sometimes have a problem that after the first round the vac doesn't work and I'll have to restart, but it looks awesome :smile:
The tie to the theme may have got a bit lost from your original concept, but the game might have become better in return, so that's fine :) It does offer lots of potential from multiple areas, I could even imagine some kind of multiplayer game modes fitting well with this.
Congrats!!
Congrats!
The suction sound is a bit noisy which is 100% how it would be IRL.
I made it to the "boss" but didn't beat it. :tired_face: Also I ran into a bug where the Z key stops working... I clicked for focus and it still didn't work :scream:
Big arcade mood, wish I could go to an arcade and play this for real :laughing:
Top marks for innovation!
If you want to know the timestamp of when your game was played you can see it in this spreadsheet:
https://tinyurl.com/yau8hjzn
And then look in my latest videos and find your game being play (after the current stream ends)
https://www.twitch.tv/ursagames/videos
Nice Execution of the animated LED Display.
Those creature-balls are quite random & tricky to handle, especially for the BOSS-round.
Bug?: while you have a creature-ball in ghost-vac possession, after a while during BOSS-round, the ghost-traps lock-up (instead of its usual open/close cycle).
I'll acknowledge to how others have mentioned of this cross-over: Luigi's Mansion mixed with Hungry Hungry Hippos (and a dab of Pinball LED display for that Redemption Arcade game feel..) :dizzy:
Overall a really great entry!
Goes without saying that the game looks and plays fantastic, but it's just outshined by the aforementioned education potential. Phenomenal work!
THEME
First things first, I did let the theme get lost in development. The game was initially about feeding balls to a creature via the hatches, to keep it alive. The gameplay has stayed exactly the same, you still have to feed the hatches before time runs out, but arcade games live and die on how easy they are to pick up. I thought the metaphor of busting ghosts was more apt. So the story the game tells isn't about "keeping it alive",but I'm ok with it. I prioritized gameplay over metaphor.
Re: people who ask whether I copied an existing machine: I would swear that there's nothing like this game in any amusement hall, BUT, searching through my reference folder this week, I found
THIS
It's a two player game where you score goals on each other using 2 blowers! It's even ghost themed, and it's obvious to me that I totally stole those flat-bottomed ghosts that are part ball and part air hockey puck!
I was obsessively researching electromechanical games a few months ago, and it obviously stuck with me subconsciously!! That said, my game is significantly more sophisticated and gameplay is very different, so no, nothing like this exists anywhere, to my knowledge.
@johnnysix @nelson-william @ruthiepee @eldogg @acronaut @joemag @turritom
Game Design breakdown:
A sort of pinball-ish, sort of shooter-y, sort of tractor-beam type arcade physics gameplay.
I wanted to realize the fantasy of busting ghosts like Ghostbusters or Danny phantom. I felt it would be fun to make it a two step process: get the ghost, then a trap opens, then you have a limited time window to shoot your ghost in there.
Two peaks of pleasure: successfully sucking and trapping a ghost, and then managing to exterminate it by successfully aiming it into a trap.
The ghosts would have to move around a bunch, to provide a moving target.
If I had time (I did!) I wanted to implement a boss with a higher difficulty obviously, but also a slightly different mechanic: this time hatches open up and close automatically and randomly. Those same hatches that used to be ghost traps, now represent vulnerable spots of the boss.
Suction is an illusion!
I went about implementing a "suck" behavior. Now, real-world vacuums do not suck that far! My solution was to "engineer" one blower fan that blows uniformly through 20 small holes arranged in a half circle opposite the player. Each of those holes opens via a circuit, depending on the angle of the ghost vacuum. Probably a potentiometer, or maybe even more primitive, through 20 distinct contacts on the rotating vacuum side. The effect looks like sucking ghosts, even though it's actually ghosts being blown towards the player.
The same blower fan also periodically diverts some air to blow away from the player, so that the ghosts move around on the playfield.
But the illusion of sucking doesn't stop there: When a ghost is near the vacuum, it really *does* suck it in (I emulated a suction force, by making it dependent on the inverse square of the distance - i.e. it gets weak at even tiny distances from the source).
When a ball is close enough, a sensor triggers a magnet at the tip of the vacuum, so the ghost is locked. Then, in order to shoot the ghost fast, a kicker is activated that sends it flying. Just blowing it away wouldn't be half as snappy or consistent or satisfying. So that called for more fakery.
Also to keep the balls from flying into the hatches on their own, I implemented a bump/ ridge in front of the hatches - i.e. a barrier for most balls, unless they're moving fast enough to overcome the bump.
To keep the balls from spilling out of their traps, the back half of the playfield is a platform that's angled back: I apply a small force toward the top of the playfield on any captured ball. When the game resets, the platform is raised, and the slope is enough to send the balls toward the player and out of the traps.
It looks extremely simple, but it would probably be expensive to manufacture: there are sensors for the balls going in and out (so that the game knows when to score or reset). To stay realistic and keep "costs" down I didn't implement flashing lights on the playfield or other gimmicks. Those games usually rely on cheap segmented monitors (already a Dot Matrix Display is luxury), and one core mechanical gimmick (the blower).
I think it's a fascinating field of game design, and I pride myself for thinking things through and implementing real-life mechanics.
Known Bugs
thanks to all the feedback from players, I'm now aware of a timer bug. It doesn't always trigger, and seems to only trigger on slower systems or browsers. I did however track it down, and it's completely because of my sloppy spaghetti code: I'm not setting the enum state of the game properly. And because of that I had to use lots of if-statements, which is exactly the sort of thing the state machine design pattern is there to avoid. I'm still debugging this. In any case, don't emulate my mistakes!
@ava-skoog @fatsheep @harry-alissavakis @aeveis @despdair @bitpokit @quarter-up-studios @ithildin @adhesion @rohezal @peterfiftyfour @ethebakesmith @teammonumental @justcamh @neontropics @yellowlime @splitpainter @patsui @johnnysix @nelson-william @jonrei @ruthiepee @eldogg @alexrose @acronaut @alchemic @joemag @max-louis
3D is an illusion!
Then there's the fake 3D using sprites. That was a lot of work to figure out, especially since I made this in a 2D engine. The source code gives it away, you can have a look. But it's basically projection math. Dividing by Z to convert "flat world" coordinates to "projected" coordinates. Then the flat world can be used to design a playfield in 3D
2D playfield for designing and testing
3D playfield built on the 2D playfield. For displaying the game at a more immersive angle.
2D physics on the right, sprites on the left.
The one and only sprite used for the ghosts. They get Z-sorted, based on the ghosts' Y coordinate, and also scaled depending on Z.
The combined shadow and reflection sprite, that follows the ghosts around, on a separate layer (i.e. canvas) with universal 50% layer opacity:
The ghostvac plastic nozzle is a prerendered 60-frame animation. Each of those 60 frames corresponds to one of 60 degrees that the ghostvac is constrained to.
The prerendered plastic border was sliced and placed on top or behind the ghost balls, accordingly:
Further Development
The things to add to this game are definitely: score and a survival mode-type gameplay.
Maybe a bonus mode where you freely shoot hatches. Nothing that requires more mechanical gimmicks! It's the limitations that make this kind of machine attractive to design for.
Also an operator's settings menu, including highscore reset and timer difficulty adjustments, which also double as accessibility options. Disabled players love arcade challenges too, and giving a leeway of a few extra seconds to make the game beatable by everyone is high on my list.
Thank you for playing!
GHOSTVAC
- the LED display - so good! The scrolling title screen, the messages when you get a ghost in, the "boss" - such a great addition.
- the reflections - they made the game board just pop so much!
- the sound effects - the vacuuming sound and the other various shunting and movement sounds were so appropriate and so well used.
The gameplay itself was also fun - lining up shots felt great, and if you missed you really felt the "just a little to the left next time" feeling. The sucking of the ghosts was a little random and felt a little unfair sometimes that the ghost would just fly away, but it's a minor nit.
I loved the two modes - the first mode felt like it was teaching you and easing you in - then the "boss" comes and ramps up the difficulty. Great stuff. I'm just sad it's so short - I want more modes, more bosses, more time playing!
The polish was great - seeing the ghosts floating around in the back instead of just disappearing was such a neat little touch.
This would have got almost perfect scores from me - the lack of connection to the theme is slightly sad, and maybe some music would have really finished the atmosphere.
In any case, really great job!
Anyway, nice idea, wonderful graphics. I liked it.
I've very much enjoyed your brake down.
I think this could use some leader boards.