Oh 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.…
How those rooms are implemented: https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_...
VVVVVV’s source code is now public, 10 year anniversary jam happening now
211–220 of 232 posts
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#212Earlier quoted context omitted.
> 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.
To 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.
I'm working on a port of Doom right now, and have worked with the Quake 2 source code before. I also took a quick look at the Wolfenstein source code yesterday.
It's very clear that Carmack and his colleagues have developed their craft over time. Wolfenstein doesn't seem to have much structure to it at all. Doom is still a mess of global variables and ugly code. But you're starting to see some nice abstractions, like the WAD loading (which made it modder friendly) and the sound module system.
It's been a while since I worked with the Quake 2 code, but I remember it being quite elegant. From what I've heard the Doom 3 source code is excellent.
I think the point is, for your first projects, for small indie-style games, you really shouldn't worry too much. In my experience, it's really hard to learn to use good abstractions effectively unless you've tried to do things the hacky way first, and actually have a solid feeling for what the abstractions try to solve. I still notice this, that I really have trouble getting some projects off the ground if I try to do it the elegant way from the start. Sometimes you spend too much time with an abstraction that turns out to be a bad fit. If I just hack it together, and then refactor it later, it's much easier to get things started.
It's also important to remember that the more people you're collaborating with, the more important it is to have a clean structure.
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#213Earlier quoted context omitted.
> Maybe these supposed anti-patterns don't really matter as much as we think they do for successful software? Given that plenty of successful software has them. There's more than one variable involved. You can write successful software full of anti-patterns, but you'll probably pay for it in some other way (like increased QA effort or a low bus-factor [1]). [1] https://en.wikipedia.org/wiki/Bus_factor
The motivations around those kinds of factors are different for games, though. e.g., bus factor has to be weighted a lot more highly on software that needs to be maintained indefinitely than it does on software that is going to be shipped on a fast-approaching deadline and then (probably) never touched again. Also, bus factor's importance depends on the size of the team. In the limit case - a 1-developer project like…
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#214Earlier quoted context omitted.
indeed, Ethan Lee's portfolio is impressive ! 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
That'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. > Drea…
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#215Did 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…
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#216It’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 ) all over the place, plenty of god classes (…
> The source code is a bit of a tangle here. There are magic numbers ( https://wiki.c2.com/?MagicNumber ) all over the place, plenty of god classes ( 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 a…
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#217Earlier quoted context omitted.
Yes, 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://thebaf…
Well, there are references of "Open source" being in use earlier; for example: https://groups.google.com/forum/#!msg/comp.os.ms-windows.pro... http://www.xent.com/FoRK-archive/fall96/0269.html Especially that Caldera one seems pretty high profile. "Open source" has always been used as a generic term, because it's a very descriptive adjective+noun one. Trying to reserve such terms for one particular narrow usage seems…
I didn't know about the NT example. It's a new one to me. But it's also very isolated. I said "essentially nobody" not absolutely "no one". There are a few scattered and rare examples before 1998, but it was not common parlance and most people had never heard about "open source" before Tim O'Reilly bankrolled OSI.
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#218Oh 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.…
How those rooms are implemented: https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_...
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#219It’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 ) all over the place, plenty of god classes (…
> The source code is a bit of a tangle here. There are magic numbers ( https://wiki.c2.com/?MagicNumber ) all over the place, plenty of god classes ( 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 a…
But trying to figure out what a successful game is by its source code is like trying to find what makes a painting good analyzing the chemicals used to make the pigments.
Re: VVVVVV’s source code is now public, 10 year anniversary jam happening now
#220Earlier quoted context omitted.
No kidding. I sincerely doubt this actually qualifies as Open Source. It certainly can’t be distributed by, e.g., Debian.
This probably could go in the Debian nonfree repo