- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Admin
The difficulties in programming business apps and video games are often of completely different natures, however, having done business apps for close to a decade and a very small (< 2 years off working-hours) of video game programming (primarily AI) I certainly consider game programming way harder than business programming. Possibly because AI-programming requires you to think about your code in an entirely different way from what you'd normally spend your time on when working on standard business code (domain models, abstraction layers, etc.)
Admin
Ok Ok, it seems as if this discussion was shifting away from a fact-based debate to a bit of a mud-wrestling
Therefore i made a little comparison of both categories of software (the way I think about it)
Games (I'm talking real games, pc games, that is, here. I'm also talking good games, which try to maintain a certain level of quality. Sadly many of theese day's games don't fall into this category. However, most of theese DO become one-day wonders)
Business Software
Admin
Doesn't the bolded part suggest code quality is important given you may re-use code in future games? Just imagine all those "wall wireframe" codes you can reuse from quake.
Admin
Of course there are applications more complex than games. But game still shouldn't be underestimated. We're still talking about something that takes maybe a dozen programmers 3 years (or more) to develop. It may not quite rival some other big projects, but games definitely tend to be a lot more complex and difficult to make than most business applications I see. (These can often be done with a rudimentary knowledge of Java + a 10-minute tutorial in SQL.)
I won't say it's "harder" than other programming fields (because some fields are insanely difficult), but it's still not exactly "Paula Bean-friendly" territory. And compared to most business apps, games are quite hard to make.
Unfortunately it seems most of the comments here are either from people who have never looked into games programming, and think "it can't be as hard as what I do", or people who want to become games programmers (and idolize them), but aren't.
Getting back to the point though, while one single game may not have a lifespan of 10 years, a lot of the code from the game can easily be reused for that long. Which means code quality starts to matter after all.. (Especially because you're not even being paid for maintaining your code. It's just that if you don't do it, you're going to have to start from scratch and rewrite everything for your next project. So the easier it is to maintain, the better)
To be honest, I've seen some horrible code in games (Anyone who owns Half-Life 2 ought to download the SDK and browse some of the code... Or maybe not. This WTF reminds me a bit of a line I saw in that SDK though. Something along the lines of: if (language == LANG_GERMAN){ m_bloodcolor = GREEN; } At least that cheered me up a bit :)
But it seems no worse than what I see in the non-games apps I work on, or the third-party libs we use, for that matter. Code in games may be messier, and contains lots of premature optimization, but fewer tri-bools and "Paula Bean"-lines of code. Less downright incompetence in games, but the code quality is still rubbish. (Even though code quality certainly matters. That's just not as widely accepted yet, partly because until a few years ago, games were significantly smaller in scope, and computers were so much slower that there were no space left for that kind of considerations)
Admin
Mate, I hate to be a nitpicky game coder, but your just not listening to us either ;)
Most companies do have engines that lasts multiple years, we keep them from project to project to save time and effort of reinventing the wheel again and again.
Look at EA, their sports games use the same engine 3 or 4 games in a row. Or Rockstar, their GTA series used the same engine with more and more updates each game over something like 5 years! Add to this that the complexity goes well beyond anything a standard database or website code has and your code standards have to be very strict or you'll be in a quagmire.
I've personally never worked at any Games company (for long) that didn't consider code maintainability to be important. I consider good readable code an aid to my sainity if nothing else.
Now I'm not saying that there aren't companies out there that consider game code to be 'fire and forget', but to lump all games coders in with them would be like saying 'All SQL/database/M$ coders aren't that concerned with Maintainability because I saw a few lines of dodgy code on The Daily WTF'.
I love this site, and I read it every day, so please don't drag it down by being offensive games coders (atleast not the ones who think that magic numbers are bad). ;)
Admin
LifeSPAN, not "Indefinite development time"
Lifespan of Duke Nukem Forever:0d 0h 0m 0s so far.
Admin
About domain models. Games have their own models too. The kind of AI algorithms used in games have been well understood for decades. Computer graphics algorithms as well. I maintain the comment about re-inventing the wheel. Business apps can be complex too if programmers try to implement their own synchronization or cryptography logic. But most business apps don't do that. So why do games have to?
Admin
And of course, all the time new things are added. Recent games want full-blown physics as well. And yes, even Newton knew how to compute that stuff, but he didn't know how to do it efficiently on today's home PC's. And even if he had known that, he still wouldn't know how to do it efficiently on the PS3. Or on any other platform.
Admin
uhm, ... , WTF?
Admin
I think the real problem with these here game programmers is that they keep spoiling good games, like Far Cry and Half Life, by ALWAYS ALWAYS including the 'runs along really fast jumps on you and bites you' enemy.
Presumably the meeting goes something like this:
"Yeah, we've done the game. Trouble is, it's too thoughtful, requires too much skill, and it's too immersive and believable." "Hey, I know, why don't we include something that jumps out suddenly? That way the player's only reaction is to back and reload." "Cool idea." "And also, make it move really fast straight toward the player? Then we won't need any AI, or much of anything really." "Good one!" "And finally, why not make it take a huge chunk of damage off the player by biting. It'll be kind of weird that guns and grenades do less damage than an single bite, but probably nobody will notice as they'll be too busy running away from these things anyway." "Yeah, ok, consider it done."
Seriously, guys, just STOP including the enemy that runs toward you really fast and bites you! Include something else instead! Even an enemy that runs toward you really fast and asks you trivia questions would be a welcome change.
Admin
Actually, I'd like a character that asks me trivial questions... but this'll lead us away from the topic.
Anyway, viewing source codes of games often reveals wtf's, as does reading game files. There you can see how much effort was put into a game to convert it from where the engine was first used. For example, in the data files of Jedi Academy (undoubtedly one of the worst games ever done) is a line for every npc in game which specifies if it beams in with "starfleet beam effect", "romulan beam effect", "idryll beam effect"... go figure.
Admin
If that is internal. Then is a cosmetic change no one will see, and may cause bugs. What if the Jedi Academy engine is reused to make a startrek game? then these beam effects name are right again... or you will need to change from your jedi styled ones. If you change this, for no reason. You will have more differences, so merging back enhancements will be harder. Is a bad idea. And resources on a game that the player sould see need to be external, because you want to support english german, french, italian, etc so your game sells everywhere.
Admin
In that case its external data (in a .pak file, i believe). Jedi Academy is based on the engine of some star trek game (which is based on the quake 3 engine), so they just altered an already modified engine and its data files and left hundreds of such rudiments, which are sometimes commented out or not loaded, but others are 'required' for the game (i.e. loaded but not used). For that specific game i'd have to agree with Alex: That code really is a mess.
Admin
12 is equal to 3. For the appropriate base, of course.
;-)
And the captcha agrees, smile.
Admin
Watch for that one on the SCJP exam, kids.
Admin
I've seen a few XBox360 games that use BINK, so even console games are not exempt here.
And for those that suggest that their piddle little 10,000 seat bank app is in the same class as video games that sell hundreds of thousands or even millions of copies to unsupported high diverse platforms is kidding themselves.
Even assuming you have a fixed target like the 360, I don't imagine many of us hit 3 million units shipped like GOW did.
I don't know about you, but I know that my apps don't have to face that kind of scrutiny. 1% of customers experiencing would you would describe as "an annoying glitch you can work around" might only be 10 or 100 people for you, but when that 1% starts to approach the population of small towns, even the minor glitches matter more and more.
Admin
For which base then?
Admin
I think you might be thinking of the game designer, designers and programmers haven't been the same person at most companies for over a decade now.
Admin
I can tell you from experience that programmers very rarely make any of these kinds of design decisions, sure we have input into the process but these decisions are ultimately up to the designers(see my above comment).
Admin
I don't know about you but the gaming programmers have convinced me that their code is good enough for WTF articles. :)
Admin
Admin
[quote user="Abscissa"]"I generally don't publish code from the videogames because I don't believe that code quality is as important in that industry."
Wrong! Try working on a project of that scope and THEN try to claim code quality matters less. The code quality typically matters MORE just because the scope is so much larger than the vast majority of IT software.[/quote]
Okay, I just had to reply to this. What's wrong with game developers? Seriously, why do you keep pretending that programming games is so much (more important | harder | cooler | whatever) than other development? ... And stop giving the BS about how hard it is to program games. … Also games usually don't have all the concurrency or security issues (save perhaps MMO games). [/quote] Try it, and you'll get your answers to why we "pretend" it's harder. I get so tired of seeing people who have never ventured outside of their IT world (and yes, I have worked in IT myself) pretending they know exactly what it takes to make a game. So if you think it's so easy: put up or shut up.
[quote user="anon"]I can also say that I have a "small" amount of memory and CPU power for processing thousands of simultaneous transactions. It's just a different scale. [/quote] Except that for most (note, I didn’t say all) IT software, the higher-ups tend to just throw bigger and faster servers at any performance issue. So, sure you could say you have severely limited memory and CPU, but more often than not it wouldn’t be true. And certainly not to the extent that it often is in games.
[quote user="anon"]Scope is much larger? How is the scope larger than, say, an app for processing CC or bank transactions from all over the world? Or a system that integrates all the (thousands of) information systems of a large enterprise or government agency? If you ask me I'd say screw ups in banking software would be a lot more serious than in a game. [/quote] First of all, what in the world does the seriousness of a failure have to do with project scope? It’s an important issue, sure, but entirely unrelated to scope.
Number of transactions does not constitute scope of the code, either. A bank app is still a glorified calculator hooked up to a database, no matter how many transactions there are, no matter how serious the consequences of failure. If it were moderately complex, then relying on twenty-year-old COBOL code as they do just wouldn't cut it.
Now, take that bank app, add in things like 30-60 frame-per-second 3D graphics with convincing lighting and shadows, multi-channel audio decoding and mixing, convincing AI behavior, rigid-body and soft-body physics models, etc., and you'll start to understand what “scope” really means.
A bank app involves the disciplines of coding, business logic and accounting, algebra, security, some standard networking, and maybe a handful of things needing internationalization. Game code involves all of those disciplines plus various branches of physics (light, audio, kinetics), calculus, basic EE (because the consoles ARE embedded systems, so ultra low-level code is needed), AI, usability engineering, economics (for MMO's), more complex networking (including dead reckoning, among other things), data compression, and up to a small novel's worth of internationalization.
Enough code from enough fields that a full recompile can take hours (which in turn requires processes to be made to minimize the need for and impact of full recompiles). Enough code from enough fields that a single game is the result of the work of dozens of coders (among other positions) at both the game company and at each of numerous game-specific middleware providers (in addition the same baseline tools and libraries non-game programmers use). THAT is scope.
I'm not claiming this makes game programming "cooler" or "better" or whatever than most other apps. Just more complex, and yes, “harder”.
[quote user="anon"]And games are NOT real time apps. You're not controlling a nuclear power plant or an aircraft navigation system and nobody in the real world is going to die if you miss an input event or two. [/quote] "Real time" just means something needs to get done within a maximum time frame. Yes, it's often associated with mission-critical and life-or-death systems, but those are not part of the definition.
Also, for the record, nobody here ever said game code was "more important" than any other code. Code for power plants, aircrafts, pacemakers, etc. are all obviously more important. Nobody said otherwise, so chill.
[quote user="anon"]Sorry for if I sounded harsh but the "my work is more important than yours" attitude angers me...You're not special. [/quote] Again, nobody ever said it was more important. But what angers both me and many other game developers is the constant barrage of flack we get from people with no game-related background who think that A. they can do our job better just because they've written a few PHP scripts, B. our jobs are easy because, "hey, they're just games, they couldn't be hard to make!", or C. any amount of other such uninformed nonsense (not to mention the barrage from much of the public who still insist our medium is nothing but "kids toys" and/or "evil serial-killer trainers" that don't deserve to be considered a legitimate medium).
If we ever come across as sounding "holier than thou" it's not because we think we are, it's just a side-effect of all the defenses we’ve had to put up over a lifetime of having to defend our hobby/career/field to completely uninformed (and yes, often “holier than thou”) parents, relatives, politicians and forum posters like yourself.
Admin
(Damn, that's the last time I try to make a long post without logging in to make it editable... Mods can delete the previous mess if they wish.)
Try it, and you'll get your answers to why we "pretend" it's harder. I get so tired of seeing people who have never ventured outside of their IT world (and yes, I have worked in IT myself) pretending they know exactly what it takes to make a game. So if you think it's so easy: put up or shut up. Except that for most (note, I didn’t say all) IT software, the higher-ups tend to just throw bigger and faster servers at any performance issue. So, sure you could say you have severely limited memory and CPU, but more often than not it wouldn’t be true. And certainly not to the extent that it often is in games. First of all, what in the world does the seriousness of a failure have to do with project scope? It’s an important issue, sure, but entirely unrelated to scope.Number of transactions does not constitute scope of the code, either. A bank app is still a glorified calculator hooked up to a database, no matter how many transactions there are, no matter how serious the consequences of failure. If it were moderately complex, then relying on twenty-year-old COBOL code as they do just wouldn't cut it.
Now, take that bank app, add in things like 30-60 frame-per-second 3D graphics with convincing lighting and shadows, multi-channel audio decoding and mixing, convincing AI behavior, rigid-body and soft-body physics models, etc., and you'll start to understand what “scope” really means.
A bank app involves the disciplines of coding, business logic and accounting, algebra, security, some standard networking, and maybe a handful of things needing internationalization. Game code involves all of those disciplines plus various branches of physics (light, audio, kinetics), calculus, basic EE (because the consoles ARE embedded systems, so ultra low-level code is needed), AI, usability engineering, economics (for MMO's), more complex networking (including dead reckoning, among other things), data compression, and up to a small novel's worth of internationalization.
Enough code from enough fields that a full recompile can take hours (which in turn requires processes to be made to minimize the need for and impact of full recompiles). Enough code from enough fields that a single game is the result of the work of dozens of coders (among other positions) at both the game company and at each of numerous game-specific middleware providers (in addition the same baseline tools and libraries non-game programmers use). THAT is scope.
I'm not claiming this makes game programming "cooler" or "better" or whatever than most other apps. Just more complex, and yes, “harder”.
"Real time" just means something needs to get done within a maximum time frame. Yes, it's often *associated* with mission-critical and life-or-death systems, but those are not part of the definition.Also, for the record, nobody here ever said game code was "more important" than any other code. Code for power plants, aircrafts, pacemakers, etc. are all obviously more important. Nobody said otherwise, so chill.
Again, nobody ever said it was more important. But what angers both me and many other game developers is the constant barrage of flack we get from people with no game-related background who think that A. they can do our job better just because they've written a few PHP scripts, B. our jobs are easy because, "hey, they're just games, they couldn't be hard to make!", or C. any amount of other such uninformed nonsense (not to mention the barrage from much of the public who still insist our medium is nothing but "kids toys" and/or "evil serial-killer trainers" that don't deserve to be considered a legitimate medium).If we ever come across as sounding "holier than thou" it's not because we think we are, it's just a side-effect of all the defenses we’ve had to put up over a lifetime of having to defend our hobby/career/field to completely uninformed (and yes, often “holier than thou”) parents, relatives, politicians and forum posters like yourself.
Admin
I was (obviously) using the phrase "10 orders of magnitude" colloquially, not literally, but you can take it to mean literally "10000000000 times" if it makes you happy.
Some internet nerd being belligerent: lame, but at least he's not arguing about spelling.
Admin
Coding games is cooler than coding business software (seriously, who doesn't agree?)
(AAA) Games have larger scopes than banking software*. Banking software is more important than any game.
Games are real-time applications (performance critical)*. Games are not mission-critical applications.
Games sometimes cannot be patched, unlike most software*.
Most re-usable game code comes from 3rd parties. Most 3rd party code is supplied to game developers with source, and often requires modification (e.g. The unreal engine is always extensively modified by the developer)*.
Games have very short schedules, and good QA procedures shorten development time*.
Games have very short schedules, and bad QA procedures and "quick hack" style programming shortens development time.
Programmers are arrogant because its a (relatively) small industry, confined to intellectuals.
Game programmers are even more arrogant because their industry is even smaller and is confined to experienced programmers.
Business software often contains WTFs. Game software often contains WTFs.
(* = reasons why good QA is required for games)
Admin
[quote user="brazzy"][quote user="anon"]10 orders of magnitue would mean 10^10 or 10,000,000,000 times.[/quote]
Only in base 10 :P
it could also mean 1024 to a programmer ;)
Admin
[quote user="Baggy McBagster Seriously, guys, just STOP including the enemy that runs toward you really fast and bites you! Include something else instead! Even an enemy that runs toward you really fast and asks you trivia questions would be a welcome change. [/quote]
Fallout 2 - Bridgekeeper special event. Based on Monty Python & the Holy Grail.
It's already been done (sort of).
Admin
Why don't you just make 10 louder?
Admin
"the few game engines that are re-used" -- Actually most modern games are based on engines that are reused many many times. Modern game engines are so large and complex that attempting to write a new one from scratch is far too expensive (both in terms of money and in time). A well written and reusable game engine becomes a very valuable piece of technology for a game development company.
Pick a random current-gen game, or the vast majority or previous-gen games and it was probably built on the same low level engine as numerous others.
Admin
What are you talking about? First of all, the PS3 is a console, not a game. Patches were available the first second you logged onto the internet with your PS3. The only thing wrong with the PS3 was Sony's decision to launch it when they didn't have their manufacturing processes up to full speed and didn't have enough games available at launch. Very similar to the XBox 360 launch, in fact, but the XBox 360 didn't have the Wii breathing up it's keister.
Admin
I recognize that crap, I used to work for that company that generated that code. They probably licensed their "game" engine out Stellar Stone for way too much, because it looks exactly like all of the other vehicle-based "game" demos they produced. I saw them sit on their asses and make "game" demos like this for years, all with the promise of next generation interaction and excitement. Yeah, nice job, guys.
We should have stuck with the bionic jackrabbits on speed. At least them it would have made sense if the characters could speed up indefinitely in reverse and clip through the entire playing field.
Admin
Why would it mean that?
What have you defined "order of magnitude" to mean?
Order of magnitude means the size of something. 1 is an order of magnitude (of something). 54 is an order of magnitude (of something). The word magnitude does not imply 10 in any way.
If someone say to me "2 orders of magnitude bigger" then I assume it's twice the size, because that what that phrase means.
Admin
cool
Addendum 2022-12-01 20:57: I'm only able to describe my current playing style to you. Nowadays, in the era of online casinos, no one visits traditional casinos purely for financial gain. Typically https://www.canadianroofmasters.ca/best-gambling/blackjack/ people just go out to enjoy themselves, drink, and have fun. And people do make money at internet casinos. I've only been able to uncover one outstanding thus far. I started making money as a result after finding a typical casino. I now make several times more than I did at my previous position. Everyone can easily locate the same online casino and play now, in my opinion, because it's really respectable. Everything is currently available online =)
Admin
I m very glad to find this post.
Addendum 2024-03-26 16:58: Hello Eric! If you are interested in online casinos and are just starting to play, you should use the Casiqo casino no deposit bonus https://casinosanalyzer.com/casino-bonuses/casiqo.com There you will get acquainted with the game, follow the instructions on their website, and learn the basic tricks to get the bonus, you will get it immediately. Thanks to reading carefully, here you can start playing safely and without losing money.
Admin
https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat https://volna-casino-apk.ru/volna-skachat [url=https://blog.hybridhealth-shinagawa.jp/?wptouch_switch=mobile&redirect=https://volna-casino-apk.ru/volna-skachat]https://volna-casino-apk.ru/volna-skachat[/url
Admin
https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ https://volna-casino-apk.ru/volna-na-androjd/ [url=http://marrons-cafe.babymilk.jp.xx3.kz/go.php?url=https
Admin
monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino monro-casino-apk.ru/monro-casino
Down
Admin
monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat monro-casino-apk.ru/monro-skachat [url=https://www.parkethold.ru/bitrix/rk.php?goto=https://monr
Admin
https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat https://sol-casino-apk.ru/sol-skachat
Download apk file online casino sol - win today !
<a href=http
Admin
selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino selector-casino-apk.ru/selector-casino [url=https://daliaudio.ru/bitrix/rk.php?goto=https://selector-casino-apk.ru/selector-casino]selector-casino-apk.ru/