I was pleasantly surprised when a friend texted me after work to say this game was on Hacker News. I hope it brought some small joy to your day. Some comments helped identify some minor tweaks. I do not expect to have time or motivation to make bigger changes soon. Feel free to make GitHub issues.
You might find this fun. There this sonic the hedgehog special stage from sonic three that takes place on a sphere. Recently I made a remake of it and they project a 2d grid onto a sphere, but the projection adjusts as you move, so no matter where you go, you never end up at a pole. The poles always stay on your sides.
The other interesting bit is that you can have an arbitrary map size and just repeat it. The game is 32x32 but it could be whatever.
Thanks for writing this game! I came across it after seeing your Checkers written in Rust for WASM game[0], and thought it deserved an HN submission of its own.
The game looks really good, although I think it'd be improved if the sphere was a bit smaller. It feels like it takes too long for the game to become difficult
Looking at the comments and people trying to verify what the real maximum score is. I wrote a (Cartesian) snake for fun once, that was Pascal and an obscure 8-bit platform, but most fun was the pure mechanics of it; the rest was just boring, completionist details. As dopamine plateaued, I barely just worked out a formula for a curve to spread the maximum snake length across a set number of levels so that it ends at 100% of gameplay area and remains winnable. But maximum score? No idea, I couldn't be arsed to work it out. But I finished the project! https://github.com/wowczarek/dlp-misc/tree/main/spacew0rm
And while you’re at it fix it so you can’t do a text selection of the game area. I’m having both zooming and selection happening and they make it unplayable.
Is there a place I can read about taking unique creative approaches to original topics/games/concepts like this? "Thinking Different with Basics". I like this so much but its because it gets at an essence of creativity applied to the obvious I don't know how to learn or search for:(
I like his perspective that creativity = using an existing pattern in a new context.
You can be more creative by first consuming lots of different patterns in all sorts of contexts (e.g. playing lots of games, and also reading and experiencing lots of topics unrelated to games).
Then you try all the different permutations of patterns in your mental toolbox. Kinda like how the sibling comment rattled off different what-ifs.
Sadly i dont know if this can be learned persay as it wobbles along the “creativity” line.
Id say that youd need to have a genuine curiosity along with a “what if” mindset that is hard to teach. The path to these ideas is often a train of what ifs, what if snake was 3d? Then what if it was 3d on a planet? What about a cube?
You can take the same thought to other games. What if pong was 3d or on a sphere? What if pong supported 100 people playing together? How would that work?
Often what ifs will be deadends or uninteresting. It is like sales, a volume game. But u got to like the process or you wont get far.
Obviously 666, 1337, 9223372036854775807 etc... in the leaderboard are fake, so if I had to try to figure out what the highest legit score is, I'd guess milkman with 227. Unless someone was clever enough to make an inconspicuous fake number :)
Very neat. Would be cool to see in 3d (cross eye option [1]!? :D)
I think an accelerated initial growth is needed. Maybe start with a growth of 5 and have it decrease so it's a 1 at around 50. It takes a bit too long to get to something non trivial, especially since it seems there is a bias to put dots on the opposite side, causing the first 5 minutes to be mostly going in a straight circumnavigations.
Very cool but on iOS safari, if I click one of the buttons twice too quickly it zooms in and I can’t see the full screen or the other button. Hard to zoom back out at least on my phone.
Beyond 100 it becomes a game of avoiding the The Loxodrome of Terror by spiralling into an unescapeable trap.
Easiest pattern to get some more length is to do some sort of spherical sinusoid by following the meridian and then some optional final fill loop for the poles.
Overall it feels a bit slow to get to the part where it becomes tricky
For optimal fill you might end up with something like a tennis ball/baseball pattern instead.
I wish there is a mode where the snake go toward where my mouse cursor is (similar to agar.io), as opposed to having the controls turn the snake. So in update function where we have the "direction-=.08" and "direction+=.08" bits, "direction" would be assigned a value either due to the pressed state of the 4 arrow keys, or some arctangent of mouse coordinates:
Alternatively, keep the current controls, but rotate the whole world to match the snake's direction of movement. Current mix of non-rotating world with rotating controls makes the game more difficult, most snake variants I have played opted for non-rotating world with non-rotating controls (e.g. press right to go right, independent of current snake heading, as opposed to turning clockwise).
as things get more difficult it becomes increasingly important to control space-use and the resultant territory occupied by the snek; at a certain point I switched priorities from "get the target as quickly as possible" to "maintain a regular controlled movement"
Something that leapt out at this point was, there is no tension or penalty for doing so.
Opportunity to increase game challenge/skill requirement: introduce an incentive to get the target as quickly as possible.
One interesting way to do this would be to make the ball get bigger over time, with bigger balls adding more segments to the snek.
I like this sort of approach because it leaves supports two distinct play styles/cases:
- some players would see this as incentive to get to the target ASAP, to avoid growing more than necessary, thus prolonging their survival at the same difficulty
- others would see an incentive to let avoid the target, especially if it grows non-linearly, so as to jump to increased difficulty ASAP
I tried it, but really shouldn't have as I am colorblind and so matches were quite difficult. Some color games have an option for a colorblind-safe palette, maybe consider that?
I noticed that the dots on the surface of the sphere are evenly spaced out close to the equator, but because there is a consistent number of dots in each ring, they are very close together when you reach the poles.
One way to get dots evenly spread out over the surface of a sphere is to use a phyllotaxis spiral pattern.
I like the surface dots like it is. It gives me two points of reference at the poles, and adds intuition for how long it takes to go around the sphere.
This reminds me of Snake Galaxy. I'm so sad it's not available anymore, it was an adorable spherical snake game on early iPhone circa 2010 era. I really miss the little Paris planet.
Quite a good implementation, got to 62 and was playing a "space filling curve" strategy to bleed off some of the length. Looking at the leader-board I suspect some people are just sending off their own custom submissions [1].
There is a maximum theoretical length and the sphere actually allows you to wrap around it, Rod of Asclepius style, until you get there - picking up an apple on each cycle. I suspect it's not more than a few hundred segments though so those ~600 submissions are probably someone gaming the submission with a forged score.
Good game concept and implementation. Run smoothly even on phone.
Extend the capability to include timer, boost of speed and even levels with enemies.. I would love to also try having a kind of multi level support for moves.. Like 3 layers to explore the 3d navigation with layers of ground for moves.
Awesome experiments that could easily become viral! :)
Small issue: I accidentally right-clicked one of the arrow buttons and it stuck in the pressed position, causing the snake to curl into itself and end my game before I could left-click out of the context menu.
Really fun!
Developing my intuition for a sphere as I played was a nice experience.
As other commenters have mentioned, the game ramps up a bit too slowly. Perhaps it would worth adding more than one food item.
What is the strategy after it gets longer than a great circle? Wiggle with constant frequency to "fold" it? Constantly move in one direction to form a spiral? Something completely different?
Lovely. Would love if it canvas was bigger on desktop. Zoomed in 3x is much better but pix-elated. The first 50 or so levels were very easy. Started getting difficult around 90+.
it takes forever for it to get tricky. if you turn 4 directions it would have the same tension as the original. you could keep the same controls with obstacles. a maze could be fun-- kind of _irritating stick_, but _snake_, which, naturally, you'd call _stick snake_.
kevinAlbs|1 month ago
bryantwolf|1 month ago
The other interesting bit is that you can have an arbitrary map size and just repeat it. The game is 32x32 but it could be whatever.
https://blue-sphere.fly.dev/play?map=s3-01
Anyway, great stuff you have here!
hirsin|1 month ago
Thanks for a fun mobile friendly test run!
antirez|1 month ago
JumpCrisscross|1 month ago
[1] https://mathworld.wolfram.com/Hypersphere.html
subset|1 month ago
[0] https://github.com/kevinAlbs/Checkers
ImJasonH|1 month ago
unknown|1 month ago
[deleted]
bogtog|1 month ago
re|1 month ago
elicash|1 month ago
giarc|1 month ago
wowczarek|1 month ago
Looking at the comments and people trying to verify what the real maximum score is. I wrote a (Cartesian) snake for fun once, that was Pascal and an obscure 8-bit platform, but most fun was the pure mechanics of it; the rest was just boring, completionist details. As dopamine plateaued, I barely just worked out a formula for a curve to spread the maximum snake length across a set number of levels so that it ends at 100% of gameplay area and remains winnable. But maximum score? No idea, I couldn't be arsed to work it out. But I finished the project! https://github.com/wowczarek/dlp-misc/tree/main/spacew0rm
umvi|1 month ago
Ecco|1 month ago
xp84|1 month ago
kevinAlbs|1 month ago
wanderingstan|1 month ago
`<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">`
byearthithatius|1 month ago
zemo|1 month ago
https://theoryoffun.com/
https://mitpress.mit.edu/9780262240451/rules-of-play/
https://www.sciencedirect.com/book/monograph/9780123694966/t...
https://en.wikipedia.org/wiki/Chris_Crawford_on_Game_Design
https://en.wikipedia.org/wiki/Game_Design_Workshop
wonger_|1 month ago
I like his perspective that creativity = using an existing pattern in a new context.
You can be more creative by first consuming lots of different patterns in all sorts of contexts (e.g. playing lots of games, and also reading and experiencing lots of topics unrelated to games).
Then you try all the different permutations of patterns in your mental toolbox. Kinda like how the sibling comment rattled off different what-ifs.
EDIT oh and oblique strategies might be helpful to come up with variations on an existing theme: https://stoney.sb.org/eno/oblique.html
rustystump|1 month ago
Id say that youd need to have a genuine curiosity along with a “what if” mindset that is hard to teach. The path to these ideas is often a train of what ifs, what if snake was 3d? Then what if it was 3d on a planet? What about a cube?
You can take the same thought to other games. What if pong was 3d or on a sphere? What if pong supported 100 people playing together? How would that work?
Often what ifs will be deadends or uninteresting. It is like sales, a volume game. But u got to like the process or you wont get far.
Aardwolf|1 month ago
byearthithatius|1 month ago
neanderzander|1 month ago
Reminds me of this video, where the dev compares spherical and hyperbolical geometries (albeit a dimension higher):
https://www.youtube.com/watch?v=yY9GAyJtuJ0
myhf|1 month ago
https://hyperrogue.miraheze.org/wiki/Land_of_Eternal_Motion
nomel|1 month ago
I think an accelerated initial growth is needed. Maybe start with a growth of 5 and have it decrease so it's a 1 at around 50. It takes a bit too long to get to something non trivial, especially since it seems there is a bias to put dots on the opposite side, causing the first 5 minutes to be mostly going in a straight circumnavigations.
[1] https://www.kula3d.com/how-to-use-the-cross-eyed-method
therobots927|1 month ago
kevinAlbs|1 month ago
p1mrx|1 month ago
https://www.ticalc.org/archives/files/fileinfo/96/9683.html
westurner|1 month ago
Snake (video game genre) https://en.wikipedia.org/wiki/Snake_(video_game_genre) has a picture of Hyper-Wurm on a TRS-80, which looks curved or spherical
Is there already a Snake on a Plane?
jp57|1 month ago
rezmason|1 month ago
Related projects:
https://wakaba.c3.cx/s/games/swear
https://milksnake.c3.cx
DrPhish|1 month ago
https://www.pouet.net/prod.php?which=61035
painted-now|1 month ago
mxfh|1 month ago
Easiest pattern to get some more length is to do some sort of spherical sinusoid by following the meridian and then some optional final fill loop for the poles.
Overall it feels a bit slow to get to the part where it becomes tricky
For optimal fill you might end up with something like a tennis ball/baseball pattern instead.
see fig 5 here
https://arxiv.org/abs/1005.4609
omoikane|1 month ago
https://github.com/kevinAlbs/SphericalSnake/blob/b907738476d...
Alternatively, keep the current controls, but rotate the whole world to match the snake's direction of movement. Current mix of non-rotating world with rotating controls makes the game more difficult, most snake variants I have played opted for non-rotating world with non-rotating controls (e.g. press right to go right, independent of current snake heading, as opposed to turning clockwise).
aziaziazi|1 month ago
Only tested on mobile safari yet.
tptacek|1 month ago
aaroninsf|1 month ago
as things get more difficult it becomes increasingly important to control space-use and the resultant territory occupied by the snek; at a certain point I switched priorities from "get the target as quickly as possible" to "maintain a regular controlled movement"
Something that leapt out at this point was, there is no tension or penalty for doing so.
Opportunity to increase game challenge/skill requirement: introduce an incentive to get the target as quickly as possible.
One interesting way to do this would be to make the ball get bigger over time, with bigger balls adding more segments to the snek.
I like this sort of approach because it leaves supports two distinct play styles/cases:
- some players would see this as incentive to get to the target ASAP, to avoid growing more than necessary, thus prolonging their survival at the same difficulty
- others would see an incentive to let avoid the target, especially if it grows non-linearly, so as to jump to increased difficulty ASAP
greenwallnorway|1 month ago
I see a person or two I know in there haha
kevinAlbs|1 month ago
amichail|1 month ago
PluriSnake is a snake-based color matching daily puzzle game.
Color matching is used in two ways: (1) matching circles creates snakes, and (2) matching a snake’s color with the squares beneath it destroys them.
Snakes, but not individual circles, can be moved by snaking to squares of matching color, as long as their paths are not blocked by other snakes.
The goal is to score as highly as you can. Destroying all the squares is not required for your score to count.
Of course, there is more to it than that as you will see.
Try it out:
https://testflight.apple.com/join/mJXdJavG
Any feedback would be appreciated. Have fun!
shermantanktop|1 month ago
bardackx|1 month ago
kristopolous|1 month ago
tilting the phone as the control...
Here's a demo of the control since mdn didn't have one:
https://9ol.es/pitch.html
Also a more practical thing while we're doing this is a thumb drag control, that'd make this a hit.
Like flappy bird level.
aziaziazi|1 month ago
Only tested on mobile safari yet.
jm_l|1 month ago
One way to get dots evenly spread out over the surface of a sphere is to use a phyllotaxis spiral pattern.
https://demonstrations.wolfram.com/PhyllotaxisSpiralPatternO...
jmpeax|1 month ago
cluckindan|1 month ago
caterama|1 month ago
https://toucharcade.com/2009/04/24/snakegalaxy-puts-a-new-sp...
bArray|1 month ago
[1] https://kevinalbs.com/spherical_snake/leaderboard/
tgtweak|1 month ago
H3X_K1TT3N|1 month ago
black_knight|1 month ago
unknown|1 month ago
[deleted]
nicoboo|1 month ago
Extend the capability to include timer, boost of speed and even levels with enemies.. I would love to also try having a kind of multi level support for moves.. Like 3 layers to explore the 3d navigation with layers of ground for moves.
Awesome experiments that could easily become viral! :)
darkvertex|1 month ago
baq|1 month ago
matoseb|1 month ago
MitchSchwartz|1 month ago
g4zj|1 month ago
Small issue: I accidentally right-clicked one of the arrow buttons and it stuck in the pressed position, causing the snake to curl into itself and end my game before I could left-click out of the context menu.
kevinAlbs|1 month ago
JBits|1 month ago
weinzierl|1 month ago
throwawayk7h|1 month ago
thelightherder|1 month ago
fuzzythinker|1 month ago
Would love to be able to start with n-length via url params (should be disqualify from LB if start w/ n-length.
tantalor|1 month ago
H3X_K1TT3N|1 month ago
plehoux|1 month ago
dherls|1 month ago
FpUser|1 month ago
rustystump|1 month ago
You can fix that with a simple css prop.
Very cool btw
amadeoeoeo|1 month ago
shomp|1 month ago
pasquinelli|1 month ago
JasonADrury|1 month ago
pryelluw|1 month ago
tigereyeTO|1 month ago
arthurcolle|1 month ago
great work
bobse|1 month ago
[deleted]
danielfalbo|1 month ago
EricRiese|1 month ago
vlachen|1 month ago
[1] https://tomlehrersongs.com/lobachevsky/
gaigalas|1 month ago
Nice game though!
rationalist|1 month ago
JackWot|1 month ago
JackWot|1 month ago
RIMR|1 month ago
danielheath|1 month ago
cluckindan|1 month ago
flenserboy|1 month ago
willvk|1 month ago
mattfrommars|1 month ago
nacozarina|1 month ago
olivierestsage|1 month ago
toroszo|1 month ago
unknown|1 month ago
[deleted]
unknown|1 month ago
[deleted]
lovegrenoble|1 month ago
fatesblind|1 month ago
nickandbro|1 month ago
dwa3592|1 month ago
maybe add a sound effect :)
chrisallick|1 month ago
maximgeorge|1 month ago
[deleted]
maximgeorge|1 month ago
[deleted]
gapeslape|1 month ago
- is small compared to human level speeds (say 2km/h / 1.25mph)
- things could move faster than the speed of light.
I really wonder how it would feel to explore this world visually. For example:
- an object in front of me accelerates from 0 to above the speed of light
- I'm in a car, looking backwards, going from 0 to above the speed of light
I guess one could easily simulate that in a virtual world, no?
naftalibeder|1 month ago
https://gamelab.mit.edu/games/a-slower-speed-of-light/
unknown|1 month ago
[deleted]