[Beta Release] Snakes - Local play 1-8 players

Current Version: 0.2.5

Gameplay from 0.2.2, thanks to pickPickles:


Introducing a local play game supporting 1-8 players!
This is a great party game!



w5aNmaE.png

0.2.4:
  • 1-3 Bot opponents to play against while waiting for friends to join!
  • Autopilot feature!
  • Will go back to Start Screen if you leave game.
0.2.3:
  • Fixed many netcode anomalies
  • Fixed message flooding after host leaves game options menu
0.2.2:
  • Added "Occasional holes" game option by request of Kingdra. This makes holes about 1/80 dots of your snake on average, allowing you or anyone else to pass through them.
0.2.1:
  • Added Screen Score system. This reflects a score based on the combined lengths of all snakes on the screen at the end of the round.
  • Added High Score system. The High Score is based upon the Screen Score at the end of the round. The winner takes the full Screen Score. Messages will be displayed to all players if you obtain a new high score!
  • You can now reset your High Score by holding R and pressing Y at the start screen.
0.2.0:
  • Fixed bug when many long snakes die in "Disappear on death", the game slows down.
  • Official beta release!
0.1.7:
  • Added new game option: Disappear on death. Now you can have a true tron cycle bike game mode by enabling: Tron mode, No apple, Disappear on death.
  • Fixed a slew of bugs, including: ghost readies, being unable to press A for the first second at the end of a round, dropping death packets that force some players to stay in game when round is actually over, players getting stuck in "game starting...", and many more.

CURRENT KNOWN BUGS:
  • Bots do not know what to do during a game with "No apple" mode enabled.
  • If two snakes cross at the same time, they will both live. This is not technically a bug, as when I asked players how they'd like to handle it, they decided it's more fun if they both live when this happens.
  • Sometimes when using Autopilot in local play, the bot appears longer to other players.
  • If you close the lid while hosting, you may be unable to start a game without re-opening Snakes.
  • All of these bugs will be fixed soon! Sorry about that.
To Start A Game:
You do NOT need a wifi connection to play with others that already have this game installed, but you do need WiFi enabled on your 3ds so local play can work.

Read the instructions on the bottom screen.


At the Start Screen, press START to quit.

Press X to display the QRCode to the latest .cia release of Snakes! Use this so friends can easily install the latest version and play with you. For installing this way, you need a wifi connection and a QRCode .cia installer: https://gbatemp.net/threads/release-qr-web-installer-cia-installer.416243/

Press A to host and start a one player game. HOLD A to wait for a 2nd player to connect.

Hold B to scan for a room. If more than one room is found, you will be able to choose them from a list. The selected room will be highlighted in yellow. If you see a list, press A to select that room to join it.


When joining a room that is in-progress, you will join as dead. This is to be fair to other players. When this happens you will have to wait for the end-of-round screen before you can interact. Press START to quit.

Press Y at the start screen to change your username. This will only be displayed IN the game, not when selecting a host to join.

Press SELECT for game options. Press B to go back a screen. Using directional input will allow you to highlight a selection in yellow. Press A to select. In some sub-menus, pressing A will highlight a special selection in red. When this happens, pressing directional input will change the red value. Press B or A to stop selecting the value. You can always press B to go back a screen.

Here are the game modes you can toggle any combination of:



    • Boundaries kill: Classic snake! You can't touch the boundaries, or they will kill you.
    • Tron mode: For a game of tron, enable this and "No apple" to experience a true tron cycle bike game! Snakes will always grow, and never have a true tail.
    • Disable diagonals: For those of you that think the CPad's automatic diagonals is too OP, this is for you.
    • Disable A: Don't like being able to go fast? Disable it here.
    • Disable B: Don't like being able to go slow? Disable it here.
    • Disable Y: Hate it when people teleport the apple? This is for you.
    • Enable R: Be able to go in reverse by pushing the R button.
    • No apple: Forget the apple, just kill everyone!
    • Apples double length: for easier advantage over other players. you get twice as long for every apple you get
    • Disappear on death: What it sounds like. Use this, no apple, and Tron mode for a tron cycle bike game mode.
    • Occasional holes: This makes all snakes occasionally have holes in them at random. On average, it happens 1/80 "dots". To put this in perspective, non-Tron games start with a length of 40 dots. Requested by Kingdra.
You can also select how many bots you want to play against in one-player. Select the top line that displays "Number of bots: 1" and press Right or Left to increase or decrease the bots.

You can also press up/down to select a specific bot to change its difficulty.
The difficulty range is as follows from most difficult to least: Insane > Hard > Medium > Easy.


How to Play:
This version of snake is a little different from the average!

Your snake is always moving, whether you want it to or not!


To change direction, Use the CPad (left thumbstick) for easy curves, or the D-Pad for precise directional changes.

Your snake is a unique color line that grows the more you eat apples. Don't run into yourself or other snakes! If you die, on the bottom screen it will say in parenthesis who you ran into.

Apples are white dots. Run over one and you will gain a point and get much longer than in the average snake game.

Hold A to go twice as fast!
Hold B to go twice as slow!

Press Y to move the apple once! You can only do this once until someone scores a point. You can still do this when you are dead! Annoy the last one standing by moving it around right before they get it!

Once everyone is dead, or the last one alive gets the highest score, the round will end. To continue, press A! You may not be able to press A right after the round ends, it will be ignored for one second. Once everyone presses A, the next round will begin! You can tell if someone is ready by noting a green R under their score.

You can also press L to toggle Autopilot. Whenever this is enabled, you forfeit that round even if you disable it before the round ends. This is to be fair to others.

Some META:
If the apple is stuck in the center of a square/circle of your long tail, you can teleport it by pressing Y, or you can move in layers (back and forth) to use up the least amount of space possible. Eventually the end of your tail will stop wrapping around the apple as it catches up to you.

Having trouble getting the apple? Hold B when getting close to it for fine maneuvers!

In multiplayer, you basically have one of two goals:
  • Get apples until you are big enough to kill everyone else
  • Kill everyone first by moving quickly, then grab the remaining apples needed to get the highest score.
  • The Cage Strategy: If you are longer than the last person alive, you can wrap around them and bite your own tail to prevent their escape. You obviously have gotten more apples than them, so they will be forced to suicide and lose. Suggested by elementalcode
Screen Score:
The Screen Score is the balancing between all game modes to give an accurate "score" for the end of the round. This score is calculated by all devices adding up all client-side snake lengths, and sharing this number. All devices agree to use the largest number shared, and this becomes the "Screen Score". If this screen score is higher than the winner's current High Score, it will display a message on all devices saying they have obtained a new High Score, and it will automatically save to the winner's save file on the root of the their SD card.

Credits:
  • Wolfvak - for graphics help like finding color from frame buffer. thanks a lot!
  • smealum - for ctrulib and other contributions to homebrew dev
  • fincs - graphical rendering! Helped me fix a major bug that slowed the game down.
  • Stary - both Stary and fincs both helped me discover and fix a bug that slowed the game down due to inefficient graphical rendering. Thank you so much!
  • zaksabeast - for helping me with this release
  • pickPickles - testing and recording gameplay with 8 players
 
Last edited by Desynched,

Pickpickles

Active Member
Newcomer
Joined
Oct 5, 2016
Messages
39
Trophies
0
Age
24
XP
138
Country
United States
Going to try this with 8 3DS systems, I'll record and post if anyone would like to see. Also, is it the more players, the more start-up delay between games?
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Going to try this with 8 3DS systems, I'll record and post if anyone would like to see. Also, is it the more players, the more start-up delay between games?
yes, the host sends all starting positions to all players. it could take a little longer
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Going to try this with 8 3DS systems, I'll record and post if anyone would like to see. Also, is it the more players, the more start-up delay between games?
I'm very interested to see! also. I am going to fix a bug tomorrow that causes the console to be flooded with messages when the host leaves the game options menu at the end of a round
 

Pickpickles

Active Member
Newcomer
Joined
Oct 5, 2016
Messages
39
Trophies
0
Age
24
XP
138
Country
United States
Alright, uploaded it, I have about 2 other videos if you want me to upload them. It's all on version 0.2.2. Snakes 3DS 8 Player Local Play:
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Alright, uploaded it, I have about 2 other videos if you want me to upload them. It's all on version 0.2.2. Snakes 3DS 8 Player Local
That looks so fun. I noticed you experienced a race case with the apple teleporting over and over. I'll try to replicate that and fix it. I thought I squashed that bug already :P

Thanks a ton for recording that! Awesome. Always wanted to see if it could handle 8 players.

The player got -512 points was probably due to a packet being misread. Do you remember the game options you had in that video?

If you remember the game options set during the game it would really help me replicate the bugs and fix them.
 
Last edited by Desynched,

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Yeah, so it looks like with 8 people there are some apple movement race conditions that sometimes happen.
Unfortunately, I can't replicate that bug on my own... So I'm going to try and patch what I think is causing it, but I'm not totally sure and I can't test it to see if it's fixed.
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Fixed a bug in the UDSSend method I was using that didn't set the packet's timestamp correctly. Also fixed the console being flooded after the host leaves the game options menu.

Welcome to version 0.2.3

--------------------- MERGED ---------------------------

Here's another video. Snakes 3DS Local Play Video 2:

Can I post these videos on the main post? It would be nice to show that it supports 8 players after all :)
 

Pickpickles

Active Member
Newcomer
Joined
Oct 5, 2016
Messages
39
Trophies
0
Age
24
XP
138
Country
United States
You
Fixed a bug in the UDSSend method I was using that didn't set the packet's timestamp correctly. Also fixed the console being flooded after the host leaves the game options menu.

Welcome to version 0.2.3

--------------------- MERGED ---------------------------


Can I post these videos on the main post? It would be nice to show that it supports 8 players after all :)
Go ahead, if you'd like. Maybe in around a week I'll be able to test 8 systems again if needed for newer releases.
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
I'm currently ironing out some better hole patching for version 0.2.4. This should make it so even if connection drops a few packets, it should draw what more or less actually happened.

This should prevent people from thinking or saying things like, "how did you go through my line?"

An example is when someone dies, but on your screen they went through the line a little before dying. This version will hopefully fix that, and other problems like it.

But, when you squash a bug, more can take it's place, so I will be ironing out this version some more before I release it.

A serious question, though: if both players cross at the same time, what should happen?

Right now, if both people cross at the same place at the same time, they both live, but it makes people go "wtf just happened?" You might say kill the one that gets there late. That's the problem, this only happens if they both arrive there at the same time.

Basically, I can't check for this until after it happened. I could erase the overshoot for both lines, and kill both of them.. But it's hard to say who should live and who shouldn't. If you think it would be more frustrating to die this way than to have someone pass through you, let me know.
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
I just visited a friend who's not interested in homebrew at all, and brought the soundhax files and Snakes, Lemmings and DrawAttack on a spare SD card. We played Snakes and had good fun and she is now a homebrew convert, so thanks for this :-)
It's definitely my pleasure to read that. Cheers!

Also, do you think players should die if they play chicken, and they cross paths at the same time? Even if it looks like, to each of them, that they are slightly ahead of the other?
 
Last edited by Desynched,
  • Like
Reactions: Quantumcat

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
Version 0.2.4 will also have a slight change in cpad movement. I have mostly squashed all bugs to do with hole patching, and gotten that working. However I want to make the cpad able to stay in diagonal mode if you let go of it while in diagonal mode. I might try to think of a way to help make it less suicidal, as well. Like maybe make it harder to accidentally turn in a small circle with barely any input... we shall see.

0.2.4 will be coming soon!
 

Desynched

Well-Known Member
OP
Member
Joined
Jan 4, 2017
Messages
107
Trophies
0
Age
37
XP
171
Country
United States
I have gotten most of 0.2.4 working. Now I have made a change to cheating... cheating will automatically move to an available spot if it would have died otherwise. This means a cheater will be harder to kill...

However, this also means I can test a "full screen" easily. I am testing the easter egg for people who fill the entire screen right now.

I may make use of this feature for "temporary" avoidance when people turn in a small circle using the cpad... Not sure yet.

Some aside:
I didn't have a clear goal for this game when I started this project. That's why a lot of the code refers to "bikes" instead of snakes. I originally just wanted to test UDS for gameplay... and only wanted something simple 'working'. Over time this game has been added onto until it was a fully functioning game.

The problem with this is the netcode. The netcode has a serious design flaw.

Because I didn't implement a true TCP, it only sends the latest movement change when it resends a dropped packet. This means if they drop packets on more than 1 movement change, the 1st movement change is completely lost to the void. In true TCP, this wouldn't be a problem, as it would send all messages in order. Basically, with this design flaw, if it lags particularly more than usual, people will simply teleport on your screen, when with true TCP, their path would snap into place even if they lagged for many seconds. I am debating whether or not to rewrite a lot of the netcode to implement a more true TCP, which would prevent any anomalies from occuring, but also make the game "lag" a tiny bit in an environment with interference (like a shitty microwave that has no shielding is turned on near the devices). The only upside to having this design flaw is the game is pretty snappy and the network isn't flooded much.
 
Last edited by Desynched,
  • Like
Reactions: Quantumcat

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • Sicklyboy @ Sicklyboy:
    maaaaan that's so awesome but I also don't want to fork over a hundo for it
  • Veho @ Veho:
    The fuuuuu---
  • Veho @ Veho:
    I thought it was an actual xBox at that price.
  • Sicklyboy @ Sicklyboy:
    I wanna grab a 360 Slim and a 360 E one of these days. Missed the boat of getting them at their lowest though, once they were discontinued. Could've got them for cheap back when I was a broke 20 something working at Target, but then again, I was a broke 20 something working at Target
  • Veho @ Veho:
    Being broke is no fun.
  • K3Nv2 @ K3Nv2:
    @Sicklyboy, $150 isn't that bad for a jtag slim on ebay
  • Veho @ Veho:
    I only wish it was actually playable.
  • Veho @ Veho:
    There's a guy on the Tube of You that makes playable mechanical arcade games out of Lego. This could work on the same principle.
  • Veho @ Veho:
    Just a couple of guys taking their manatee out for some fresh air, why you have to molest them?
  • Veho @ Veho:
    Stupid Chinese shop switched their shipping company and this one is slooooooow.
  • LeoTCK @ LeoTCK:
    STOP BUYING CHINESE CRAP THEN
  • LeoTCK @ LeoTCK:
    SUPPORT LOCAL PRODUCTS, MAKE REVOLUTION
  • LeoTCK @ LeoTCK:
    THEY KEEP REMOVING LOCAL SHIt AND REPLACING WItH INFERIOR CHINESE CRAP
  • LeoTCK @ LeoTCK:
    THATS WHY MY PARTNER CANT GET A GOOTWEAR HIS SIZE ANYMORE
  • LeoTCK @ LeoTCK:
    HE HAS BIG FOOT AND BIG DUCK
  • LeoTCK @ LeoTCK:
    d*ck i mean*
  • LeoTCK @ LeoTCK:
    lol
  • Veho @ Veho:
    Mkay.
  • Veho @ Veho:
    I just ordered another package from China just to spite you.
  • SylverReZ @ SylverReZ:
    Leo could not withstand communism.
  • SylverReZ @ SylverReZ:
    Its OUR products to begin with lol.
    SylverReZ @ SylverReZ: Its OUR products to begin with lol.