10 ms·
Braid Code Cleanup (part 1)
- deelowe 10y agoIs he re-releasing this or something? Curious why he's going back through the code.
- foota 10y agoMaybe doing a sequel or using the tech as a base for a new game?
- 27182818284 10y agoLike the other thousands of people, I absolutely loved Braid. I think this comment gets my hopes up, but wow would I love to see a sequel.
- StavrosK 10y agoThe problem with sequels in games this good is that the game is so much better than anything else when it is released, that a sequel can't be anything other than an incremental update, and thus feels lackluster. The same thing will happen with the Deadpool movie sequel. The first movie was innovative in that it was the first mainstream movie to break the fourth wall, have tons of R-rated jokes, etc, but you can only do that once.
- cmdrfred 10y ago> The first movie was innovative in that it was the first mainstream movie to break the fourth wall, have tons of R-rated jokes, etc, Check out Naked Gun kiddo.
- nameless912 10y ago> The first movie that I care about to break the fourth wall, have tons of R-rated jokes, etc, What he probably meant to say. So often we forget that literally everything is an "overdone trope" at this point, unless you do it well.
- cmdrfred 10y agoTrue. The first movie I 'care about' that fits this description is probably Austin Powers then. Watch it again if you haven't in years, you'll catch all the jokes that flew over your head as a kid.
- SmellyGeekBoy 10y agoI loved it as a teenager but watched it again recently (now in my early 30s) and thought it was truly awful. Some things are better left in the past!
- GFK_of_xmaspast 10y agoAlso Blazing Saddles.
- blakeyrat 10y ago> The first movie was innovative in that it was the first mainstream movie to break the fourth wall, You're either very young, or haven't watched very many movies.
- dragonwriter 10y agoI think what he meant to say was that it was the first mainstream movie to combine breaking the fourth wall with lots of R-Rated jokes and certain other unspecified features that is, the list of features was a unit, not a list of things that Deadpool was first at individually. At least, that's the charitable interpretation that makes the claim not-laughable-on-its-face.
- nameless912 10y agoCounterexample: Portal 2. Same basic concept, innovated on the original in every conceivable way. Sure, I like the original better because nostalgia glasses, but I can objectively state that the sequel is a fucking excellent game.
- douche 10y ago> first mainstream movie to break the fourth wall What's it all about, Alfie? https://en.wikipedia.org/wiki/Alfie_(1966_film)#Reception https://en.wikipedia.org/wiki/Alfie_(1966_film)#Reception
- JoshTriplett 10y ago> The problem with sequels in games this good is that the game is so much better than anything else when it is released, that a sequel can't be anything other than an incremental update, and thus feels lackluster. Depends on the sequel. If the sequel is just an additional collection of levels, then just provide a fun "additional levels pack" as an add-on, and/or provide a way to share community-produced levels. That doesn't have the same expectations as a sequel. If you're going to actually make a sequel, put enough effort, new mechanics, and story into it to make it a new game in its own right. For examples of sequels that put enough effort in to be a new game while still feeling like a sequel to the original, look at Portal 2, or Super Mario Bros 3 (by contrast to Lost Levels, which was fundamentally just a level pack). Numerous sequels pull this off, even of innovative indie games. But it's also possible that the new game will end up with entirely new mechanics and story to the point that it isn't a sequel, and instead becomes "a new game from the makers of ...". And that's awesome too.
- spatulon 10y agoThe game felt like a pretty thorough exploration of the time-rewind mechanic, and Blow was obviously careful that each puzzle served a unique purpose. I doubt he feels like he has anything interesting to put in a Braid II that wasn't already in the first game.
- 27182818284 10y agoI'd even buy some extra levels with just the original Braid's gameplay. I think, though, that he could come up with some new creative power-ups and such to add to the gameplay. I keep thinking like a Mario vs Mario 3 idea. Sure it still had firepower and such, but adding the flying added a lot to the game.
- captn3m0 10y agoI don't think that is gonna happen though. He'd would want Braid to stand in its own right.
- tekromancr 10y agoOr an eventual source release?
- zardo 10y agoI wouldn't be that surprised if he turns it into an example Jai project.
- nameless912 10y agoThis would be freaking awesome. I've always wanted to know how the physics in that game work.
- lj3 10y agoSadly, no. He's spoken about this in length on Twitter. He's working on a new game written in Jai. He's going back and retouching the Braid code because it crashes frequently on Windows 10. He wants to keep selling it, so he has to fix it.
- doty 10y agoFrom http://number-none.com/blow/blog/programming/2016/07/07/braid_particles_1.html http://number-none.com/blow/blog/programming/2016/07/07/brai...: The game Braid originally shipped to the world in 2008, and after some ports in 2009, I have only worked significantly with the code on a few occasions. But I want to maintain this game indefinitely into the future; in the back of my mind, there have always been some clean-ups that I have wanted to perform on the code. Often when shipping a game, the best answer to a problem isn’t evident, and we are under time pressure, so we solve the problem in some way that is sufficient but sub-optimal. Other times, we need to design the game to meet technical constraints of systems we want to deploy on, but as the years go on, these systems become irrelevant, so the code can be cleaned up. I figured it would be interesting to talk about some of these things in a blog (and the blog will help motivate me to think about these situations and clean some of them up!)
- unwind 10y agoAs a game developer in a semi-previous life, this sounds like such fantastic luxury. Game code is often (not always, and in larger studios that maybe have their own engines even less so) fire-and-forget. I'm almost kind of jealous. :)
- jacobolus 10y agoAfter a few days of working on it, it seems like he’s been able to cut about 25k lines of code from the original ~95k, taking it down to about 70k lines. Pretty nice! Throwing away never-called functions, chopping out hacks for now-outdated platforms, de-duplicating subsystems, switching to easier-to-reason-about data structures, making assets and related code use more standard formats, etc. must be pretty satisfying, like peeling old faded cracking paint off a wall and refinishing it. I wonder where he’ll end up.
- striking 10y ago> But then, toward the end of the project, it became clear that the game would not fit in memory on the Xbox 360 (which had 512MB of physical RAM, but of course a game could not use all of that) Wow. Less than 512MB. I can't imagine how they fit stuff like Destiny and Halo: Reach into that.
- douche 10y agoYikes. Makes bad console ports especially underwhelming. Just recently have I encountered any games that even pretend to use the abundant resources available to them on PC - and of course they are PC exclusives, like Total War Warhammer.
- vvanders 10y agoYup, you wouldn't believe the amount of pain you see from doing a port from PC -> X360. Malloc is not heavily optimized since with limited memory you usually allocate up front. Lots of PC games are allocation heavy since it's fast on the desktop and large parts of major subsystems need to be rewritten to be console friendly.
- douche 10y agoI was thinking more the other way around. Slow, clunky, low-res console-first games that labor to get 30 fps while using a tiny fraction of the available CPU, GPU and RAM when ported to PC.
- vvanders 10y agoAh, I misread it. There's a very good chance you're just seeing the development engine that has very little optimization since ports are usually an afterthought. Either way they're very different environments. For instance you usually have a unified memory model on most consoles where on PC you have to shuffle textures across a memory bus to the GPU. Leads you to optimize for different things(although most ports I know of were done with a skeleton team).
- 10y ago
- JoshTriplett 10y agoThe whole section on physics is particularly worth learning from carefully. Don't make your physics timestep depend on your rendering timestep. And if you want to have any hope of reproducible results, don't make your physics have a variable timestep at all. Pick a reasonable quantum of time, run your physics engine on that fixed timestep, and render at whatever rate you want. If the graphics framerate is slower than the physics, repeat the physics step. If the graphics framerate runs faster than physics, just render the same frame repeatedly (or update things that don't interact with physics, like decorative elements).
- jstimpfle 10y agoFor a text scroller I once made this didn't work out well. A motion of constant velocity manifests worse jitters with a fixed timestep (if timestep * velocity > 1px). But scrolling text is a very special use case (and not physics) and probably nobody should want to scroll text at 60Hz/100dpi/arbitrary velocity...
- Strilanc 10y agoOne way to avoid that problem is to use interpolation between two frames computed by the physics engine.
- JoshTriplett 10y agoThat can work, but take care to avoid making the controls feel laggy in that case: if the player feels like their input doesn't immediately take effect, such as because the input gets processed on a physics timestep but the player character kept moving through interpolation, the controls can feel "floaty".
- cpeterso 10y ago> run your physics engine on that fixed timestep, and render at whatever rate you want. I think that works well for parallelizing game subsystems, too. Physics and the renderer can run at their own rates on different cores and then publish (read-only) global snapshots of their state for other subsystems to consume.
- robin_reala 10y agoSee also part 2 (http://number-none.com/blow/blog//programming/2016/07/17/braid_code_cleanup_2.html http://number-none.com/blow/blog//programming/2016/07/17/bra...) and part 3 (http://number-none.com/blow/blog//programming/2016/07/18/braid-cleanup-part-3.html http://number-none.com/blow/blog//programming/2016/07/18/bra...)
- brianpgordon 10y agoJeez, his "day's worth of work" in part 2 sounds more like what I did in the most productive week of my life.
- zwerdlds 10y agoThe true "10xer".
- ben_jones 10y agoI'm pretty sure this is the guy who said in the "Indie Game: the Movie" documentary something akin to: "If my game doesn't succeed I'm going to kill myself" in a sincere fashion. EDIT: It was the game developer named Fez who made the statement [1]. [1]: 39:00 mark of Indie Game: the Movie .
- faitswulff 10y agoI think that was the guy behind Fez, Phil Fish: > Fish, meanwhile, is heartbreakingly invested in a game he can't finish for his own perfectionism. "It's me, my ego. My identity is at risk. It's my perception of myself," he says of Fez. In the film's most startling moment, he's asked what he will do if he doesn't finish the game. "I will kill myself," he replies, meaning it. "That's my incentive to finish it." The flash of black humour relieves the tension, but it's an alarming vision of a man in desperate times. http://www.eurogamer.net/articles/2012-03-06-indie-game-the-movie-review http://www.eurogamer.net/articles/2012-03-06-indie-game-the-...
- ben_jones 10y ago
- bitmapbrother 10y ago>Visual Studio 2015 / Add notelemetry.obj to link line to reduce Microsoft adware potential. It's quite sad that you need to proactively add a notelemetry.obj to your link line to turn off telemetry when generating your code.
- poizan42 10y agoIt's for ETW. It's not doing any telemetry unless you use it for telemetry. Also I think they removed the initialization code from being linked in by default in the latest update.
- aidos 10y agoI don't really play games often but I played Braid and loved it. Does anyone have recommendations of other interesting games (probably puzzly, like Braid) that I might enjoy. Funny story, my 4yo finished (with lots of assistance) her first adventure game (The Lost City [1]) the other day and immediately broke down in tears because it was over. Honestly, for the next couple of days she cried whenever she remembered about it. Actually, would love to hear of about great tablet games for young kids too. [1] https://www.firemaplegames.com/thelostcity.html https://www.firemaplegames.com/thelostcity.html
- lfowles 10y agoJonathan Blow released The Witness[0] not too long ago. An exploration game based on puzzles and meta-puzzles involving tracing lines. The Talos Principle[1] scratched the same itch. It involves directing laser beams to ... laser beam receptacles :) EDIT: Disclaimer for The Witness: Go in without reading much about it. It's got plenty of puzzles about connecting paths, but that's all you really need to know. The game is as much about discovery and thinking outside/around/underneath the box as it is solving the explicit puzzles. [0]: http://store.steampowered.com/app/210970/ http://store.steampowered.com/app/210970/ [1]: http://store.steampowered.com/app/257510/ http://store.steampowered.com/app/257510/
- joshschreuder 10y agoThe Witness and The Talos Principle are both excellent. I loved Braid too, but there's something about the zen nature of The Witness and fiendish puzzles that really appealed to me. The final challenge was so much fun.
- Mithaldu 10y agoFair warning: The Witness has some unsolvable puzzles for people who're bad of hearing or colorblind. Additionally the puzzles mostly revolve around moving around in the game world until you can see the "solution" to the board in the surroundings, at which point you then simply input it; while working out the solution based on rules inherent to the puzzle is often impossible. For example there are two entire sections where the puzzle boards offer zero hints as to the solution and the player has to move around so ----------, which one then follows or redraws with the mouse. Other puzzles involve around walking ---------------------------- so that ---------------- form continuous lines which one then traces with the mouse. I found myself utterly bored because even 10+ hours in i still felt like playing a really elaborate game of "find the easter egg" instead of actually using my brain. YMMV.
- norswap 10y ago> Also, demos are not really necessary today; if people want to find out about a game, they can look on YouTube or read what many many people have to say about the game on the internet. Just no. And the steam refund if played less than 2 hours doesn't help. For most games, 2 hours is not enough.
- chii 10y agoDemos sounds good in theory, but I think you'll find that they adversely decrease sales in the long run. They take effort to put together, and serves only to stop the player from buying. The reason is that if you are interested enough to try the demo, you'll only be swayed to not buy the game if you're dissatisfied, it obtained enough from the demo that you're no longer interested in the actual game. If you're already going to buy, you won't try the demo. In both cases, it's bad for the developer.
- archagon 10y agoI've seen this argument and I strongly disagree. Speaking anecdotally, I've bought plenty of games after trying the demo that I wouldn't have even considered otherwise. (Or would have waited to go on sale.) Also, I think it's just the right thing to do — though with Steam refunds, it's probably not as big of a deal anymore.
- ben_jones 10y agoOn the flip side games like Battlefield and Overwatch which are entirely multiplayer driven and have various balancing and load-testing requirements benefit immensely from (free) alpha and beta stages which are essentially demos. With the increased prevalence of such games I can only imagine demos remain prominent (even if they are called "alpha/beta periods" instead.
- douche 10y agoSteam sales and Humble bundles give an incredibly low-cost chance to try out games that you wouldn't ever take a flyer on at full price. I've found a few gems, but there's a lot of stuff that I haven't played, or have put in under an hour on, but hey, it was $2. Cheaper than a cup of coffee.
- nstj 10y agoFor anyone reading, this is 1 part of a 4 part series he has on his blog (over around as many days). And Blow is an animal! I wish this guy was on my team and not an indie developer. His output level (and pragmatism) are insane! Change the fundamental structure of a ~100k loc project in a few days? No problem!
- wNk6A23YB 10y agoReading this post you'd think Braid was a complex game but having never heard of it I looked on Youtube and it's some kind of rinkydink 2D scrolling Super Mario clone. It's amazing people put any thought at all into this kind of thing that was obsolete 20 years ago.
- pmoleri 10y agoJust play it. The first level you will think you were right, if I remember correctly it even has some references to Mario, but if you continue it will surprise you and realize that is far from a 2d scrolling. The Last few levels are really challenging.
- ClassyJacket 10y agoThis comment is the definition of the word "ignorant". Braid is a mindblowing puzzle game and nothing like it had ever been released before.
- rleigh 10y agoAppearances can be deceiving. It might look crude and simple, but it's not.
- dang 10y agoPlease don't post snarky dismissals to HN.