TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

VVVVVV’s source code is now public, 10 year anniversary jam happening now

870 pointsby ciroduranover 5 years ago

30 comments

klodolphover 5 years ago
It’s always great to be able to study the source code for successful, released, real games.<p>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.<p>My impressions: The source code is a bit of a tangle here. There are magic numbers (<a href="https:&#x2F;&#x2F;wiki.c2.com&#x2F;?MagicNumber" rel="nofollow">https:&#x2F;&#x2F;wiki.c2.com&#x2F;?MagicNumber</a>) all over the place, plenty of god classes (<a href="https:&#x2F;&#x2F;wiki.c2.com&#x2F;?GodClass" rel="nofollow">https:&#x2F;&#x2F;wiki.c2.com&#x2F;?GodClass</a>), 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 &quot;int i, j, j;&quot; in Script.h.<p>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.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;NoelFB&#x2F;Celeste&#x2F;blob&#x2F;master&#x2F;Source&#x2F;Player&#x2F;Player.cs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;NoelFB&#x2F;Celeste&#x2F;blob&#x2F;master&#x2F;Source&#x2F;Player&#x2F;...</a><p>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.<p>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.
评论 #22016338 未加载
评论 #22013808 未加载
评论 #22015413 未加载
评论 #22018621 未加载
评论 #22013000 未加载
评论 #22012935 未加载
pdpiover 5 years ago
Oh gods.<p>VVVVVV&#x27;s core mechanic is that you don&#x27;t so much &quot;jump&quot; 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.<p>The stage &quot;Veni Vidi Vici (Doing Things The Hard Way)&quot; is possibly the evilest level I&#x27;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.<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4CtiY5D6HCs" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4CtiY5D6HCs</a>
评论 #22014078 未加载
评论 #22013854 未加载
评论 #22015964 未加载
评论 #22012919 未加载
评论 #22016346 未加载
评论 #22016844 未加载
评论 #22013954 未加载
评论 #22013687 未加载
评论 #22016008 未加载
VonGuardover 5 years ago
Terry 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&#x27;t Look Back is one of my favorites: <a href="https:&#x2F;&#x2F;terrycavanaghgames.com&#x2F;dontlookback&#x2F;" rel="nofollow">https:&#x2F;&#x2F;terrycavanaghgames.com&#x2F;dontlookback&#x2F;</a><p>A few years back, he did a beta of a game called Four Letter Word... Though that&#x27;s not the real title: <a href="http:&#x2F;&#x2F;distractionware.com&#x2F;blog&#x2F;2011&#x2F;11&#x2F;the-four-letter-word-thing&#x2F;" rel="nofollow">http:&#x2F;&#x2F;distractionware.com&#x2F;blog&#x2F;2011&#x2F;11&#x2F;the-four-letter-word...</a> The real title is a set of cryptic non-alphabet characters.<p>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&#x27;ve ever played, and he never finished it, sadly. I love cryptic games, and I love simple mechanics taken to extreme conclusions. That&#x27;s why I adore Terry.
评论 #22017611 未加载
royjacobsover 5 years ago
An interesting quote from the build instructions: &quot; In particular, the Windows version absolutely positively must be compiled in Debug mode, with &#x2F;RTC enabled. If you build in Release mode, or have &#x2F;RTC disabled, the game behaves dramatically different in ways that were never fully documented (bizarre softlocks, out-of-bounds issues that don&#x27;t show up in tools like Valgrind, stuff like that).&quot;<p>I wonder if people will spend the time to actually debug this properly now that the source is available.
评论 #22012004 未加载
评论 #22025907 未加载
JakeWesorickover 5 years ago
I appreciate big successes revealing the jank-ness going on behind the scenes. It helps me fight imposter syndrome knowing that everyone is always learning.
ddevaultover 5 years ago
Ethan Lee worked on this! Ethan Lee is an awesome person. Ethan is probably the single biggest contributor to gaming on Linux, and he&#x27;s always worked in the background. Thanks Ethan, you rock, and deserve more credit.
评论 #22014110 未加载
评论 #22012741 未加载
scotthover 5 years ago
If anyone is looking for a really great game, you should check out Terry&#x27;s latest, Dicey Dungeons. Incredible variation. Each episode and character has you discovering new strategies and play styles.<p>30% off on Steam right now: <a href="https:&#x2F;&#x2F;store.steampowered.com&#x2F;app&#x2F;861540&#x2F;Dicey_Dungeons&#x2F;" rel="nofollow">https:&#x2F;&#x2F;store.steampowered.com&#x2F;app&#x2F;861540&#x2F;Dicey_Dungeons&#x2F;</a>
评论 #22017059 未加载
ginkoover 5 years ago
Quite cool, although the license is quite strict:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;LICENSE.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;LICENSE....</a>
评论 #22011757 未加载
评论 #22012421 未加载
评论 #22011688 未加载
评论 #22011705 未加载
评论 #22011708 未加载
jdlygaover 5 years ago
It&#x27;s such a good game, I highly recommend it. The level design, the music, and the creative names of all the rooms you visit.
tombertover 5 years ago
You know, people like to crap on Flash (and there are valid reasons to do so), but I really miss how <i>quick</i> you could get a game built with it, while it still felt like &quot;real&quot; programming.<p>With Flash, I felt like a nice &quot;one-stop-shop&quot; 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.<p>I haven&#x27;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 &quot;fun&quot; for me.
评论 #22011928 未加载
评论 #22011899 未加载
评论 #22011915 未加载
评论 #22012011 未加载
评论 #22011840 未加载
评论 #22011914 未加载
评论 #22012016 未加载
评论 #22012497 未加载
评论 #22012124 未加载
评论 #22012716 未加载
评论 #22040514 未加载
评论 #22013493 未加载
CodeArtisanover 5 years ago
Did they use a transpiler or something for the mobile version? Lot of magic numbers and odd code like this<p><pre><code> 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; </code></pre> or<p><pre><code> case 17: blocks[k].prompt = &quot;Press ENTER to activate terminal&quot;; if(mobilemenus) blocks[k].prompt = &quot;Activate terminal&quot;; blocks[k].script = &quot;terminal_warp_1&quot;; setblockcolour(k, &quot;orange&quot;); trig=0; break; case 18: blocks[k].prompt = &quot;Press ENTER to activate terminal&quot;; if(mobilemenus) blocks[k].prompt = &quot;Activate terminal&quot;; blocks[k].script = &quot;terminal_warp_2&quot;; setblockcolour(k, &quot;orange&quot;); trig=0; break; case 19: blocks[k].prompt = &quot;Press ENTER to activate terminal&quot;; if(mobilemenus) blocks[k].prompt = &quot;Activate terminal&quot;; blocks[k].script = &quot;terminal_lab_1&quot;; setblockcolour(k, &quot;orange&quot;); trig=0; break; </code></pre> from <a href="https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;mobile_version&#x2F;src&#x2F;entityclass.as" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;mobile_v...</a>
评论 #22011865 未加载
评论 #22019556 未加载
ranger207over 5 years ago
The Awesome Games Done Quick speedrunning marathon [0] ran this game this morning. I didn&#x27;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&#x27;s stream is archived.<p>[0] gamesdonequick.com [1] <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;speedrun&#x2F;comments&#x2F;ek9zmz&#x2F;agdq_vod_thread_2020&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;speedrun&#x2F;comments&#x2F;ek9zmz&#x2F;agdq_vod_t...</a>
评论 #22012211 未加载
评论 #22013092 未加载
评论 #22013791 未加载
评论 #22015976 未加载
buryatover 5 years ago
I 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!
caconym_over 5 years ago
This is a great game, by the way. If you haven&#x27;t played it, you should.
评论 #22011878 未加载
评论 #22011729 未加载
MrGilbertover 5 years ago
I always love when something closed source goes open.<p>While I never played this game in particular (looks like I&#x27;ve missed something!), I love to study code. It&#x27;s always interesting to see how other devs tackled a problem or just structured their code.<p>Thanks a lot!
评论 #22011606 未加载
评论 #22015496 未加载
newnewpdroover 5 years ago
It&#x27;s helpful&#x2F;inspiring to see you don&#x27;t have to be the greatest programmer to create successful video games.<p>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.
评论 #22043198 未加载
egypturnashover 5 years ago
Ah yes, fond memories of spending hours trying to navigate my little dude through several screens of Godzilla’s Spiky Asshole.
tibbonover 5 years ago
Oh this is really cool! I&#x27;ve been thinking how interesting this could be to backport to NES or C64. I&#x27;m guessing there isn&#x27;t too much in the game happening that couldn&#x27;t probably happen on those systems with minor modifications.
diegoperiniover 5 years ago
I&#x27;ve spent days speedrunning this game. Highly recommend it!<p>I also suggest &quot;Don&#x27;t Look Back&quot; 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.
AndreyKarpovover 5 years ago
The PVS-Studio Team couldn&#x27;t get past the source code of this game: <a href="https:&#x2F;&#x2F;www.viva64.com&#x2F;en&#x2F;b&#x2F;0707&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.viva64.com&#x2F;en&#x2F;b&#x2F;0707&#x2F;</a>
bscphilover 5 years ago
VVVVVV is probably my favorite game of all time. I&#x27;ve gotten so many great hours out of it, it&#x27;s very relaxing. Thanks Terry for everything and now for releasing the code as well!
alexghrover 5 years ago
Gosh, this brings back sooo many good memories. If you haven&#x27;t played it yet, you must! It is an excellent game, with superbly simple gameplay and excellent music!
jonahrdover 5 years ago
I just replayed this over the holidays! Time for more :)
gameswithgoover 5 years ago
It says a lot about vvvvv that, I don&#x27;t like this TYPE of game, lots of jump puzzles. But I like this game! It is just really well done.
gfxgirlover 5 years ago
I got this confused with VVVV<p><a href="https:&#x2F;&#x2F;vvvv.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vvvv.org&#x2F;</a>
jadarover 5 years ago
This is one of my favorite games and one of my favorite game soundtracks!
joshuover 5 years ago
i was so hoping this was about vvvv.
ddevaultover 5 years ago
This is really great! I wish they wouldn&#x27;t call it &quot;open source&quot;, though. It looks like a source-available license:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;LICENSE.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;TerryCavanagh&#x2F;VVVVVV&#x2F;blob&#x2F;master&#x2F;LICENSE....</a><p>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&#x27;t qualify for:<p><a href="https:&#x2F;&#x2F;opensource.org&#x2F;osd" rel="nofollow">https:&#x2F;&#x2F;opensource.org&#x2F;osd</a><p>Kudos for releasing your game&#x27;s source, though!<p>Edit: I sent Terry an email and he agreed to change it &lt;3 Thank you!<p>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&#x27;s always worked in the background. Thanks Ethan, you rock, and deserve more credit.
评论 #22013343 未加载
评论 #22013597 未加载
评论 #22012247 未加载
cambalacheover 5 years ago
I 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 &quot;unfair&quot;. It has everything. If you like platformers and simple games you should check it out.
评论 #22013172 未加载
danschumannover 5 years ago
It&#x27;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.