When I was near the end of high school, my family visited London, and I was thinking about being a game dev. So I sent Terry Cavanagh an email, and to my surprise he completely agreed to get lunch.
He was extremely kind, gave me a lot of interesting life advice. I remember him saying that he got most of his ideas just from playing around with mechanics and experimenting a lot, he was never really one to get grand visions.
Anyways, great fellow, glad he opened source V (as he called it).
Daub · 23h ago
> I remember him saying that he got most of his ideas just from playing around with mechanics and experimenting a lot
This is important. Too many people assume that novel ideas come from abstract concepts. Yes they can, but they can equaly arise from playing with the medium.
nonethewiser · 19h ago
Kinda easy to imagine the opposite as well... having some idea and then implementing it and feeling unsatisfied. Especially a game. It may check all the boxes thematically and have the required features but just not feel fun.
Not to say starting with a firm idea is bad... more like it may be hard to avoid playing around and improvising with the medium in any case.
phatfish · 12h ago
Playing retro games seems like a good way to get ideas. The VVVVVV gravity mechanic is pretty much Gravity Man from Megaman 5 (I guess Megaman is not the first time it was used either).
Mining retro game mechanics was probably easier at the time VVVVVV was developed as the explosion of indy games has probably reused the best forgotten ones of the 80s/90s. It's getting close the time mechanics from 00s games can be reused though...
impendia · 11h ago
I don't see why you can't reuse whatever mechanics you like.
Return of the Obra Dinn was a 2018 mystery puzzle game, where you have to figure out how everyone died in an ill-fated voyage at sea. Amazing game.
I searched Reddit for "games like Obra Dinn", and this led me to Case of the Golden Idol, a 2022 game with similar mechanics. The developers were quite open about being inspired and influenced by Obra Dinn -- and they ended up creating something in the same genre, but very much their own creation, with their own flavor. And also very enjoyable.
Originality is nice, but I'm not at all convinced it's a prerequisite for quality.
setr · 4h ago
To further justify your position; Originality is just the unique composition of various unoriginal things. If you chase quality, originality will appear as a byproduct as you deal with the intricacies from your specific combination of features.
That is, everything interesting appears from the relationships between subjects, not the subjects themselves (the edges, not the nodes, of the graph). You could change any one major component of the game, explore it sufficiently, and you will inevitably have something sufficiently original despite 90% of the original core being duplicated — the nature of exploring the relationships thoroughly — chasing quality — will inevitably lead to a cascading series of changes until you reach the new stable point
unwind · 1d ago
Wow, that is cool! Did it help/affect your later choices with your career, did you end up a game developer, or at least try it or so? Always fun with closure! :)
gallerdude · 12h ago
I made a very mediocre platformer in my senior year of high school, published on itch.io. I ended up becoming a software developer, which I enjoy 80% as much, but without any burnout or worrying about the superstar economics of being a game dev. Once the singularity hits, maybe I'll make more games.
* You can't get a no if you don't ask
* "Never meet your heroes" is a sham and you need to meet a few shitbags before you can really appreciate the realest of people.
peterldowns · 1d ago
Incredibly fun game, I'm not a huge gamer but I remember buying the Humble Bundle just to get this. One of the few games that I've spent the time to finish. Awesome work, Terry, and thank you for the great times!
btw also fuck you for veni vidi vici, jeez that took me a while!
I remember buying the bundle and thinking "I'll just play that lightweight 2D platformer while waiting for the bigger, more interesting games in the bundle to download"...and then spending the entire evening on it.
devnullbrain · 20h ago
This video fails to capture the experience of making it past each screen but landing on the left
thih9 · 18h ago
It happened to me; but I've been through so many failures at that point that I didn't care if it took me one minute or one hour more.
And I remember actually enjoying the process! I was playing on my phone though and took many breaks - I liked this game a lot in this setting.
gsliepen · 1d ago
He apologized, didn't he? There was a screen named "I'm sorry" :P
h2zizzle · 21h ago
I finally got it after a good few hundred tries, iirc. Prep for having the patience to finish Final Fantasy XV's Pitioss dungeon.
My boyfriend at the time (who'd bought VVVVVV for me), on the other hand, was attempting a no-death-all-trinket run. I could never understand just how damn good he was at gaming.
Oh, and PPPPPP (the soundtrack) remains a staple. Especially the associated osu! Stream tracks.
theandrewbailey · 20h ago
I bought the first Humble Bundles. VVVVVV has been sitting around in my Steam library ever since. Guess I'll get around to playing it now.
beej71 · 18h ago
Everyone who has played this game knows what's behind that video link before they look at it. :)
pezezin · 19h ago
I managed to get all the trinkets, and oh man was that one painful!
But great game all around, I should play it again...
alterom · 21h ago
I'm ashamed to say that, as much as I appreciate the wonderful game, I gave up :)
levodelellis · 1d ago
That took me a long time too. It was rewarding tho
hbn · 18h ago
void Graphics::print_level_creator(...) {
/* We now display a face instead of "by {author}" for several reasons:
* - "by" may be in a different language than the author and look weird ("por various people")
* - "by" will be longer in different languages and break the limit that levels assume
* - "by" and author may need mutually incompatible fonts, e.g. Japanese level in Korean VVVVVV
* - avoids likely grammar problems: male/female difference, name inflection in user-written text...
* - it makes sense to make it a face
* - if anyone is sad about this decision, the happy face will cheer them up anyway :D */
There’s a lot of weird stuff in the C++ version that only really makes sense when you remember that this was made in flash first, and directly ported, warts and all. For example, maybe my worst programming habit is declaring temporary variables like i, j and k as members of each class, so that I didn’t have to declare them inside functions (which is annoying to do in flash for boring reasons). This led to some nasty and difficult to track down bugs, to say the least. In entity collision in particular, several functions will share the same i variable. Infinite loops are possible.
--- snip ---
This sounds so bad, and confirms my prejudice that gaming code is terrible.
nashashmi · 18h ago
This sounds great and confirms my suspicions that gaming coders learn more than standard coders do.
hombre_fatal · 17h ago
That just boils down to the trivial claim that building harder things teaches you more than building simpler things.
Games are one of the hardest things you can build since they have end to end complexity unlike most projects that can be cleanly decomposed into subsystems.
naikrovek · 16h ago
this is the correct takeaway, in my opinion.
game developers must consider things that people like enterprise developers never concern themselves with, like latency and performance.
these days, at least where I work, everything is dominated by network latency. no matter what you do in your application logic, network latency will always dominate response time. with games, there is no latency unless you are writing a multiplayer server, and there are many ways to solve that, some better than others.
playing a single player factorio game, having huge factories on five planets, robots flying around doing things for you, dozens of ships flying between planets destroying asteroids and picking up the rocks they leave behind, hundreds of thousands of inserters picking up items and putting them onto or removing them from conveyor belts, and updating the status of everything in real time at 60 frames a second kinda hints at what computers can do today if you keep performance a primary concern. corporate developers never have to think about anything even approaching this.
i'm convinced that 2-4 experienced game developers could replace at least 20 traditional business software developers at any business in the US, and probably 50 enterprise software developers anywhere. They aren't 5x-10x as expensive, either. Experienced game developers simply operate on another level than most of us.
Sohcahtoa82 · 14h ago
Factorio is black magic fuckery as far as I'm concerned.
Maybe it's because my factory hasn't gotten big enough or I'm playing a MOSTLY vanilla install, but all that's happening and the game is still only using 2% of my CPU.
I can't imagine the immense size of a factory you'd need before the game started stuttering.
naikrovek · 6h ago
Agreed. It’s an amazing example of just how much a computer can do in 16.6ms.
bracketfocus · 13h ago
The comment reads as ragebait or sarcasm but I actually can’t tell.
I don’t want to take away from Game developers but as a “corporate developer” I can attest that a lot of what you said about us is blatantly false.
I’ve spent a lot of time optimizing the performance of many backend services. This is a very standard practice. Having highly performant code can save companies a ton of money on compute.
In fact I’ve worked on a stateless web server who’s architecture was completely designed around a custom chunked/streaming protocol specifically to minimize latency. All changes to the service went through rigorous performance testing and wouldn’t be released if it failed certain latency and throughout thresholds.
naikrovek · 8h ago
Not rage at or sarcasm.
Maybe you have optimized your stuff so far that you have to use Compiler Explorer to tell you how many cycles a change will cost you in a user transaction. I doubt you do, but maybe you do. Someone surely does this, somewhere. Maybe finance developers do this actually.
I’m sure there are enterprise devs who throw all industry “best practices” out the window, because they all seem to be designed specifically to slow your software down, but I’ve never even heard of anyone doing that.
Maybe you’re an enterprise developer who writes code in a very strongly data-oriented way, rather than strongly matching the objects in their code to the simple concepts the users think of when they’re using their software.
I honestly hope you are, because I’ve been dying to see that stuff happen ever since I became an enterprise software developer and saw how things are really written.
I have always worked with people who strongly prefer to write their things in JavaScript or Python, because anything else is “too hard.” I’m only slightly exaggerating with that. Very slightly.
const_cast · 1h ago
In my experience in enterprise code nothing really matters except the DB. From a performance perspective. The amount of compute you can save in application code is peanuts next to a poorly written query or worse, a poorly designed data model.
I've seen code take 10 minutes (yes, really) to complete a request. Naturally that's 99.99% database time. The application code, which was C++, was nothing. If we switched to Java or even Python nobody would notice.
What made that request so bad was so simple, too. No pagination, no filtering. Instead, it was done in the application code. Yes, really, grabbing hundreds of thousands of rows and then filtering them in for loops and returning less than 100. Original code written who knows when (our source control only went back to 2011 so it's anyone's guess). Probably at some point grabbing all the rows didn't really matter. But then the table grew and grew and I'm sure it's scope grew, too, and suddenly the performance was unbelievably bad.
Anyway, if you can write half decent SQL you're already leaps and bounds ahead of most backend developers. Half of backend developers avoid SQL like the plague, and it leads to doing SQL-like things in application code, which is just asking to start a fire in the server room.
unilynx · 16h ago
People actually do this??
Suddenly having to prefix `this.` in JavaScript to every member bothers me a lot less
registeredcorn · 10h ago
I'm not sure if this a new idea, unlikely - but I'll write it out at risk of forgetting later:
Code can be terrible, but fun: interesting bugs created and found in novel ideas.
Code can be wonderful, but boring: a calculator application which is well written, but drab in implementation.
Code can be terrible, and boring: some poorly thought-out B2B product that has hundreds of edge cases, each of which have numerous, similar but distinct bugs.
Code can be wonderful, and interesting: Doom, etc.
jmmv · 1d ago
I’ll take the chance to reference Super Hexagon by the same author. Incredibly fun and addictive game as well while being super simple. I recall reading somewhere that the author spent only a day or so writing it.
And PPPPPP, the soundtrack for VVVVVV, is neat too!
addandsubtract · 23h ago
While on the subject of games from the same author, Dicey Dungeons is an incredible fun game. Similar to a deck building rogue like, but instead of cards, you have dices. There are like six unique characters, multiple challenges per character, the rules keep changing (forcing you to rethink the game), and the game is filled with lots of humor. There's also free DLC and mod content, which I haven't even got to.
oneeyedpigeon · 21h ago
That game definitely doesn't get the respect it deserves! It's basically the giant on whose shoulders Balatro stood. Without being the giant :(
I had no idea Super Hexagon was from the same developer! That was so much fun, while being a very different kind of game to VVVVVV.
I always find it interesting when indie developers pivot to an entirely new genre of game after some initial success, some wonderful gems came out that way (such as Fallen London -> Sunless Sea -> Cultist Simulator).
willis936 · 21h ago
I don't have any other reliable way to enter a flow state other than playing super hexagon for ten minutes.
rubslopes · 7h ago
Super Hexagon is my all-time favorite mobile game. I bought it in 2017 and I still play it to this day. I say it's the only game quick enough that you can have fun during an elevator ride.
symmetricsaurus · 1d ago
Second this recommendation!
It’s a super fun game to learn. It looks impossible to start out but then your brain adapts. It’s like seeing through the matrix.
gokaygurcan · 22h ago
I've spent so many hours of my life for this game.
Also shared it with many people and made them go crazy. I believe I still have 5 or 6 copies in my Steam inventory. Just in case.
Same for V, SMB, Braid and so many others. Sometimes, all you need is a little inspiration and crappy graphics.
agos · 23h ago
I'll add a shoutout to PPPPPPowerup!, an album of remixes of PPPPPP, and MMMMMM, an album of metal covers of PPPPPP.
BeFlatXIII · 6h ago
Thank you for telling me about MMMMMM. I have the two PPPPPP albums on CD, but never heard of the metal covers until now.
grep_it · 1d ago
There was a period of time in my life where I had recently moved to California from Canada and I was desperate for a job. I got a job doing door-to-door sales for Comcast. I hated it. I often sat in my car playing VVVVVV on my phone while shirking my responsibilities. Thank you Terry, for the reprieve.
kristoff_it · 22h ago
We have it packaged for Zig, just run `zig build` and you can play the game on Linux, macOS and Windows.
Awesome game. Good to see the code is authentically bad for an indie game of that era.
oofabz · 1d ago
Authentically bad is a good way to put it. My favorite part is the 3300 line Game::updatestate() function and its gigantic switch statement.
matheusmoreira · 21h ago
I think it's pretty charming. Games have so much abstraction these days it feels like there's no way to truly understand what it is they're even doing.
One can spend months agonizing over the true nature of things and how ideas and concepts relate to each other and eventually distill it all into some object oriented organization that implements not just your game but all possible games.
One can also just cycle the game's state machine in a big function, haha switch statement go brrr. Reminds me of the old NES games which would statically allocate memory for game objects, very much in the "structure of arrays" style, they too had game logic just like that.
Also reminds me of old electromechanical pinball machines. You can literally see the machine cycle.
It was originally written in flash, then ported to C++ which would explain some (not all) of the badness.
tomgp · 23h ago
I find the code genuinely inspiring. A lesson that being precious about code quality is not always the best way forward.
endemic · 16h ago
Yeah, code is a means to an end.
neuroelectron · 18h ago
There's nothing wrong with this code. It's called loop unrolling and it keeps the game performant.
rafram · 18h ago
Hah. Unroll your loops manually to give the compiler a break!
neuroelectron · 17h ago
Exceelnt sgugstion
damnitbuilds · 19h ago
He confesses to declaring i,j,k in every class so he didn't have to declare them in functions where he used them ( and (not surprisingly) that caused some nasty, difficult bugs ).
Amazing that he ever made a decent game out of code like that!
mystified5016 · 16h ago
Pretty much every game has all sorts of horrible nasty hacks. Admittedly, this is one of the worst I've seen.
Centigonal · 1d ago
I remember when a certain someone on an irc channel shared the vvvvvv flash demo with me and some others. That game, that period of time, the early Humble Bundles -- all of that was pretty formative for me. Crazy to think that was almost 15 years ago.
Ros2 · 1d ago
I think it was a beta and not a demo but either way, it contained 95% of the game not obfuscated in any way. So I saw the ActionScript code quite a while ago!
throw4847285 · 16h ago
Cavanagh is one of my biggest indie game heroes. He's done it all, from weirdo experiments, satirical exercises, addicting arcade games, and games with surprising depth. It just shows that when you have a really good grasp of the medium, there's no reason to be limited by genre. A great game is a great game.
I always felt that VVVVVV had c64-esque (or at least C64-inspired) graphics and music. I found out there's an actual C64 port of it: https://youtu.be/aY-OE5HPLv4
babuskov · 21h ago
VVVVVV is very simple game but exceptionally well made. Tight controls coupled with interesting level layouts made it both a puzzle to solve (how to do a section) and then required dexterity to execute it.
And music in this game is top tier.
I remember getting it in a bundle which I bought for some other game, and VVVVVV turned out to be my favorite.
kentonv · 18h ago
VVVVVV is a superb demonstration that graphics don't make a game -- music does.
RankingMember · 14h ago
I love the Hotline Miami series, but there's no way I'd love it nearly as much without that absolutely killer soundtrack.
sph · 15h ago
I recently saw a video review of VVVVVV, I was mildly interested, then the music came in, and it was an instant buy. Also the quote by Terry Cavanagh when asked if in retrospect there is anything he would change about the game: “I would change nothing.”
Finished a few days ago, great game, great music.
pier25 · 15h ago
Oh man it's been so many years since I've read some AS3 code.
I'm still pissed they abandoned the EcmaScript 4 proposal back around 2007-2008.
Was expecting the creative coding environment as well.
neonsunset · 1d ago
Was very confusing to see C++ and ActionScript until I realized this is VVVVVV and clearly not VVVV!
zahlman · 1d ago
I was confused trying to figure out how they would interoperate, or be useful in the same project. Turns out the desktop version is in C++ and the mobile version is in ActionScript. I assume there were good reasons for this.
phire · 1d ago
The names are kind of misleading, as there appear to be both iOS and android ports of the "desktop version". I'm not sure which version you actually get if you buy the game on iOS/Android.
The original desktop release in 2010 was based on flash (presumably using Adobe Air for desktop? There was also a flash web demo), but there were issues, and flash was really hard to port to linux. So they rewrote the entire game in c++ in 2011, for easier porting. It's that rewrite that is what's labeled as "desktop version". It's the most up-to-date and polished version.
The "mobile version" is a fork of the original 1.0 flash code base, and IMO it's only really interesting because it's much closer to what Terry originally wrote.
theyinwhy · 14h ago
Such a great gesture for one of the best platformers ever released.
gitroom · 19h ago
been cool seeing how much small games like this stick in my head years later honestly. you think chasing clean code slows down the creative part or helps it?
TZubiri · 1d ago
Loved the game, sweet and short.
It's one of those twists that reward programmers that can think outside of the box and execute instead of downloading some generic libraries and making yet another platformer.
zem · 22h ago
I don't know about short, some of those screens took forever to beat! (and I finally hit one I just couldn't and abandoned the game, but it was indeed fun up to then)
moralestapia · 1d ago
Wow, this is great, I really enjoyed this game when it came out, what a pleasant surprise to see it was open sourced, truly a work of art.
cess11 · 1d ago
At first I thought it would be some kind of successor to https://vvvv.org/, which I hadn't looked at in years.
He was extremely kind, gave me a lot of interesting life advice. I remember him saying that he got most of his ideas just from playing around with mechanics and experimenting a lot, he was never really one to get grand visions.
Anyways, great fellow, glad he opened source V (as he called it).
This is important. Too many people assume that novel ideas come from abstract concepts. Yes they can, but they can equaly arise from playing with the medium.
Not to say starting with a firm idea is bad... more like it may be hard to avoid playing around and improvising with the medium in any case.
Mining retro game mechanics was probably easier at the time VVVVVV was developed as the explosion of indy games has probably reused the best forgotten ones of the 80s/90s. It's getting close the time mechanics from 00s games can be reused though...
Return of the Obra Dinn was a 2018 mystery puzzle game, where you have to figure out how everyone died in an ill-fated voyage at sea. Amazing game.
I searched Reddit for "games like Obra Dinn", and this led me to Case of the Golden Idol, a 2022 game with similar mechanics. The developers were quite open about being inspired and influenced by Obra Dinn -- and they ended up creating something in the same genre, but very much their own creation, with their own flavor. And also very enjoyable.
Originality is nice, but I'm not at all convinced it's a prerequisite for quality.
That is, everything interesting appears from the relationships between subjects, not the subjects themselves (the edges, not the nodes, of the graph). You could change any one major component of the game, explore it sufficiently, and you will inevitably have something sufficiently original despite 90% of the original core being duplicated — the nature of exploring the relationships thoroughly — chasing quality — will inevitably lead to a cascading series of changes until you reach the new stable point
https://gallerdude.itch.io/the-journey-east-full
* You can't get a no if you don't ask * "Never meet your heroes" is a sham and you need to meet a few shitbags before you can really appreciate the realest of people.
btw also fuck you for veni vidi vici, jeez that took me a while!
https://www.youtube.com/watch?v=4CtiY5D6HCs
And I remember actually enjoying the process! I was playing on my phone though and took many breaks - I liked this game a lot in this setting.
My boyfriend at the time (who'd bought VVVVVV for me), on the other hand, was attempting a no-death-all-trinket run. I could never understand just how damn good he was at gaming.
Oh, and PPPPPP (the soundtrack) remains a staple. Especially the associated osu! Stream tracks.
But great game all around, I should play it again...
Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - Jan 2021 (16 comments)
Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - Jan 2020 (154 comments)
VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - Jan 2020 (1 comment)
VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - Jan 2020 (223 comments)
VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - March 2011 (1 comment)
--- snip ---
There’s a lot of weird stuff in the C++ version that only really makes sense when you remember that this was made in flash first, and directly ported, warts and all. For example, maybe my worst programming habit is declaring temporary variables like i, j and k as members of each class, so that I didn’t have to declare them inside functions (which is annoying to do in flash for boring reasons). This led to some nasty and difficult to track down bugs, to say the least. In entity collision in particular, several functions will share the same i variable. Infinite loops are possible.
--- snip ---
This sounds so bad, and confirms my prejudice that gaming code is terrible.
Games are one of the hardest things you can build since they have end to end complexity unlike most projects that can be cleanly decomposed into subsystems.
game developers must consider things that people like enterprise developers never concern themselves with, like latency and performance.
these days, at least where I work, everything is dominated by network latency. no matter what you do in your application logic, network latency will always dominate response time. with games, there is no latency unless you are writing a multiplayer server, and there are many ways to solve that, some better than others.
playing a single player factorio game, having huge factories on five planets, robots flying around doing things for you, dozens of ships flying between planets destroying asteroids and picking up the rocks they leave behind, hundreds of thousands of inserters picking up items and putting them onto or removing them from conveyor belts, and updating the status of everything in real time at 60 frames a second kinda hints at what computers can do today if you keep performance a primary concern. corporate developers never have to think about anything even approaching this.
i'm convinced that 2-4 experienced game developers could replace at least 20 traditional business software developers at any business in the US, and probably 50 enterprise software developers anywhere. They aren't 5x-10x as expensive, either. Experienced game developers simply operate on another level than most of us.
Maybe it's because my factory hasn't gotten big enough or I'm playing a MOSTLY vanilla install, but all that's happening and the game is still only using 2% of my CPU.
I can't imagine the immense size of a factory you'd need before the game started stuttering.
I don’t want to take away from Game developers but as a “corporate developer” I can attest that a lot of what you said about us is blatantly false.
I’ve spent a lot of time optimizing the performance of many backend services. This is a very standard practice. Having highly performant code can save companies a ton of money on compute.
In fact I’ve worked on a stateless web server who’s architecture was completely designed around a custom chunked/streaming protocol specifically to minimize latency. All changes to the service went through rigorous performance testing and wouldn’t be released if it failed certain latency and throughout thresholds.
Maybe you have optimized your stuff so far that you have to use Compiler Explorer to tell you how many cycles a change will cost you in a user transaction. I doubt you do, but maybe you do. Someone surely does this, somewhere. Maybe finance developers do this actually.
I’m sure there are enterprise devs who throw all industry “best practices” out the window, because they all seem to be designed specifically to slow your software down, but I’ve never even heard of anyone doing that.
Maybe you’re an enterprise developer who writes code in a very strongly data-oriented way, rather than strongly matching the objects in their code to the simple concepts the users think of when they’re using their software.
I honestly hope you are, because I’ve been dying to see that stuff happen ever since I became an enterprise software developer and saw how things are really written.
I have always worked with people who strongly prefer to write their things in JavaScript or Python, because anything else is “too hard.” I’m only slightly exaggerating with that. Very slightly.
I've seen code take 10 minutes (yes, really) to complete a request. Naturally that's 99.99% database time. The application code, which was C++, was nothing. If we switched to Java or even Python nobody would notice.
What made that request so bad was so simple, too. No pagination, no filtering. Instead, it was done in the application code. Yes, really, grabbing hundreds of thousands of rows and then filtering them in for loops and returning less than 100. Original code written who knows when (our source control only went back to 2011 so it's anyone's guess). Probably at some point grabbing all the rows didn't really matter. But then the table grew and grew and I'm sure it's scope grew, too, and suddenly the performance was unbelievably bad.
Anyway, if you can write half decent SQL you're already leaps and bounds ahead of most backend developers. Half of backend developers avoid SQL like the plague, and it leads to doing SQL-like things in application code, which is just asking to start a fire in the server room.
Suddenly having to prefix `this.` in JavaScript to every member bothers me a lot less
Code can be terrible, but fun: interesting bugs created and found in novel ideas.
Code can be wonderful, but boring: a calculator application which is well written, but drab in implementation.
Code can be terrible, and boring: some poorly thought-out B2B product that has hundreds of edge cases, each of which have numerous, similar but distinct bugs.
Code can be wonderful, and interesting: Doom, etc.
And PPPPPP, the soundtrack for VVVVVV, is neat too!
I always find it interesting when indie developers pivot to an entirely new genre of game after some initial success, some wonderful gems came out that way (such as Fallen London -> Sunless Sea -> Cultist Simulator).
It’s a super fun game to learn. It looks impossible to start out but then your brain adapts. It’s like seeing through the matrix.
Also shared it with many people and made them go crazy. I believe I still have 5 or 6 copies in my Steam inventory. Just in case.
Same for V, SMB, Braid and so many others. Sometimes, all you need is a little inspiration and crappy graphics.
https://github.com/allyourcodebase/VVVVVV
One can spend months agonizing over the true nature of things and how ideas and concepts relate to each other and eventually distill it all into some object oriented organization that implements not just your game but all possible games.
One can also just cycle the game's state machine in a big function, haha switch statement go brrr. Reminds me of the old NES games which would statically allocate memory for game objects, very much in the "structure of arrays" style, they too had game logic just like that.
Also reminds me of old electromechanical pinball machines. You can literally see the machine cycle.
https://youtu.be/ue-1JoJQaEg
https://youtu.be/E3p_Cv32tEo
lol!
Also I like that every function starts with:
>jumpheld = true;
Amazing that he ever made a decent game out of code like that!
https://store.steampowered.com/app/269270/LOVE/
And music in this game is top tier.
I remember getting it in a bundle which I bought for some other game, and VVVVVV turned out to be my favorite.
Finished a few days ago, great game, great music.
I'm still pissed they abandoned the EcmaScript 4 proposal back around 2007-2008.
The original desktop release in 2010 was based on flash (presumably using Adobe Air for desktop? There was also a flash web demo), but there were issues, and flash was really hard to port to linux. So they rewrote the entire game in c++ in 2011, for easier porting. It's that rewrite that is what's labeled as "desktop version". It's the most up-to-date and polished version.
The "mobile version" is a fork of the original 1.0 flash code base, and IMO it's only really interesting because it's much closer to what Terry originally wrote.
It's one of those twists that reward programmers that can think outside of the box and execute instead of downloading some generic libraries and making yet another platformer.
The game looks fun, might give it a spin.