VVVVVV 2.3 out now

Posted in VVVVVV

Hey everyone! I’m back in London!

I’m gonna write a little blog post sometime soon about what I’m up to these days, and what I’m planning in the near future. Before all that, though, here’s a quick update about something exciting that’s happening today – it’s the first update to VVVVVV on PC in seven years!


(Adorable fan art by Cheep! Check out more of their work on Twitter!)

I mentioned this update on twitter a little while back – we’ve been in beta for a while now, and it’s feeling pretty solid, so it’s time to make it official! The full 2.3 changelog is *immense* (you can read it here), but roughly speaking, the update adds:

  • 60+ FPS support
  • Improved graphical options
  • New features in the editor
  • Hundreds of bug fixes

This update is as a direct result of making the source code available last year, and accepting source contributions. I’ve personally added very, very little to this update – which is something that I feel maybe a little anxious about! But I’ve been very careful to make sure that every change is something I was happy with, and that none of the changes to the game were doing anything other than making this the best version of the 2010 game. I’m extremely grateful to everyone who contributed to that – especially – and I really can’t overstate this, especially InfoTeddy, who did by far and away the most to make this happen. (She recorded a little song to mark the occasion!)

[VVVVVV on Steam]

[VVVVVV on itch.io]

[VVVVVV Make and Play Edition]

Thanks all – enjoy the update! <3

9 Comments

Featured VVVVVV Level: “Decennial Hangout” by mothbeanie and Allison Fleischer

“The crew throw a party for their famous mission’s 10th anniversary”[Author’s Description]

10 years after their “famous mission”, the crew throw a reunion party to catch up and hang out and play some games together on Vitellary’s fancy new VR headset. It turns out the crew are all budding game designers, and the first thing we do is play through a space station inspired level created by Violet. Afterwards, Vermilion nervously shows the crew something he’s been working on, which comprises the rest of the game.

This thing is charming as all hell. As you play through the game, the various in-universe crewmates chime in, offering each other supportive feedback about their levels. It’s cute and funny and the whole thing is just really nicely constructed from start to finish – it reads to me as a loving tribute to the community of level creators over the last ten years, all hanging out and talking about levels they’ve made for each other.

It’s also a kind of remarkable showcase of tricks the VVVVVV level making community has learned in the past ten years – Decennial Hangout depends on a deep knowledge of forbidden “internal scripting” tricks, and uses custom graphics and sounds, and incredibly, an all new soundtrack created just for this level (available on bandcamp here). There’s some stuff here I didn’t even realise you could do with custom VVVVVV levels.

This is my favourite entry to the jam <3

Favourite part: This whole level is fantastic, and it’s hard to pick a favourite moment without spoiling it: but one trick it repeats, which never failed to be charming, is the level designers “fixing” issues on the fly – “whoops, I made this bit too hard, sorry”.

Download: decennial_hangout.zip (mirrored)
(glorious trainwrecks page)

To play a VVVVVV player level, extract the .vvvvvv file into your VVVVVV levels folder. On windows, that should be in My Documents/VVVVVV, on Mac it’s Documents/VVVVVV, on Linux it’s ~/.vvvvvv. This level also requires you to install some custom music and graphics – see the included readme for instructions.

6 Comments

Featured VVVVVV Level: “Traps R.J.” by InfoTeddy

“This is a troll level fashioned after Super Mario Maker and Super Mario Maker 2 troll levels, complete with misdirection, deception, and anti-softlocks. […] I recommend playing completely blind, i.e. not knowing anything about the level at all, no spoilers, no hints.”[Author’s Description]

More than anything else, this level is just really, really funny. It knows VVVVVV well enough to know how to make it completely fall apart, and it uses that knowledge to tell some really solid mechanical jokes. Its description as a troll level made me worry that it would be impossibly hard, but turns out it’s the *other* sort of troll level, the prankster type. (Not that it doesn’t get, er, a bit hard in some places. There is one particular room I’m thinking of here which got a little too esoteric even for me, though it’s optional.)

It’s suggested that you play this level on camera, if you can. I didn’t, not my thing. But if it’s yours, you definitely should!

Favourite part: Skip this bit if you want to go in *completely* unspoiled – but I loved the joke right at the very first checkpoint, which parodies the bizarre sub-1 minute speedruns of the game that are possible.

Download: traps_rj.zip (mirrored)
(glorious trainwrecks page)

To play a VVVVVV player level, extract the .vvvvvv file into your VVVVVV levels folder. On windows, that should be in My Documents/VVVVVV, on Mac it’s Documents/VVVVVV, on Linux it’s ~/.vvvvvv

3 Comments

Featured VVVVVV Level: “6×7 Planet” by ncrecc

“Viridian and the gang (part of the gang) got stuck in some other dimension-type thing again! With spikes and whatnot. Ha ha ha how does this keep happening?”[Author’s Description]

A simple, design-focused level in a 6×7 space, with four crewmates lost down four distinct paths.

This one’s great! It has some genuinely fantastic level design, including more than one section that features a mechanical “punchline”, which I always love. It’s pretty hard in places, but the hard bits can usually be solved by rethinking your approach – at which point you can bypass the challenge. All four crewmate paths are really well designed, and the trinkets are great too. In terms of level design, I think this is the best entry in the jam.

Favourite part: After finishing this one, I went through the level in the editor to pick out a highlight, and found it hard to narrow it down to just one room. But I think my favourite bit is the transition between “More of the same” and “Haha nope”, where the level plays with your expectation that it’s going to continue to use screen wrapping, and then… doesn’t.

Download: 6×7.zip (mirrored)
(glorious trainwrecks page)

To play a VVVVVV player level, extract the .vvvvvv file into your VVVVVV levels folder. On windows, that should be in My Documents/VVVVVV, on Mac it’s Documents/VVVVVV, on Linux it’s ~/.vvvvvv

3 Comments

Featured VVVVVV Levels: 10th anniversary jam roundup

Happy new year! High hopes for 2021!

Today’s the 11 year anniversary of VVVVVV’s launch. Last year, I made a big splash for it, and released the game’s source code during an AGDQ speedrun. The source code got, uh, more attention than I was expecting, especially once people actually dug into it…

Good times, good times.

Some fun stuff has happened with VVVVVV since the source code release!

  • We’ve accepted and merged more than 400 pull requests, which will form part of a new version that will probably come out a little later this year. Many of these pull requests are contributions from one particularly prolific contributor (shout out to InfoTeddy)! The changes are mostly fixes for a lot of long term bugs, but also include new features like 60fps support, and improvements to the editor.
  • There’s a Dreamcast port now, as well as a port for the Haiku operating system, and you can play the Make and Play edition in web browsers thanks to a webassembly port.
  • At some point in the future, it’s possible there’ll be a localisation update – there’s a branch on the github that I’m watching closely for the technical side of the task!

So, I guess for other game developers thinking about doing this, here’s a data point! Only good things have happened. This whole thing has been a really positive experience, and I’m really glad I did it.

One regret: in the blog post last year, I talked about the 10th birthday game jam independently organised on Glorious Trainwrecks, and said that I’d do a round up post of the entries when the jam was over… which I never did.

A lot of time has passed, but I’d like to make up for that right now. Over the course of next week, I’m going to be posting three of my favourite entries in classic featured level style. I haven’t done this for 10 years.

There was a lot of cool stuff entered in this jam, too much for me to usefully filter here. Still, here’s an attempt: a quick roundup of other entries that I wanna encourage you to check out, beyond my three favourites:


DROD: KVD / Level 1 by EpsilonTheDerg

“My favorite puzzle series’ first level recreated in one of my favorite platformer games! Happy birthday, VVVVVV!” – [Author’s Description]

Hah! I’m a huge fan of the DROD series of puzzle games, and, as this level points out, DROD: Architects Edition was a pretty major inspiration towards the Make and Play Edition of VVVVVV. That aside, though, the two games really don’t have much in common, so I was curious how this concept was going to work.

…ok, turns out, I don’t think you can say that this combination works, exactly. Mostly, it comes down to a lot of timing challenges. But as a big fan of the game it’s referencing, I found it interesting to see the layout reinterpreted, and there’s something I really like about the sheer unlikeliness of the concept in the first place.

Favourite part: It does feature one genuine puzzle, which is how to get back into the entrance tunnel in Quince North, Twice West. The author makes it very clear in the description that this is possible, and it is!

[download on glorious trainwrecks]


Steamed VVVVVVams by EpsilonTheDerg

“Viridian’s Luncheon doesn’t go as planned.” – [Author’s Description]

But what if Viridian were to purchase fast food, and pass it off as their own cooking? Delightfully devilish!

This *maybe* would have been stronger if it had just stuck to the one joke, but eh, what can you do? It’s still a great level.

Favourite part: Honestly, the second I saw that icon on the glorious trainwrecks page, I couldn’t wait to play this.

[download on glorious trainwrecks]


VVVVVV: Moonfall by Azure48

“As for the title, it’s from a dream I had a few months back, about a nonexistent sequel to VVVVVV called VVVVVV:Moonfall. The story would’ve tied into it, but I never got that far.” – [Author’s Description]

Rather than a .vvvvvv level, this one’s a pico-8 demake of VVVVVV. While it’s very unfinished, it’s worth checking out anyway for its charming atmosphere and wonderful demade version of the original soundtrack.

Favourite part: It really is super impressive that so much of the original soundtrack is remade in Pico-8’s synth, and it sounds fantastic. I happily stood around in empty rooms so I could hear everything.

[download/play on glorious trainwrecks]


The Groceries by Lollipop

“Viridian has to go buy the groceries, but of course, there are some small inconveniences along the way…” – [Author’s Description]

I’m not sure where to start! This very story-heavy level opens with a cutscene where Violet asks Viridian to go out and buy some groceries – which they don’t want to do because they’re sick (this hits a bit different after 2020). After Viridian says no a few times, Violet tricks them and locks them outside the ship, and off we go.

On the way, Viridian takes a train trip, and bumps into lots of random people who proceed to argue with them about morality, philosophy, and in one case just try to bully them into getting a drink from the dining cart for some reason. The whole thing has a kind of a strange, fanfic energy, in a good way? The final section when you actually get to the store is pretty strong in particular.

Favourite part: The store section is good, but so is the bizarre quiz section that occurs about halfway through, where an AI needs to check that you’re “not a robot” before it’ll let you continue by quizzing you on the events in the level so far.

[download on glorious trainwrecks]


Simulation by nicholas

“Vitellary makes a simulation for adventure-seeking Viridian! Nothing wrong should happen, right?” – [Author’s Description]

Ok, so, I think I’m pretty good at VVVVVV? Maybe I’m a bit rusty, I guess? But I could get *absolutely* nowhere with this one. This is definitely one of the hardest VVVVVV levels I can remember seeing. I know that a lot of VVVVVV player levels skew hard, so I guess it shouldn’t be a huge surprise that there’d be at least one entry in this jam that was just beyond my skills.

Still, it was pretty clear from the first room (in the screenshot above) that this was a competently made thing, and I was curious about what the rest of the level was like – so I turned on invincibility mode, and went exploring.

What I found was frankly terrifying. Lots of really, really hard challenges, but all tightly tuned and carefully designed. Clearly a tonne of work went in this! If you like VVVVVV, but think that it’s just, like, way too easy, you’ll find this interesting. I, for one, would love to watch a successful playthrough.

Favourite part: If you view the map screen, the name of the level is written vertically along the side, which is cute.

[download on glorious trainwrecks]


Pointy Hazards by ureytw

“Phew, I made it! This is a song i made inspired by the Soundtrack. Enjoy, and happy VVVVVV 10th anniversary. :)” – [Author’s Description]

Not a .vvvvvv level this time, instead, just a really, really great tune inspired by the VVVVVV soundtrack.

Favourite part: That bit that starts at 33 seconds is *killer*. Uff, what a banger.

[listen on glorious trainwrecks]

To play a VVVVVV player level, extract the .vvvvvv file into your VVVVVV levels folder. On windows, that should be in My Documents/VVVVVV, on Mac it’s Documents/VVVVVV, on Linux it’s ~/.vvvvvv

0 Comments

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

Posted in VVVVVV


Today is the 10th anniversary of VVVVVV’s release!

Or possibly tomorrow is, depending on who you ask – technically, the game first went live at 3am GMT on the 11th January 2010, after a very, very long day of fixing every last bug I could, making last minute builds, and trying to slowly upload everything on an extremely unreliable internet connection that kept cutting out. But I’ve always gone by “it’s not tomorrow until you wake up” rules, so I still think of January the 10th as the real launch day <3

Gosh, ten years.

VVVVVV is such an important game to me, I barely even know where to start. I wanted to do something special to mark the occasion: so, as of today, I’m releasing the game’s source code!

[VVVVVV Source Code on github]

The repo contains two versions – the desktop version, ported to C++ by Simon Roth in 2011, and later updated and maintained by Ethan Lee – and the mobile version, written in Actionscript for Adobe AIR, based on the original v1.0 flash version of the game.

I wanna give a big big thank you to Ethan Lee, who helped a lot to prepare for this, including getting the repo ready for the public, and organising the reveal on AGDQ (hi speedrunners!)! Thanks Ethan!


A quick overview of the source code

So, I think a fair question to ask here is: “What’s interesting about the VVVVVV source code?”.

I think even a peek of the source code will quickly reveal that VVVVVV is not a technically sophisticated game! Even by the standards of self taught indie devs, it’s kind of a mess.

Some possibly interesting notes/explanations of why things are they way they are:

  • 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.
  • If you’re looking for the game’s text, that’s mainly (but not entirely) in the Scripts.cpp and TerminalScripts.cpp classes. These functions basically load data into a very simple script parser that controls cutscene logic. Fun fact: modders reverse engineered this “internal scripting” years later to do amazing things with custom levels that I didn’t even know were possible.
  • Somewhere along the road, I picked up that it was a good habit to separate your code into input, logic and render, and boy did I take that to heart. Most of the critical game code is in three files – input.ccp, logic.cpp, and the incorrectly named titlerender.cpp. Every state in the game is packed into these three files, under functions called things like “teleporterrender” and “towerlogic“. There’s a lot of copy and pasting going on here.
  • All the actual levels in the game are hardcoded in huge arrays that I generated with my own map editor, which exports the levels in source code that I could read in. This is just kind of how it worked when making a flash game in 2009 – accessing external data assets is hard to do, so it just made sense at the time to compile that into the game instead. All the really big files (like Spacestation2.cpp, Finalclass.cpp and so on) were made this way. I’ve uploaded the code for the editor here for completeness, but it’s not really useable anymore to be honest (it requires Allegro and Mingw to compile). I made a similar tool for rearranging the final level layouts!
  • When I was making this, I didn’t really understand how static classes worked, or why they were a good idea. I think I read somewhere that static classes and global variables were BAD in flash, so I tried to avoid using them at all ever. The result? Virtually every function in the game is passing around the following arguments: “Graphics& dwgfx, Game& game, mapclass& map, entityclass& obj, UtilityClass& help”.
  • VVVVVV basically has no temporary objects, and it fills all of its entity arrays (and most of its other data arrays) with hundreds of blank entries when the game is first initialised. It does this because I read somewhere that deleting objects in flash causes weird hiccups as the garbage collector takes over and slows things down, which is actually sort of true. I was still doing this weird thing in new projects until very recently – I finally broke the habit in Dicey Dungeons.
  • One more: as well as the cutscene parser, I had another way to control game logic as you were playing – a monolithic state machine, which had gotten completely out of control by the end of the project! You can find it in Game::updatestate, and I kinda recommend checking this out even if you don’t read anything else! This controls things like triggering the start of more complicated cutscenes, where teleporters send you, the timing of the level completion animation, and other miscellaneous things that I just wanted to kludge in quickly. The states are numbered, and it counts all the way up to 4099, with gaps. When I was developing the game, I kept a notepad nearby with the important numbers written down – 1,000 triggers the collection of a shiny trinket, 3,040 triggers one particular level completion, 3,500 triggers the ending. This dumb system is the underlying cause of this amazing 50.2 second any% speedrun of the game.

I dunno, what can I say? I was young and more interested in getting something on the screen than implementing it properly. Maybe the best thing about VVVVVV’s source code is that is stands as proof of what you can hack together even if you’re not much of a programmer.

Looking back through it myself all these years later, I find it really funny how much of it is basically just the same parts copy and pasted over and over, with the values changed. This basically makes it impossible to read and maintain ten years later, but back when I was in the thick of it, it made it really fast to iterate and add new things. I’ve gained better habits over the past decade, and I’m definitely a better programmer now – but it does seem to take me longer to do things.


Surprise Birthday Party!

Just as I was getting ready to post all this, Sergio Cornaga announced a 10th anniversary game jam for VVVVVV over on glorious trainwrecks!

VVVVVV’s 10th birthday eVVVVVVent!

I am so excited about this, haha – and I love glorious trainwrecks, which hosted the regular Klik of the Month jams that I did regularly around the time I was making VVVVVV. This feels like a perfect home for it!

I’m really, really excited to see what people come up with – once the jam ends, I’ll do a big round up post here on this blog, in the style of the old VVVVVV player level posts I used to write <3

Even before I released the game’s source code, I made the tools to make and play VVVVVV levels available for free in the “Make and Play” edition back in 2014! You can download that from here! If you’re interested in making levels in the VVVVVV editor, this thread is a good place to start! Good luck!


Mushy stuff

Ahhhhh so I’ve talked about how I feel about VVVVVV a little before – just before the first anniversary, I posted about how things were going for me when the game first came out, and how its success changed my life. Then on its firth anniversary, I posted about how VVVVVV felt like a once in a lifetime project – that nothing before or after could come close to.

A decade on, I still feel the same way. I’m incredibly proud of VVVVVV, and grateful for everything. I want to thank everyone who helped me along the way – Magnus for his incredible soundtrack, Ethan and Simon for all their work to bring the game to more people, Bennett for naming the rooms, Stephen for helping me get that mac build out late in launch day. This game is special to me – thank you to everyone who played it and supported me over the past ten years. It’s meant so much. <3

43 Comments

Forgot, and never brought to mind

(thanks, HotAndColdAF!)

Sorry I haven’t posted in a while.

Ok, I know that’s a terrible cliché, but I mean it very earnestly! I used to post something about what I was up to as often as once a week. I’m going to try very hard to start doing that again from now on.

I like new year’s resolutions a lot – this time of year has always been important for me to think back on what I’ve made, and to think about what I want to make. This is when I make plans. I rarely stick to them, though – like, in 2012, I was so sure that I wasn’t going to start any new projects – instead, I was going to really focus on finishing one of the half dozen big prototypes I had lying around. That plan didn’t last very long, but, eh, it’s probably for the best.

Reflection of years of new year’s resolutions past reveal that I kinda keep falling into the same traps, and I’m feeling all the same things again this year: I wanna sink my teeth into a big project, but I don’t know which one to pick! I’m sick of making small things, but I have all these small things I wanna finish first! And I rarely finish any of the games I talk about wanting to finish in my new year’s posts – sometimes I don’t even work on them that year.

It really doesn’t feel like a process I understand very well or have much control over. Which is frustrating. I mean, I’ve been indie for over seven years now! Seven! I should be better at this by now!

Today’s an anniversary of a very important project for me – five years ago today, I released VVVVVV. Five years later, VVVVVV remains the game I’m most proud of. I feel incredibly blessed that it’s found the audience it has. Gosh, I don’t even know where to begin talking about how lucky I feel. And its success isn’t the only thing I feel lucky about: VVVVVV was a joy to work on.

Working on VVVVVV was not like working on any other big project that has come along before or since. VVVVVV never felt like hard work – even in the final weeks when I barely slept. It took a little over six months, and I spent most of that time just playing with level ideas and getting little details to feel right. I woke up every day excited to add the next thing, to try out some stupid thing I’d thought up the night before. I loved working on it. I’ve loved working on other games too, but VVVVVV was special for me, and I think it shows in the game.

I think I’ve been looking for another project like that ever since. I’ve gotten close, but nothing has been quite the same.

This year, I think any plan I make about what I want to work on has to be a better acknowledgement of the way I work best. So here it is: I’m not making a plan. I’m just going to work on what I feel like, when I feel like it, and see where that gets me.

Happy new year, everyone.

18 Comments

Outer Space

Hey everyone! I have lots of big annoucements about VVVVVV today, so let’s get to it!

map
VVVVVV: Make and Play Edition

Let’s start with what I consider the really important thing – inspired by things like Knytt Stories and DROD: Architect’s Edition, I’m releasing a special build of VVVVVV on Windows, Mac and Linux today. It’s called VVVVVV: Make and Play Edition, and it’s completely free. This version of the game only includes the player levels and the level editor – which means that, from now on, the tools to make and play VVVVVV player levels are completely free.

[VVVVVV: Make and Play Edition]

People have done some really incredible things with the VVVVVV editor. I want to share that work as far and wide as I can!

vios
Lots of new VVVVVV ports

VVVVVV is now available on iPhone, iPad, Android, and OUYA!

These ports have been quite a long time coming! Actually, I originally started the iPhone port before I started Super Hexagon, way back in 2012. So it feels very, very good to finally have it finished, and released. This is something I felt I really had to take on myself – VVVVVV’s important to me, and it was really important to me that this be done right. I wanted the game to be as good as it could be on mobile. I feel very good about how it’s turned out!

You can get it from here:

[VVVVVV for iOS]

[VVVVVV for Android]

[VVVVVV for OUYA]

Nicalis have been working on a Vita port as well – this should be coming out sometime this summmer!

supgrav
Super Gravitron

Surprise! Today I’m also releasing another game on iOS and Android: Super Gravitron. It’s a little minigame that you might remember from the end of VVVVVV!

It’s acting as sort of a demo, but mostly I just think it happens to work really well as it’s own thing on mobile. And it’s completely free! Get it here:

[Super Gravitron for iOS]

[Super Gravitron for Android]

ach
Version 2.2

Thanks to Ethan Lee, VVVVVV on desktop has finally gotten an update! Version 2.2 fixes a bunch of long standing bugs (for example, player level warp lines) and makes the 2.1 changes official (like player maps, coloured text in player levels, editor direct mode, etc).

If you’re on steam, this update also adds achievements! They’re the same ones that VVVVVV always had, except now they’re recognised by steam. If you’ve already got them, log into today and you should get awarded a bunch of them at once, which is extremely satisfying!

mmmmmm
MMMMMM

Finally – remember that amazing Metal Medley of VVVVVV music by @FamilyJules7x? Yeah, both Souleye and I were seriously impressed!

Introducing: MMMMMM! A complete Metal cover of the VVVVVV soundtrack! You can pick it up today directly from Souleye!

The soundtrack comes with a mod, which you can install in your player level directory to play the game with the metal soundtrack instead of the original one!

That’s all, everyone! Thanks for playing!

94 Comments

Terry Versus E3

Posted in VVVVVV

ipad1024x768_2

Announcement time!

Finally! VVVVVV is coming to iOS, Android and OUYA this Thursday, the 12th of June! A Vita version will follow later, at some point in the future!

I’ve also been working on something secret that I’m very excited about, which will also be coming out this Thursday. Ahhh! Ahhhhhhhhhhh!

12 Comments

Ports ports ports

Time for a very imPORTant update! Ho ho ho

VVVVVV’s mobile ports are definitely taking a lot longer than anticipated, but things are finally coming to an end. A few days ago, after weeks of testing and fixing bugs and optimising, I finally submitted VVVVVV to the app store! It’ll be in a review for a while, and going live hopefully not too long after that…

So what’s the next step? Well, there’s also the android version (that’s going pretty well too), and the steam update. And one more thing…

vvine

The OUYA version!

I like the OUYA as a thing quite a lot – last year I even ported 10 of my freeware games to it for fun! And it’s really cool to be able to play VVVVVV on it too – this’ll be the first time you can actually sit down with a controller and play VVVVVV on a telly, which is kind of a big deal. It should be out at the same time as the other ports – not quite sure when that is yet, but I’ll announce it as soon as I know 🙂

That’s not all, though.

suphexvine

Surprise! I’m also bringing Super Hexagon to OUYA! And real soon, too. Like, next Tuesday. Ahhhhhhh

9 Comments