13 ms·
Many games are held together by duct tape
- this_is_not_you 7y agoI've never thought about it but it makes a lot of sense. Just thinking about the few times I had to write some hacky code to get something to work and given the complexity of video games it is kind of expected.
- misotaur 7y agoTo be fair,everybody in web development knows the same thing is true for the internet.
- joshstrange 7y agos/web/software/ s/internet/everything/ I can't tell you how many times I have to reteach myself this lesson. I'm not advocating for writing sloppy/bad code on purpose but I fall into the trap way too often of trying to make my code a work of art or overly-clever. No one cares, don't spend twice the time to try to abstract something within an inch of its life. Write working code and move on. Once you've done something 4, 5, 10, 15 times then you can look for an abstraction. Really I think I use refactoring or "stressing over the best way" really to just be a way to procrastinate and tell myself I'm doing something useful or dare I say noble. Of course in practice it's often neither.
- downerending 7y agoAgree, though I'd add s/many games/the world/g
- nmfisher 7y agoAgreed, I think it's important to bear in mind the "time value of code". Some code may very well be "set and forget" - you write it once and noone ever looks at it ever again. If a project is allocated 100 days, why invest even 1 of those refactoring and polishing code that really doesn't need it? The difficulty, of course is knowing which code is 'set and forget' and which isn't. I usually avoid refactoring until you hit the same "how does this work again?" wall at least three times.
- cjfd 7y agoSounds more like too little care rather than too much. Of course it also depends on how much maintenance is going to occur on that code. I think in production code one should already look for an abstraction if something is done twice. The goal is not to create a work of art or an abstraction that stands the test of time. It is just to remove some duplication, distribute code a little better over functions, give things names that are somewhat better and so on. If one does a bit of that every day one is never going to be in a horrible mess. One problem is that people sometimes think that refactoring is all or nothing. You either refactor nothing or you go all the way to adhere exactly to design patterns. Neither of these two extremes produces very good code. The middle way is where the good code is.
- pure-awesome 7y agoI used to think that if something is done twice, it should be abstracted. Now, I'm a bit more careful. There's a pretty famous quote by Sandi Mentz: "Duplication is far cheaper than the wrong abstraction." https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstracti... Make sure that you're picking the write way to think about the task at hand, rather than blindly following DRY. There are times when even a single instance of a code call would be made clearer with abstraction, and there are times where having the same piece of code duplicated multiple times (or duplicated with one piece changed) is far clearer than trying to abstract it. This Reddit Comment also has an interesting take: https://www.reddit.com/r/programming/comments/5txp5t/duplication_is_far_cheaper_than_the_wrong/ddq5ykf https://www.reddit.com/r/programming/comments/5txp5t/duplica... > The main purpose of abstractions is not to remove or reduce duplication, and not even to make code "reusable"; it is to make semantic patterns and assumptions explicit and, if possible, first-class. The further comments provide more discussion. --- I agree with the rest of your comment that refactoring and code-cleanup should be done in pieces and that, as with everything, striking the right balance is key.
- cjfd 7y agoIf there is any article that I absolutely hate it is 'Duplication is far cheaper than the wrong abstraction'. A somewhat minimal abstraction has very little chance of being wrong. And if it is wrong, is it really that difficult to know? It has a chance of needing some improvement, but what code does not have a chance of needing some improvement? If one goes the full monty and introduces three design patterns every time that two lines are duplicated sometimes one will certainly end up with, perhaps, not so much the wrong abstraction as an overly convoluted one. This acticle is the excuse for programmers everywhere not to fix their messes. It is 100% opposite to what programmers need to hear.
- commandlinefan 7y ago> I'm not advocating for writing sloppy/bad code on purpose Well, if the “ugly” code works the same as the “pretty” code, but the ugly code can be developed faster than the pretty code, then you should definitely prefer the ugly code: in fact, if this is the case, the ugly code should be considered state-of-the-art because it can be written faster. Since we all accept that the pretty code takes longer, it had better pay for itself in some way. The theory is that the pretty code is easier to maintain over time: it takes longer up front, but when it comes time to make a change, since the code is so maintainable, the change is easier to make. Although that makes intuitive sense, I can’t say that that’s been my experience; in 30 years of software development, I’ve never come across code that’s particularly easier to make changes to than any other. I’ve tried to take maintainability into account when I’m writing code myself, and I can’t even think of a time when I had to make a change and found that my foresight saved me time and effort. It doesn’t help much that none of us agree on what “good quality” code looks like: everybody seems to call all code “bad”. I’ve I’d like to see software development advance a bit in terms of professionalism where we at least agree on the principles of high-quality software code, and the principles are objectively defensible in terms of what the cost/benefits of following them are.
- Cthulhu_ 7y agoAnd yet every time one starts a new project, we tell ourselves "this time I will do it better!" I just started a new big project. Wish me luck. It replaces something held together with duct tape and string concatenation in 5000 line files.
- croon 7y agoTo be fair, you probably do a bit better this time around. Most likely not on most counts, but you probably internalized a few mistakes from last time and improved on those aspects. And come next project, you'll improve on a few more. You'll do great!
- hyperpallium 7y agoIt has a light side, a dark side and it binds the whole universe together.
- gempir 7y agoWeb Development is very different I feel. Web devs iterate on their product a lot more. A game is shipped. There is nothing after its shipped besides minor patches (if we ignore multiplayer online games) Web developers constantly need to fulfill new requirements so having a good level of code quality is important.
- timw4mail 7y agoYou might think so, but it really depends on the culture and philosophy of the company. "Let's rewrite this old messy app in 'modern' technology" - sure it seems cleaner at first, but when you actually reach parity with the old app, you are likely about as messy. I tend to think that a lot of the messiness in business apps is more due to the complexity of the business rules than the structure of the application.
- rb808 7y agoThat's not true, I know of several projects that were very well written with cutting edge frameworks, elegant abstractions, full test suites and balanced 40 hour weeks. Of course none of them ever went live lol.
- whytaka 7y agoA friend of mine in gaming though had an insight I found illuminating. The difference with games though is that there’s often an element of “One and Done” in that unlike much of web development, the starting from scratch for the next generation is more of a given. There is less need for long term support as games are expected to meet its twilight much sooner. With web development however, it is a regular risk assessment and there must be a true meeting of minds to decide that a rewrite is worth it.
- rgoulter 7y ago> There is less need for long term support as games are expected to meet its twilight much sooner. I think this is true for the majority of games. But I wonder if it remains true for the most successful. e.g. GTA V released in 2013. Apparently as of 2018 it saw $6B in revenue. Though, surely a lot of this has to do with the new content they introduce to incentivize microtransactions. Fortnite was a paid early-access game in July 2017, but had a free-to-play battle-royale mode by September 2017. Minecraft came out of beta in 2011. I can agree with "just ship it, quality of code is not a concern" for an initial release. I wonder how much bad code affects big and successful products, though. e.g. Ubisoft's Ghost Recon Breakpoint was very buggy, even though it looked like an iteration on the Ghost Recon Wildlands game just two years earlier.
- SmellyGeekBoy 7y agoI'm not sure about the others but Minecraft's code was notoriously bad for years, but it didn't seem to hold it back.
- mcphage 7y agoHonestly I think the bugs _helped_ Minecraft—bugs in the terrain generation made for interesting scenery that was popular to share, and bugs in the multiplayer code helped build the community as people shared how to get things like minecart tracks to work.
- friendlybus 7y ago
- rlayton2 7y agoWatching speed runners play through games is a great way to visualise not only this aspect (that games are flimsy at best), but to visualise the same practice in any software - if you don't code defensively, often a simple mis-input breaks the game. A common pattern in many speed runs is finding some glitch through a door, and then the game logic kicks in and says "you are past this door, so you must have got the key". If you are curious, watch the five or so minutes of this speedrun: https://youtu.be/0Ct8n1CClUM?t=3072 https://youtu.be/0Ct8n1CClUM?t=3072 First, the player jumps through a game world, getting to a race he shouldn't be able to get to yet. Second, he glitches into the "solid" wall, which is just a thin wall around the racetrack.
- michaelbrooks 7y agoThanks to Breath of the Wild, I've recently enjoyed watching a few speedruns and it's amazing to see the number of glitches in BoTW. Check this out https://www.youtube.com/watch?v=JEtHpCfi_DE https://www.youtube.com/watch?v=JEtHpCfi_DE I also don't understand how anyone can accept speedrunning through glitches as a world record, but I guess if everyone does the same run with similar or the same glitches then it's fair? Seems like it just becomes a race to know every glitch in the game. EDIT: I just want to say thank you to the replies that explains the mechanics and categories of speedrunning.
- fredleblanc 7y agoThey break it into categories. 100%, Any%, glitched, glitchless, etc. To set a record with glitches doesn’t put you against people that run without them.
- Figs 7y agoYeah, to give some examples, [1] is a world-record ("WR") Hollow Knight Any% run with "No Major Glitches" ("NMG") completed in 33:07 just a few weeks ago. [2] is an Any% run that takes full advantage of glitches, and is over 10 minutes faster as a result (20:21 from November last year). [3] is an example of doing a complete 112% (i.e. getting everything that counts towards the regular completion percentage plus the DLC), and consequently takes over 3 hours. (That particular run was 3:23:34 from last June.) I mostly understand what's going on in the first -- a few minor bugs get used (like falling faster when the menu is open) and it takes advantage of things like changing the language to Chinese to skip text faster as well as quiting to the main menu to warp back to the last bench, but primarily the run depends on exploiting mechanics that are intentionally part of the regular gameplay but which allow the player to sequence break (like dying deliberately by the charm vendor to spawn your shade so that you can bounce off the shade while fighting it to get into the Resting Grounds quickly) and knowing exactly how to move to get through areas as fast as possible. For [2], I'm honestly not sure what is even going on for a lot of it. I think the speedrunner gets outside the level geometry by exploiting a bug with how loading works? [1] https://www.youtube.com/watch?v=FFZy2gtwpI4 https://www.youtube.com/watch?v=FFZy2gtwpI4 [2] https://www.youtube.com/watch?v=SAw-_uYhAlU https://www.youtube.com/watch?v=SAw-_uYhAlU [3] https://www.youtube.com/watch?v=MCOmg5kpCM8 https://www.youtube.com/watch?v=MCOmg5kpCM8
- Cthulhu_ 7y agoWriting hacky code can be liberating though. I really enjoyed hacking together things in the pico-8 last year. Globals? Fine. Neat function names? Nah. Variable names? 'a' will do.
- hopfog 7y agoI run a small MMORPG and I'm considering open-sourcing the whole thing but the code is a complete mess. The source code of VVVVVV is a work of art in comparison. What holds me back are 1. I'm ashamed to reveal the monstrosity 2. I'm afraid the code is too messy for anyone to be able to make contributions 3. it will make it much easier for hackers to find exploits. It's a shame because I think the game would be really cool as an open source project.
- tim-- 7y agoDefinitely open source it! The world needs more open source games!
- clarry 7y agoMost games' source are real messy. And it's ok. Don't be ashamed. When I find an open sourced game engine that has been patched and improved by the community, ported to OpenBSD, made run smoother on my hardware, etcetra., I don't think "what a shame the code is so messy." I think "I'm so glad they released the source code and allowed this to happen!" It's very sad to see so many games that I'd potentially like but then I run into little issues that nobody is ever going to fix without the source (or a complete remake, as in the case of e.g. OpenMW, but these projects are not very common and few of them ever mature). Game developers often think of gamers as very entitled people, but flip side is that gamers are usually left on their own with their problems and they aren't given the tools to fix them while the developer is too big or busy (or both) to care.
- friendlybus 7y agoCould you take pride in rewriting the code? Maybe as an open source adventure with others? Going through the shame of showing it off is more valuable on its own merits than leaving it as is, regardless of the code quality or social outcomes.
- seren 7y agoI believe that as code "writers", we tend to have a bias that code should well-written. And I don't think it is that important. If you are working in a global company with a distributed workforce, well-written code is mandatory because it is a way to communicate and to maintain the code in the long term. Even more so if this is a critical code that could kill. But if you started as a lone developer for a game hobby project, the achievement is not about the code quality, but more about the product as a whole you managed to ship and have users or customers. So I don't think there is anything inherently shameful in writing bad code, it highly depends on the context
- somesortofsystm 7y agoI recently found myself trying to describe modern software techniques to a layman, who is a carpenter. "Its like this - you're hired to build a house. First, you have to go get someone motivated to harvest the raw materials for you - designs, logic, etc. - which will then be turned into the 'raw wood' that holds up the walls and keeps the roof on. Then, when that person is busy getting the materials cut, you start building the tools you know you're going to need, to get the walls up and strung together. You don't have these tools yet, because you left all the previous ones you've worked with at a previous construction site. The reason for this is that you are going to use the tools to put the walls up, sure - but then you're going to glue all the tools in place to make sure the walls stay up. That glue is the most powerful stuff in the universe, but it will fail catastrophically if you don't put the tools at just the right angle in the glueball .." Basically, you glue all the new tools together, cover them in wood, and leave them in place so that the thing doesn't fall over ...
- jaywalk 7y agoFor the sake of anyone who uses your software, I hope you're better at writing code than coming up with metaphors.
- somesortofsystm 7y agoExactly. That's software development for you. :P
- mr-ron 7y agoI legitimately don't understand this metaphor at all
- mywittyname 7y agoI think it's like, 1) get a product owner to describe requirements (not sure why they are gathering raw mats instead of producing blue prints) 2) He tries to steal code from previous jobs to bring to new jobs, because he pretend that he "owns" them. 3) He can't steal code from previous jobs because he left them in the walls. 4) Javascript is glue.
- braythwayt 7y agoNit: I wish people wouldn’t mention programming and computer science in the same essay, unless it’s something very technical such as discussing synchronization algorithms. Most programming isn’t science. Most programming isn’t even engineering. Most programming is contracting or DIY tinkering. We use ridiculous metaphors like constructing an airport, when most programmers are tradespeople working on renovations. Have you ever inspected the work of a tract house builder? It’s awful and usually plays fast and loose with building codes. When an indie teaches themselves to code, we get the same result as a homeowner teaching themselves to renovate. That’s not a bad thing, but nobody swapping ordinary outlets for outlets with USB-C ports is thinking about Maxwell’s equations.
- quickthrowman 7y ago> Have you ever inspected the work of a tract house builder? It’s awful and usually plays fast and loose with building codes. This is a great metaphor. I work in construction management, and the quality difference between non-union commercial and union commercial firms (let alone a non-union resi contractor) is large enough that a lot of large commercial buildings have union contractor only exclusions (which is good for me, and better for the union tradespeople that perform the work) Programming is far more trade-like than most programmers would like to admit..
- simonh 7y agoI don't see how that's a nit, the article is basically making exactly that point.
- petermcneeley 7y agoNit: Actually most programmers I know are vastly intellectually overqualified for their jobs. We are talking like science PhDs. It's not "tradespeople working on renovations" it's more like rocket surgeons making mud huts.
- close04 7y agoThat's probably selection bias due to the circles you're part of. Most of the people I know have at least a master's degree but we can agree that I can't extrapolate based on that data. I'm sure only a small minority of the official ~25.000.000 programmers in the world are science PhDs and rocket surgeons (I expect the unofficial number of programmers is even bigger). I have my doubts that those dime-a-dozen mobile apps or websites are all made by scientists.
- uncle_j 7y agoThe code sample they have there that is "messy" doesn't look that bad to me. The reality is that almost all the code that runs lots of important things is a complete spagetti.
- _def 7y agoWhen you are making a game, priority number one is always that you are indeed making a game, and not how. (substitute "game" for anything you want to do) I love elegant code, but in the end it's never _more_ important than the game itself.
- tartoran 7y agoSure this goes if you're a one man team. But the more people share hacky code it quickly can turn into a nightmare to work with.
- angarg12 7y agoAnyone working in the industry knows that the fact that software works at all is flabbergasting.
- huffmsa 7y agoThis I what made the 1990s era games so full of non-critical bugs AKA "glitches". The ceiling of complexity was raised waaaay over that of the previous generation of tech, but the techniques used by developers didn't advance nearly as far. So you have a lot of if this value == this number, load this scene (OoT) or if this value is greater than this limit, cycle it back to the lowest possible value of the range (Civ, Nuclear Ghandi) Now, bugs in big games tend to be critical crashes because the tooling and techniques have standardized and caught up to the complexity ceiling
- ipython 7y ago“Perfect is the enemy of the good” applies to computer programs just as much as anything else.
- dang 7y agoRelated from a few days ago: https://news.ycombinator.com/item?id=22011358 https://news.ycombinator.com/item?id=22011358
- kelvin0 7y agoEx-Game dev here: shipped many titles on console (AAA and some zzz titles). When comes time to shipping a game, the crunches, pressure and overall stress is through the roof. Most everything goes at that point: duct tape, hot glue, bobby pins and toad spit. And if you disagree with management over these 'not so best practices' (in order to ship faster...) they will find someone to do it and you could be out of a job. That being said I would not trade my time in that industry for anything else. It's basically the BUDs of programming (of course I'm biased) Good times!
- tartoran 7y agoWhat does BUDs stand for?
- kelvin0 7y agohttps://en.wikipedia.org/wiki/United_States_Navy_SEAL_selection_and_training https://en.wikipedia.org/wiki/United_States_Navy_SEAL_select... Basic Underwater Demolition/SEAL (BUD/S) Training
- alxmdev 7y agoIf anyone wants a taste of what it's like to start with a clean code base that sharply turns spaghetti when the deadline gets close, give Ludum Dare a try sometime! By the end of the 48h you're forced to choose between growing the project sustainably vs. implementing as many core features as you can before the clock runs out. Write-only programming!
- avgDev 7y agoWhat do you do now? I like clean code, but also understand the need of producing results. I get pleasure from creating clean, readable, commented and maintainable code. However, I understand my boss mostly doesn't care, he just wants a working product that can improve the efficiency of our business. Example: Product which ran part of our business for the last 15 years, is the worst code I have seen in my entire life. I have seen better code written in a state university. However, it did its job and generated a lot of money in the process. I think delivering glued/hacked code happens in many places.
- cryptica 7y agoThis is very true. I created an open source framework to help developers build scalable real-time systems and I tried to focus on multiplayer games at one point; I thought it would be a good idea to ride the wave of web-based multiplayer .io games by targeting those developers but I ended up realizing that they're better off just using raw WebSockets. My framework could only help in terms of producing the initial prototype. The profit margins on ad-sponsored web-based multiplayer games are paper thin. They don't care about code structure or cleanliness at all. If someone can make fugly code that performs 10% better, that can make the difference between a profit or a loss or it can mean doubling profits/earnings from the game. This is very different from most software businesses where even a solution that performs 10x worse is still acceptable if it makes for cleaner code that is easier to maintain and can handle changing requirements better. Micro-optimizations and clean code are mutually exclusive IMO. Like for example, people may be tempted to send JSON objects with nice descriptive properties like 'direction', 'keyCode', etc... But in the end it's faster to just send a raw string or binary packet without any property names; just pass raw integers directly in a certain order and the receiver decodes the message assuming a certain order. This is extremely inflexible at the protocol level but it performs really well (I.e. you can't easily add new properties later or make some of them optional without breaking the current protocol).
- seanalltogether 7y agoWow a 3440 line switch statement for processing game state! https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_version/src/Game.cpp#L605 https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_...
- AstralStorm 7y agoExplicit state machine is better than an implicit one. And every program is one of these. 4 KLOC for big chunk of game logic is rather frugal. The main problems that are plain is not enough names (for states, flags and triggers) and not having split off text to some central repository. (Making translation easier.) Orthodox version of the state machine would have code execute while you're changing states rather than in any given state. The big switch statement is a good design with mediocre implementation. (Compare with Sierra's AGI LOGIC code: https://wiki.scummvm.org/index.php?title=AGI/Specifications/Logic#Sample https://wiki.scummvm.org/index.php?title=AGI/Specifications/... )
- criddell 7y agoThe giant switch statement doesn't bother me that much. It's essentially just a big table at that point. What would drive me nuts are the lack of symbols for each case. At least there's a comment for many of them.
- Humdeee 7y agoI'm not at all accustomed to game design or game code. How is game state normally called upon and saved?
- _the_inflator 7y agoAnd it works! I learned a lot about preventing magic with this here: https://gameprogrammingpatterns.com/state.html https://gameprogrammingpatterns.com/state.html For me - and I mostly do frontend apps now - I always advise to go for state pattern instead of complex if/thens. Thanks to the aforementioned article.
- lzralbu 7y ago
- mylons 7y agochange games to software
- benologist 7y agoGames, websites, and everything else - both Apple [1] and Dropbox [2] got passwords wrong in the last decade. I am in awe of the NASA programmers who have virtually no bugs [3]. [1] https://www.theguardian.com/technology/2017/nov/29/macos-high-sierra-bug-apple-mac-unlock-blank-password-security-flaw https://www.theguardian.com/technology/2017/nov/29/macos-hig... [2] https://www.cnet.com/news/dropbox-confirms-security-glitch-no-password-required/ https://www.cnet.com/news/dropbox-confirms-security-glitch-n... [3] https://www.fastcompany.com/28121/they-write-right-stuff https://www.fastcompany.com/28121/they-write-right-stuff
- matthewbauer 7y agoI think you may not realize how many bugs NASA programmers are making. For instance, see the fairly simple mistake made on Deep Impact spacecraft: https://en.wikipedia.org/wiki/Deep_Impact_(spacecraft)#Contact_lost_and_end_of_mission https://en.wikipedia.org/wiki/Deep_Impact_(spacecraft)#Conta... There are no doubt more, that don't cause the loss of an entire spacecraft.
- jlangemeier 7y agoEvery time I see "Deep Impact" in the context of NASA I end up thinking of the Climate Orbiter; where, due to an issue with unit conversion between metric and SI they turned it into the most expensive lawn dart to ever leave the solar system.
- phn 7y agoI think code quality is important, and big studios make a buck on having clean and workable code they keep improving over time. That being said, and especially on indie games like VVVVVV, hammering in a cool little detail gives the final product much more value than having clean code. That's why big engines with mature coding patterns sometimes are not the way to go to make a cool little thing. Making novel mechanics (e.g. time reversal in Braid, or the super tight controls of Super Meat Boy) with an existing engine, while possible, would probably be a PITA. The "hackability" of the engine you use can allow you to be more creative, even if a bit messy to maintain. Back in the days of flash, I'd probably use a simple display list engine (flixel comes to mind) to do the heavy lifting, and hack away with those basic building blocks. Nowadays, I was surprised by the relative hackability you get with godot[0], while still being able to tap into what you can call a mature engine. If you like to make small games, you owe it to yourself to check it out. [0]: https://godotengine.org/ https://godotengine.org/
- rglover 7y agoSomeone posted this talk by Johnathan Blow on a story a week or two ago and it seems worth sharing here: https://www.youtube.com/watch?v=pW-SOdj4Kkk https://www.youtube.com/watch?v=pW-SOdj4Kkk
- CoolGuySteve 7y agoAs a counterpoint, the Quake -> Quake 2 -> Quake 3 original open source releases are remarkably clean. Quake 2 in particular is very minimalist and the game was developed in something like 10 months. Granted, it's not really fair to compare anyone to the id software team of the time. But the requirements of the Quake series, basically a BSP renderer that is easy to modify and extend, probably forces it to be extensible and clean.
- tluyben2 7y agoEngines (Doom, Quake) need to be much cleaner and more consistent than (one-off) games.
- AstralStorm 7y agoMind you both reused many ideas from previous ones. Doom reused Wolfenstein 3D, Quake reused pieces from Doom. (WAD format for example.) The engines made for the games were indeed intended to be one offs. Reuse of design and formats does not imply reuse of code. This is very different from new "universal" engines like Unity, Unreal Engine, Ogre, Frostbite, Dawn Engine or Unigine. Those were designed to be separate from games.
- tluyben2 7y agoTrue; I guess ID had this internal engine strategy or it grew out of the culture there naturally? I read the Doom book but don’t remember if that was explained. I have the Doom black book but did not read it yet.
- winrid 7y agoI'd suggest Michael Abrash's Black Book which I recently read. He wrote it while working for ID and there's lots of little bits of gold in there. The PDF is free online. Note, it's very big.
- 7y ago
- hawski 7y agoIf AIs of today make a heap of code (if you say it's data, I say data is code is data) that is really a spaghetti of a code that happens to seemingly achieve a goal, maybe game developers are already a bit like that ;)
- tluyben2 7y agoSo is almost every other piece of software. I would like to see an analysis of commercial closed source software on how many of then use good practices, have clean code etc. Not the ones that filled in the [] we y use TDD in the CIO monthly questionnaire. Maybe I meet the wrong companies I have to work or integrate with, but in my experience it is not very far from 0% (but it is >0 luckily). I met one company last week who do everything right, but only for projects over 500k where over 10% goes into those practices, otherwise there is simply no money for the overhead...
- ken 7y ago> “Games aren’t just an ordinary piece of software, they are a complex beast that require many different disciplines to successfully ship, and often on timelines that require sacrifices to be made,” said game developer ... Is this any different from any other type of software? What is this "ordinary" software that doesn't require different disciplines, or have timelines?
- xsmasher 7y agoIt's not the most complex or hardest kind of software, but it does have special concerns. Dates are huge; you have to have a good E3 demo, and you (often) have to ship in time for Christmas. These dates can not slip. There's also a lot more art / interfacing with artists / art tooling and collaboration than a typical software project.
- cr0sh 7y agoVVVVVV's code is still better than the source code of Descent - holy hell, was that codebase a mess in areas, and virtually no comments in the complex parts of the 3D engine...
- ChikkaChiChi 7y agoI'm sure there are oodles of creators out there who hold back their source code because they don't want to deal with being shamed. We should be using these opportunities to learn and grow together, and not as a soundboard to feel good about how much better we are than someone else.
- jayd16 7y agoThe real differentiation to games from most other software is just how little correctness actually matters. It arguably doesn't matter at all as long as it doesn't produce feel bad moments lost items or lost progress.
- rafaelvasco 7y agoIt's interesting to see how duct taping a game inside out can result in absolute success once you ship something valuable. It can be really thrilling and you can get away with it specially if you're working alone, which for me is the best work. It's another story entirely if you're on a team, coding together a product that must be maintained and improved for years. I work on both sides, and I can say that I only have real fun when I'm coding alone. Though learning to work in team is a great skill as well. I'm specially careful with code architecture and readability, but sometimes when you're on the flow, the zone, the code just flows as well;