19 ms·
VVVVVV’s source code is now public, 10 year anniversary jam happening now
- MrGilbert 7y agoI always love when something closed source goes open. While I never played this game in particular (looks like I've missed something!), I love to study code. It's always interesting to see how other devs tackled a problem or just structured their code. Thanks a lot!
- ocdtrekkie 7y agoIndeed. Someone open sourcing their previously closed project will always get my upvote. :) In this case the code is likely pretty messy. The repo explains that it was ported from a Flash game and a lot of the bad hacks used to make it work in Flash were ported to C++ more or less verbatim.
- quietbritishjim 7y agoFrom the article: > 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.
- lukebitts 7y ago> which is annoying to do in flash for boring reasons Does anyone know what are these boring reasons? I've used AS2 and AS3 extensively and don't remember this ever being an issue
- uhoh-itsmaciek 7y agoSame here. The only thing I can think of is variable hoisting, but I don't think that's annoying enough to prefer this other approach.
- yarrel 7y agoThis isn't open. Studying this code then making anything too much like it might be a problem.
- jdlyga 7y agoIt's such a good game, I highly recommend it. The level design, the music, and the creative names of all the rooms you visit.
- ginko 7y agoQuite cool, although the license is quite strict: https://github.com/TerryCavanagh/VVVVVV/blob/master/LICENSE.md https://github.com/TerryCavanagh/VVVVVV/blob/master/LICENSE....
- teddyh 7y agoNo kidding. I sincerely doubt this actually qualifies as Open Source. It certainly can’t be distributed by, e.g., Debian.
- fiddlerwoaroof 7y agoThis probably could go in the Debian nonfree repo
- teddyh 7y ago…which is defined as being not distributed by Debian; it is, IIRC, the reason it exists.
- cjbprime 7y agoIt looks similar to e.g. Quake 3's license, source is open but assets aren't.
- simias 7y agoNot at all, Quake 3's source code is GPL[1]. You can totally sell a game made with Quake 3's source, you just have to redistribute the source as mandated by the GPL. v{6}'s license is more restrictive. The assets are a different problem. You can use the code without the assets and vice-versa. [1] https://github.com/id-Software/Quake-III-Arena/blob/master/COPYING.txt https://github.com/id-Software/Quake-III-Arena/blob/master/C...
- cjbprime 7y agoOops, I missed that extra clause, thanks.
- caconym_ 7y agoThis is a great game, by the way. If you haven't played it, you should.
- diegoperini 7y agoI've spent days speedrunning this game. Highly recommend it! I also suggest "Don't Look Back" from the same developer. It is a short but touching platformer that fills more like a book than a game without even telling a single word.
- JakeWesorick 7y agoI appreciate big successes revealing the jank-ness going on behind the scenes. It helps me fight imposter syndrome knowing that everyone is always learning.
- ddevault 7y agoThis is really great! I wish they wouldn't call it "open source", though. It looks like a source-available license: https://github.com/TerryCavanagh/VVVVVV/blob/master/LICENSE.md https://github.com/TerryCavanagh/VVVVVV/blob/master/LICENSE.... If Terry is reading this, please correct your article. The correct terminology is important! Open source is defined by the OSD, which this license doesn't qualify for: https://opensource.org/osd https://opensource.org/osd Kudos for releasing your game's source, though! Edit: I sent Terry an email and he agreed to change it <3 Thank you! Edit 2: Ethan Lee worked on this! Ethan Lee is an awesome person. Ethan is probably the single biggest contributor to gaming on Linux, and he's always worked in the background. Thanks Ethan, you rock, and deserve more credit.
- RHSeeger 7y ago> Open source is defined by the OSD To be a bit pedantic, your statement is a slightly ambiguous. They have a good/accurate definition of open source. They don't "define it" in that they can change the definition to mean "and the packaging must be blue" and that becomes part of what open source means.
- jordigh 7y agoYes, OSI is responsible for the OSD, but the term has gotten somewhat "genericised". It's like saying that the Kimberly-Clark company doesn't define what "kleenex" is anymore. Whenever this debates comes up everyone always says, "wait, the term existed before OSI", but no, it really did not. Essentially nobody was saying "open source" before 1998 when OSI and Tim O'Reilly started pushing "open source". https://thebaffler.com/salvos/the-meme-hustler https://thebaffler.com/salvos/the-meme-hustler "Open source" wasn't our idea, and the greatest marketing trick that OSI ever did was convince so many of us that it was.
- RHSeeger 7y agoNot kleenex, no, but open source as a term exists in the same way that escalator does. If the OSI was to change their definition, they would be wrong. The definition has transcended them. I honestly have a hard time understanding how people don't agree with that.
- jonahrd 7y agoI just replayed this over the holidays! Time for more :)
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- gameswithgo 7y agoIt says a lot about vvvvv that, I don't like this TYPE of game, lots of jump puzzles. But I like this game! It is just really well done.
- buryat 7y agoI remember getting this game from the first humble bundle and enjoying it, it had very simple gameplay, little to no time to get into and very enjoyable. Going to play it again!
- CodeArtisan 7y agoDid they use a transpiler or something for the mobile version? Lot of magic numbers and odd code like this if (t == 0) t = 0; if (t == 1) t = 20; if (t == 2) t = 14; if (t == 3) t = 15; if (t == 4) t = 13; if (t == 5) t = 16; or case 17: blocks[k].prompt = "Press ENTER to activate terminal"; if(mobilemenus) blocks[k].prompt = "Activate terminal"; blocks[k].script = "terminal_warp_1"; setblockcolour(k, "orange"); trig=0; break; case 18: blocks[k].prompt = "Press ENTER to activate terminal"; if(mobilemenus) blocks[k].prompt = "Activate terminal"; blocks[k].script = "terminal_warp_2"; setblockcolour(k, "orange"); trig=0; break; case 19: blocks[k].prompt = "Press ENTER to activate terminal"; if(mobilemenus) blocks[k].prompt = "Activate terminal"; blocks[k].script = "terminal_lab_1"; setblockcolour(k, "orange"); trig=0; break; from https://github.com/TerryCavanagh/VVVVVV/blob/master/mobile_version/src/entityclass.as https://github.com/TerryCavanagh/VVVVVV/blob/master/mobile_v...
- spiralganglion 7y agoThis just looks like typical game dev code to me. You treat the code like a scratchpad, exploring the space and looking for things that work well. Lots of things written once and never touched again, lots of things written with magic numbers because that makes it easier to delete.
- kevingadd 7y agoIt was hand-ported from Flash. I can imagine it being harder to do better than that in ActionScript especially if it was an older version.
- tombert 7y agoYou know, people like to crap on Flash (and there are valid reasons to do so), but I really miss how quick you could get a game built with it, while it still felt like "real" programming. With Flash, I felt like a nice "one-stop-shop" in a lot of ways; you could draw your graphics, animate them, and code them, and you could get a simple game made in an hour or two. I haven't tried Unity or really any other dedicated game engine, so maybe you get that feeling with those, but I will always be nostalgic for Flash; it really helped make programming "fun" for me.
- exlurker 7y agoPico8 for you, if you're OK with a retro look. Very quick and satisfying. :)
- tombert 7y agoI absolutely love Pico-8, and actually teach that to teenagers at the library on Saturday, and I will agree that it does somewhat satisfy some similar niche as Flash. That said, Pico-8 is (purposefully) very limited, and if you want to do something a bit more advanced than C64-era gaming, the limitations show. Flash is limited too, but not as much. It's obscenely fun to play with, definitely agree with you there.
- cartoonworld 7y agoYou can still do with haxe: https://haxe.org/use-cases/games/ https://haxe.org/use-cases/games/ Haxe is somewhat a flash clone. https://github.com/HaxeFoundation/haxe/ https://github.com/HaxeFoundation/haxe/
- royjacobs 7y agoAn interesting quote from the build instructions: " In particular, the Windows version absolutely positively must be compiled in Debug mode, with /RTC enabled. If you build in Release mode, or have /RTC disabled, the game behaves dramatically different in ways that were never fully documented (bizarre softlocks, out-of-bounds issues that don't show up in tools like Valgrind, stuff like that)." I wonder if people will spend the time to actually debug this properly now that the source is available.
- rob74 7y agoConsidering other quotes, like this one: "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." I wish those people the best of luck :)
- deleted 7y ago[deleted]
- Jare 7y agoCunning way to never have uninitialized variables!
- stebann 7y agoMaybe somebody who wants to extend this game? That would be funny.
- jadar 7y agoThis is one of my favorite games and one of my favorite game soundtracks!
- cambalache 7y agoI bought this game for 1 dollar (in the first Humble bundle) and I still consider it as of the most fun games ever. Simple controls, catchy music, interesting mechanics (for its time), nice difficulty, without being "unfair". It has everything. If you like platformers and simple games you should check it out.
- jandrese 7y agoI'm giving a side-eye to that 'without being "unfair"' comment. I remember a few levels with some real bullshit.
- SquareWheel 7y agoAny difficulty spikes were usually for the optional trinkets, and not required to beat the game.
- egypturnash 7y agoAh yes, fond memories of spending hours trying to navigate my little dude through several screens of Godzilla’s Spiky Asshole.
- ranger207 7y agoThe Awesome Games Done Quick speedrunning marathon [0] ran this game this morning. I didn't get a chance to see it, but I wonder if they mentioned anything about its tenth anniversary? Watch for the video here [1] after today's stream is archived. [0] gamesdonequick.com [1] https://www.reddit.com/r/speedrun/comments/ek9zmz/agdq_vod_thread_2020/ https://www.reddit.com/r/speedrun/comments/ek9zmz/agdq_vod_t...
- KapKap55 7y agoThis source code release was actually announced at AGDQ on a custom end-game screen once the runner completed it, which is why you're hearing about it now.
- ranger207 7y agoWhoops, I missed that. Have to watch it when I get home then!
- t_akosuke 7y agoTerry, the creator of the game, sends a $1k donation before the beginning of the run as well
- degenerate 7y agoHere is the direct link to watch (the run is 21 minutes total): https://www.twitch.tv/videos/533706108?t=05h29m30s https://www.twitch.tv/videos/533706108?t=05h29m30s
- lifthrasiir 7y agoAnd the exact occasion when the source code release was announced: https://www.twitch.tv/videos/533706108?t=05h52m06s https://www.twitch.tv/videos/533706108?t=05h52m06s
- bscphil 7y agoAwesome, thank you for posting this! 100% glitchless is what I do myself when I want to have a little fun, but I can't compete with speedrunners, my best time is 28 minutes and change.
- klodolph 7y agoIt’s always great to be able to study the source code for successful, released, real games. I will note that this is actually the source code of the C++ rewrite! The original game was written in Flash, and this version was apparently written by Simon Roth. My impressions: The source code is a bit of a tangle here. There are magic numbers (https://wiki.c2.com/?MagicNumber https://wiki.c2.com/?MagicNumber) all over the place, plenty of god classes (https://wiki.c2.com/?GodClass https://wiki.c2.com/?GodClass), and in general you will have to do a bit too much archaeology to figure out what a particular class or member function is supposed to do (the function and class names don’t give you enough, and there are no comments to help out). There are a few WTFs in here, like the "int i, j, j;" in Script.h. THAT SAID, This is not really out of the ordinary for successful, released, real games. It’s not really different in style from the Celeste Player code. https://github.com/NoelFB/Celeste/blob/master/Source/Player/Player.cs https://github.com/NoelFB/Celeste/blob/master/Source/Player/... But if you’re writing a game of this size or complexity, I recommend doing some refactoring work along the way. In my experience, this will reduce the amount of insanity in the project towards the second half of the development cycle. But I am always more impressed by ugly code behind a good game than I am by clean code behind an unreleased, unfinished, or unfun game.
- ehsankia 7y ago> This is not really out of the ordinary for successful, released, real games Well said. A lot of people will nitpick and talk big about how they would use proper abstraction and write very clean code, but probably none of those people have ever had a successful indie game out.
- klodolph 7y agoTo be fair, one of the most vocal advocates of higher code quality is Carmack, who has put out a few games. What I’ve seen is that it’s hard for someone who’s not released a game before and supported it post-release to know where and how you can sacrifice code quality for a faster development time.
- gcpwnd 7y ago
- scotth 7y agoIf anyone is looking for a really great game, you should check out Terry's latest, Dicey Dungeons. Incredible variation. Each episode and character has you discovering new strategies and play styles. 30% off on Steam right now: https://store.steampowered.com/app/861540/Dicey_Dungeons/ https://store.steampowered.com/app/861540/Dicey_Dungeons/
- gpvos 7y agoHmm, not anymore it seems (the 30% off).
- deleted 7y ago[deleted]
- pdpi 7y agoOh gods. VVVVVV's core mechanic is that you don't so much "jump" as you just flip gravity, and you only get to do so when your feet are firmly on the floor. This leads to some very interesting designs. The stage "Veni Vidi Vici (Doing Things The Hard Way)" is possibly the evilest level I've ever completed in a video game. Just a tiny little block, trivial to jump over, but the lack of a jump button means you have to... do things the hard way. https://www.youtube.com/watch?v=4CtiY5D6HCs https://www.youtube.com/watch?v=4CtiY5D6HCs
- dkersten 7y agoOh wow that brings back memories! That section took what felt like ages to eventually successfully perform.
- pdpi 7y ago400ish attempts for me IIRC. But then I could do it on demand for a while (I’ve since lost the muscle memory of course)
- ehsankia 7y agoI need to play through this again. So many great memories. It was one of the great early indie games that paved the way for thousands more, alongside World of Goo, Braid and Super Meat Boy.
- reificator 7y agoI just completed that on switch the other day, took me about 100 deaths. In fairness it's not the first time I played the game, but it's been nearly a decade since the last time.
- john-radio 7y agoWhat I love about VVVVVV is that there's almost no way to describe it and make it sound fun; if you just watched that video and know nothing about the game it would not seem fun at all; and yet it's one of the most fun video games I have ever played.
- danschumann 7y agoIt's easier to distract people than to give them traction. I think budgeting software would be the best way for a developer to write software which gives traction.
- joshu 7y agoi was so hoping this was about vvvv.
- ddevault 7y agoEthan Lee worked on this! Ethan Lee is an awesome person. Ethan is probably the single biggest contributor to gaming on Linux, and he's always worked in the background. Thanks Ethan, you rock, and deserve more credit.
- nurbel 7y agoindeed, Ethan Lee's portfolio is impressive ! http://www.flibitijibibo.com/index.php?page=Portfolio/Ports http://www.flibitijibibo.com/index.php?page=Portfolio/Ports I wouldn't have thought linux games were such a small thing, for a single person to have worked on so many of them
- jandrese 7y agoThat's an impressive collection of Indie games. This looks like the classic example of a consultant gig. You have some specialized knowledge of how to solve a problem that's easy when you know what you're doing. Indie devs can hire you for a day and check off that "Linux support" box so they can show up in a Humble Bundle and make a little more than you spent on the consultant with those 5% or so Linux gamers. > Dream Daddy: A Dad Dating Simulator WTF???
- meheleventyone 7y agoDating Dads is probably the least risqué thing in that genre.
- MattRix 7y agoIt was a very popular game!
- mintplant 7y agoIt's a comedy/meme game.
- cookiecaper 7y agoMaybe I've just been out of the scene too long, but can't let mention of Linux gaming luminaries go without Ryan C. Gordon of Loki Games/icculus.org. For many years, if there was a big project coming to Linux, Ryan Gordon was likely to be the wizard behind it. His homepage: http://icculus.org/ http://icculus.org/ Wikipedia: https://en.wikipedia.org/wiki/Ryan_C._Gordon https://en.wikipedia.org/wiki/Ryan_C._Gordon Patreon: https://www.patreon.com/icculus https://www.patreon.com/icculus
- newnewpdro 7y agoIt's helpful/inspiring to see you don't have to be the greatest programmer to create successful video games. Just skimming the code a bit reminded me I probably spend way too much time on elegant interfaces, clean implementations, and good naming, in my own games.
- mhast 7y agoWell, I think most games err to the "quick and dirty" side of things. Tracking down intermittent issues in code like this must be horrible, if not impossible. Leading to delayed projects, buggy releases and developer burn out.
- tibbon 7y agoOh this is really cool! I've been thinking how interesting this could be to backport to NES or C64. I'm guessing there isn't too much in the game happening that couldn't probably happen on those systems with minor modifications.
- bscphil 7y agoVVVVVV is probably my favorite game of all time. I've gotten so many great hours out of it, it's very relaxing. Thanks Terry for everything and now for releasing the code as well!
- VonGuard 7y agoTerry Cavanagh is one of the greatest game designers of our time. His simple mechanics and designs often remind me of something like Chess or Go, where a simple ruleset covers a massively deep game, or is used to communicate a story in a very minimalist fashion. Don't Look Back is one of my favorites: https://terrycavanaghgames.com/dontlookback/ https://terrycavanaghgames.com/dontlookback/ A few years back, he did a beta of a game called Four Letter Word... Though that's not the real title: http://distractionware.com/blog/2011/11/the-four-letter-word-thing/ http://distractionware.com/blog/2011/11/the-four-letter-word... The real title is a set of cryptic non-alphabet characters. It was like an Atari 2600 cartridge from a space alien. It featured 2600-style graphics, a hidden hard-as-nails FPS game, and a buncha hidden 2d content that seems simple at first, but was super intriguing. So crazy non-traditional, and with some obscure mechanics, it was one of my favorite things I've ever played, and he never finished it, sadly. I love cryptic games, and I love simple mechanics taken to extreme conclusions. That's why I adore Terry.
- StavrosK 7y agoSuper Hexagon is one of my favorite games ever, as it's extremely simple, extremely hard and extremenly engaging at the same time. Brilliant.
- enneff 7y agoSuper Hexagon is a game that when I first played it I could not believe it was possible to complete it, yet a year later I could get >60s in all the levels. An insane grind but somehow immensely satisfying.
- alexghr 7y agoGosh, this brings back sooo many good memories. If you haven't played it yet, you must! It is an excellent game, with superbly simple gameplay and excellent music!
- gfxgirl 7y agoI got this confused with VVVV https://vvvv.org/ https://vvvv.org/
- AndreyKarpov 7y agoThe PVS-Studio Team couldn't get past the source code of this game: https://www.viva64.com/en/b/0707/ https://www.viva64.com/en/b/0707/