Cash.io
rshetty (83)

The only online multiplayer game you'll ever need.

(we hope!)

💰 This is Cash.io

(It's recommended that you visit some of the sections below such as Challenges and Instructions so you can know the do's and don’ts of the game since it's still technically in development.) The game was created using socket.io and Phaser 3, so be sure to check both out for your own use.

🖹 Instructions

You play as a coin, and the object of the game is to... gain coins by eating them. While that may seem bizarre, our other ideas made even less sense, so cannibalistic coins: take it or leave it.
Use the WASD to control your player. You will speed up the longer you keep moving.
You can visit banks scattered around the map which will spawn little coins every few seconds, which you are welcome to consume by moving over them.
You can also attack other players by ramming into them. They will lose coins depending on your velocity if it is past a certain threshold. When a player's coins reach zero, they will explode into more little coins for others to consume.

👱 Team Members

Rohan Shetty
Wrote the code for client and server side.

Matthews Ma
Planned the game and major logic. Wrote the leaderboard.

Kenny “Keq_qer” Lee
Artist. Created sprites such as the bank and the coin.

💡 Concept

We wanted to follow the theme of the game jam, hence the name cash.io. We also preferred to do something that we had experience in. As Rohan had recently made an online multiplayer "game" (more of a map really), he knew a bit about the framework and such. We say "a bit" because he learned more about JavaScript, server and client communication, and physics than he expected. We also learned just how hard it is to make a real, fully functioning game, and we’re more impressed than ever with game developers who are brave enough to enter the third dimension.
So enters the player, a simple coin. We brainstormed a lot at the beginning, but all our ideas ended up being exactly like Agar.io, so we ended up scrapping a lot of our original ideas. We eventually came up with the concept you see now - a humble game that we’re proud to call truly unique.

❗ Features

In this section, we’re going to outline some of the major components of our game, and really just show it off.

1. Fully-featured online multiplayer

You can play anywhere and with anyone, as long as you have a stable internet connection. We find this feature really appealing because as nerds, we tend to stay inside and this allows us to play with our few friends without getting touched by the sun. By “fully-featured” we really mean it. Cash.io features spawners as well as a scoreboard so you always know who the supreme leader of the server is.

2. Phaser 3 Arcade Physics Engine

Phaser 3 is an awesome game engine. It allows you to create excellent arcade games in JavaScript. However, unlike other engines, Phaser does not feature a GUI. This makes our job harder, yet more satisfying when we manage to implement a feature or fix a nasty bug. Phaser features Arcade Physics, which we struggled to implement at first, but eventually got the hang of.

3. Lightweight browser experience

Cash.io runs entirely in your browser. As students who work on school Chromebooks daily, we’re constantly reminded of the inability to download games and apps. Browsers have been evolving over the past few years, and Phaser being browser-based means we can have a great game that runs right in Google Chrome, Firefox, and maybe even Internet Explorer (we’re too scared to check).

⛰️ Challenges and Code

Obviously, the Game Jam is centred around programming ability and creativity, so I'll discuss some challenges we encountered and how we fixed them.

1. Server and Client Continuity

In order to reduce server lag, we wanted the local player to handle as many of the calculations and general processing as possible. This proved to be a difficult task as the player had certain attributes that were only visible to themselves, such as velocity. Making it visible to other players would require a large amount of transport code within the server, making it less efficient. We eventually found workarounds, such as letting players communicate their attributes only when absolutely vital.

2. SetInterval and Cheating

If you didn't already know, setInterval is a JavaScript function that repeats at a specified interval (every x milliseconds). We knew this going into the project, but what we didn't know is that setInterval takes low priority, so if you are not on the game tab and are, for example, opening Discord to send a quick message, setInterval simply will not run. Then, when you reenter the game, they will all trigger at once, creating an incredible rift in continuity between players. Not only that, but opening the console to cheat is a possibility for players. We've creatively structured our code to prevent as much cheating as possible

🚪 Closing Notes

We think we created a game that’s worthy of first prize in the Game Jam. If you agree, leave an upvote and tag your friends and maybe even subscribe to the channel! Hit that bell icon to join the notification squad!

You are viewing a single comment. View All