Boo.io - BramJam 2 Submission!
Overview
(Skip to "How To Play" if you want)
With midterms going around and stress from school, I decided to take a break and participate in a jam organized by @bramley
The theme was Multiplayer Halloween, a pretty vague theme for a game jam, but it gave a lot of room to work with. I had lots of prior web programming experience, so I decided to make an .io style web game.
I spent a total of about 7 hours on this (yes I have no life) but it was a great stress reliever, and I strongly suggest you to participate in future game jams if you aren't planning to do so already!
Day | Minutes | What I Did |
---|---|---|
Oct. 21 | 45 | Basic webserver setup |
Oct. 22 | 90 | Menu screen + movement |
Oct. 23 | 30 | Candies |
Oct. 24 | 90 | Leaderboard + Gum Projectiles |
Oct. 25 | 45 | Killing |
Oct. 26 | 30 | Death screen |
Oct. 27 | 45 | Invisibility |
Oct. 28 | 45 | Respawning + Polishing |
How to Play
You are a ghost who has quite a sweet tooth. Gobble up candy and kill other ghosts using gum pellets to rack up points!
NOTE: Yes this is MULTIPLAYER! You will need to play with your friends or when other people are online
Controls
- WASD to move around
- Mouse to aim and shoot
- Space to go invisible
Objective
The objective is to earn points and climb to the top of the leaderboard.
- You can earn points through collecting candy which spawn throughout the map, or by killing other players.
- Every candy you collect increases your ammo by one. Your ammo count is indicated through the five dots below your character, with each pink dot indicating an ammo.
- Click to shoot. When you attack, you will use all of your current ammo at once.
- Press space to go invisible. Going invisible costs all of your current ammo, and you can ONLY go invisible if you have AT LEAST three ammo! For each additional ammo you have when going invisible, you get an extra 0.67s of invisibility!
Your invisibility lasts 2.5s - 3.8s, and ends instantly if you attack while being invisible.
Your invisibility has a 10 second cooldown after use, which is shown by the cooldown bar, which appears while the cooldown is in effect.
It is perfectly normal if you experience a bit of lag, I've optimized this game to about 90% so the lag should hopefully be minimal, unless you're using a slow computer.
What I Use
I created the game with a NodeJS backend, using vanilla websockets, ws
dependency for client-server communication.
HTML CSS JS frontend, pure vanilla javascript with no frameworks. I use mspack-lite
for binary encoding/decoding for packet reduction. You can check it out here
I also used quadtree-lib
for optimized collisions. You can check it out here
Credits
- Code: Me
- Art: Me
- Music: Me (Yes I made the terrible music)
- https://beepbox.co/
Many thanks to those who helped beta test!
FAQ
Q: I am stuck/aiming is stuck
A: Try switching to another tab then coming back, it usually fixes the problem. If not, reload.
Q: Is invisibility overpowered?
A: Yes.
Q: Why am I lagging?
A: It's inevitable that multiplayer games have lag.
Q: Can I hack the game?
A: Good luck trying!
Q: Can you add my requested ideas?
A: No this is a game jam submission, I am no longer working on the project
Q: Why does the music suck?
A: Because I suck at making music.
Q: Are you sure I can't hack the game?
A: Yes I am certain :)
If you notice any bugs, please report them to me as well as including details such as what you did when it happened and when it happened!
Hey, want to help me make something?
@HeadSucksAtLife what is it
Im making a language with coder100 @realTronsi
@HeadSucksAtLife @Coder100 could you explain more about it?
Its a language made in javascript @realTronsi
about what @realTronsi
@HeadSucksAtLife well yes but explain more, for example what its purpose it, syntax, interpreted or compiled, etc
@Coder100 he wants to invite me to a language you two are making, I just want to know about it first before accepting or declining
Well, I don't really want to share about it on a public basis so can I just invite you to the team and you can check out the code?
@realTronsi
@HeadSucksAtLife no one is online lo
@coder100 join team repl
@realTronsi
No one is on all the time :(
@JasonLiu19 oh there were 8 people online this afternoon, bad timing ig :(
@realTronsi i was Larry :)
@JasonLiu19 oh hi then :) you basically ambushed the whole lobby
@realTronsi awesome!
@CoolGuy27 thanks!
Wow pretty cool!
@Bookie0 danke, yours too
this is awesome!
@ComputingSquid thanks!
yeah how did you make this
(i can't even manage a clicker game with local storage)
@realTronsi
@ComputingSquid nodejs backend using vanilla websockets.
That was really cool!
@CodeSalvageON thanks! yours too
EXCELLENT GAME!
10/10
@haha0201 yey :D
also for overlap regions, just do a strokeArc instead, set lineWidth to the current size of the arc then do an stroked arc half the current size, and only go from 0 to Math.PI so like a semicircle
@realTronsi
@haha0201 jesus how did I forget about that, fixed!! ty <3
np lol @realTronsi
@SixBeeps what is it?
@realTronsi I'll just leave this here
pl = {
m: "j",
n: "bruh"
};
dws.send(msgpack.encode(pl));
@SixBeeps how did I forget to patch that. I patched it just now, simple fix
@SixBeeps good catch though
@SixBeeps there shouldn't be any more vulnerabilities now o_0
@realTronsi I couldn't find anything else. Good game btw.
@SixBeeps alright thanks!
ez. just have an autoclicker and just move around
Umm,Hello !!! I am here just to say that last u had gave me 23 messages which was u and ur friend talking in my post.So,I wasn't happy.Pls do chat on ur posts.Not others.Sorry if this was rude,But I wanted to give a notice.
Thank You 😀
@SachetTheCoder oh sorry np, we just like to talk and I didn't realize it was your post
@realTronsi I know even when I was on Scratch I ended up taking on someone elses post/profile.lol
this game is awesome
did it get unlisted or something?
because i can't see it...
@ComputingSquid can you not see the post or the game? I don't believe that this was unlisted, it probably just fell from trending
whos online
no u elaphant you keep trolling me
@ComputingSquid lol I'm not online
@ComputingSquid it's probably someone else
who are you
elaphant?
i was squid
and who was the cookie? @realTronsi
@ComputingSquid lol I have no clue, I'm in class atm so I'm not playing the game
lol.
i have class but i'm not in it now. @realTronsi
I have a project to do in school, and I used the EXACT same picture at the top! Also really fun!
@ShivankChhaya cool lol, all graphics were made by me btw
cool!
wow cool
@ethanshaozz1928 thanks!
I have a question:
Is it ok to open many taps and have an army?
@DarkswordsmanJG no not really lol, but if no one else is online then sure. I mean no one is stopping you but try not to abuse it. It was out of my time frame to implement systems to avoid multiple tabs (ip tracking + bunch of other complex stuff)
M O I S T 👻
@LoganSpong no copyright on comments, Am I right? lol
Nice, however it's really jittery for me. Did you use any interpolation?
@fuzzyastrocat no interpolation for this one
1. due to the lack of time and
2. I'm lazy
It's strange that you're jittery though, for everyone who has beta tested they said they game was pretty smooth. Could you explain what you mean by jittering?
@realTronsi I mean jittering :D
Jokes aside, the movement appears to be in tons of little steps rather than one smooth motion. The important part of this is that the steps are very inconsistent timing-wise, which leads to the "jittery" feel. The movement also seems very "jumpy" in that it often jumps forward or lags behind.
(And of course, I don't mean the movement of the player ghost since that's fixed, I mean the movement of the grid and the other players.)
Additionally, it's weird how the movement hard-starts when you push a key and hard-stops when you stop pushing a key. A ramp-up/ramp-down would be nice (so pushing a key applies an acceleration instead of a velocity basically).
@fuzzyastrocat ah. The hard starts is intended, and I could add velocity pretty easily but I like the precision of hard starts, and it lets you dodge bullets easier imo.
Yes the movement isn't the best but this was what I was able to accomplish in the span of the jam and I didn't want to spend too much time on this.
@realTronsi Hmm ok, I see your reasoning there. Maybe just a tiny ramp-up, but it's a matter of preference.
Yeah, makes sense.
@fuzzyastrocat I mean I guess it's reasonable for 7 hours imo
@realTronsi Probably ye
One word, one emoji:
L I T 👻
@RayhanADev 👻
@RayhanADev can't wait to see your game!
@realTronsi ha we’re pretty close too. Maybe early morning tomorrow or late night tonight (I need to stock up on coffee again after this xD)
@RayhanADev I noticed you had two mouse pointer icons for local gamemode, how does that work? Two mouse at the same time o_0
@realTronsi hmhmmhmh
p e r h a p s W A S D a n d A R R O W S
@RayhanADev too bad I have no frens :(
@realTronsi lol wanna be frens xD.
@RayhanADev well it's local gamemode so we can't play unless you're the dude hiding in my attic
@realTronsi lmao.
@RayhanADev jesus christ like 5 random ppl (excluding us) online wow!
@realTronsi lol that furries unite thing was hilarious xD.
@RayhanADev lol did you have fun. I was "dd" and "Player"
@RayhanADev idk who that Larry guy was but he was extremely pro, literally ambushes you outta nowhere
@realTronsi hahaha omg I hate you xDxDxD gg. That was really fun, but I feel the scores are a little broken (like at one point I just respawned with .6 k).
@realTronsi yeah lmao me the not gamer getting killed by everyone lol.
@RayhanADev well when the server restarted that's what I changed. I made it so you respawn with more points and also earn more points by killing. It's better because beforehand everyone was respawning sub 100 and it wasn't that fun
@RayhanADev you were the first to ever reach 1K tho lol
@realTronsi ah.
@realTronsi really? dang well, I feel honored (should have screenshoted xD). Also I was bored today, made a threeJS globe that was really bad xD.
@RayhanADev I already have hacker and I don't exactly need it, so if I win anything should I organize a Boo.io tourney, and highest score wins hacker? (If i win something that is)
@realTronsi dude, hands down you’ll win. I say it’s up to you, if you can find a way to make the game slower-paced (the longest I lived was like 2mins), then yeah that would be a dope tournament.
@RayhanADev well it IS supposed to be fast paced, maybe if I made the map bigger by a bit
@realTronsi ...or added some kind of obstacles/maze-y thing :)
@fuzzyastrocat nice idea!
@RayhanADev Thanks!
@fuzzyastrocat @RayhanADev too late now :P
@realTronsi lmao right Jam submission xD.