btw also fuck you for veni vidi vici, jeez that took me a while!
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.
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.
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)
lol!
Also I like that every function starts with:
>jumpheld = true;
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'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.
And PPPPPP, the soundtrack for VVVVVV, is neat too!
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.
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).
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.
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
When I turned 30, I was like what the heck, I'll get a game boy color and play some games I played as a kid. That's since spiralled into gbc, gba (all models), psp, ds/3ds, ps1, ps2, xbox, 360 etc. Along with a now fairly sized collection of the requisite games.
I've been picking up all the games I missed on those platforms, because most people seem to have only played 2-6 games per platform when they were kids, same as me. I'm getting recommendations from friends of games I'd just never gotten into and coming out loving them and having many new perspectives on which game mechanics work and which don't. Especially given barely any modern games are coming out that are compelling enough for me; I barely ever gamed anymore before getting all this old stuff - new games just seem like the same old copy+paste for the most part.
Atm I'm playing through coded arms on psp, pikmin 2 on gc and timesplitters fp on xbox.
The gaming world has lost so much magic and fun stuff imo. From weird hardware like the motion sensor in kirby tilt n tumble, light sensor in boktai to game mechanics like the furious lassoing in pokemon ranger, or the unique gameplay of Archer Maclean's Mercury.
I haven't done a game jam in years but I'm so ready to smash it if I end up doing another one!
* 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.
What did he say, exactly?
The game looks fun, might give it a spin.
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.
Amazing that he ever made a decent game out of code like that!
--- 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.
I remember a time when people in this field were in this field because they wanted to be in this field. They wanted to do a good job. They learned on their own time, and practiced on their own time. They brought those skills into their employer and used those skills to make things better.
Now we have people who view IT as a route to management, and nothing more. They do shit work. They do a lot of it. They don't care.
I long for the time I remember when people actually cared. I feel like I'm one of the remaining sane people in the world.
See the _Taos_ operating system. Based around something that conventional programming knowledge said was impossible. Created by games developers because they could.
https://sites.google.com/site/dicknewsite/home/computing/byt...
TL;DR
All Taos code (except for some core device drivers for booting) is compiled for a nonexistent "Virtual Processor" (VP) and the VP bytecode is compiled to native code on the fly as it's loaded into RAM; the compiler is so efficient that the time delay of reading from hard disk is enough to generate native binaries with no significant delay.
Result: not only is the entire OS above the bootloader not just portable but will execute unmodified on any supported CPU from x86 to Arm to MIPS to PowerPC, but it was possible to have heterogenous SMP.
The Acorn RISC PC was an Arm desktop with an x86 second processor in a slot. Taos could execute on both at once.
Taos evolved into Intent and Elate, and nearly became the next-gen Amiga OS, before Tao Group collapsed. Some of the team used to hang out on HN.
The closest thing in the Unix world is Inferno, which is effectively UNIX 3.0 and is almost unknown today. Inferno embeds a bytecode runtime in the kernel, shared by the whole OS, and rewrites what was effectively Plan 9 2.0 in its own new descendant of C. So all binaries above the bootloader and kernel are cross-platform binaries that can execute directly on any CPU.
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.
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 */
Hard to argue with thatFinished a few days ago, great game, great music.
Nonetheless, VVVVVV’s graphics are exquisitely done, and, well, perfect? The graphical limitations – the technical underpinnings of the style? – those are a decision, and the result is… exactly what it should be.
(Hard to get into words! Came out kinda pretentious? *shrug*)
I'm still pissed they abandoned the EcmaScript 4 proposal back around 2007-2008.
I gather it's a game, it's graphically simple but in fact is really hard, and it was a commercial success early on (due to a Humble Bundle?) -- but I haven't really played games since the ZX Spectrum was new. Never heard of it, or the developer, and I have no idea what people are/were excited about.
(For other ZX Spectrum era folks: it sounds like a harder "Manic Miner" and I hated that.)
neonsunset•9mo ago
zahlman•9mo ago
phire•9mo ago
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.