9 ms·
Tough Times on the Road to StarCraft
- zzleeper 12y agoNot that it's not interesting, but a [2012] next to the title would have been helpful
- deleted 12y ago[deleted]
- angersock 12y agoNot really, as the article is covering a project near 20 years old. Who gives a shit when it was written?
- AdeptusAquinas 12y agoVery interesting article, if horrifying :) As someone whose only experience is in corporate service IT development, from the outside the game dev industry looks incredibly cowboy-ish; it would be nice to read a story where a team built a game where they met their deadlines, had no crunch times, followed excellent coding standards (CI, unit tests, peer dev etc.) and maybe even used a modern language (perhaps, heretically, a non-native language like C#!)
- blister 12y agoTake a look at the Serious Games/MilSim arena. A lot of companies in this space have standardized behind Unity3d (C# based) or as mods for existing engines like VBS2/3. Most of this work is done under government contract and has a fixed period of performance (often 18 months or less). We often crank out several great games a year on time and under budget. There's a lot of cool stuff going on in this industry right now.
- starmole 12y agoInteresting perspective! You bring up a lot of different points: - There are tons of positive "post mortem" [http://www.gamasutra.com/features/postmortem/ http://www.gamasutra.com/features/postmortem/] write ups on gamasutra, but the ones with problems are usually more valuable. One recent example of "doing it right" I remember was the XCOM:Enemy Unknown remake. Check their GDC talks! - One thing that makes games special is pushing the envelope. Yes, you can make a game on a very solid stack. But it won't stand out. - Game coders think service people are mad also: How can you use a database that you do not fully understand? You don't even have the source? Using a framework or library or cloud that you do not 100% understand seems "cowboy" to them. - Games are "fire and forget". That means technical debt is very different. It is bad at the start of a 3 year cycle, but at the end it is totally ok. - Not mentioned by you but important to point out: While working on games is great for learning and unlike anything else it is also a terrible industry for coders. Insane crunch time. Low pay.
- ido 12y ago- Games are "fire and forget". That means technical debt is very different. It is bad at the start of a 3 year cycle, but at the end it is totally ok. There is also a big difference between AAA, online, mobile, social, casual, etc. f2p games for example are expected to live & be actively supported/updated for many years if successful. Clash of Clans was released 2.5 years ago and will likely continue to get active support for many more years. FarmVille was released almost 5 years ago. WoW more than 10, for a different kind of game that also isn't fire and forget. They get a lot of flack for other reasons but engineering wise companies like zynga get a lot of stuff right.
- starmole 12y agoYou are absolutely right. I was intentionally polarizing. But thinking about it more, one thing still stands out: Even long running mmos are planned "for the next 10 years". There is an end in sight. Facebook, Google, Uber, Bitcoins, Most Startups - it's open ended! I don't think it's easy to say one approach is better - but it is useful to understand that they are fundamentally different. Personally as an engineer I like the coding approach of game dev a lot more.
- gaius 12y agoOne thing that makes games special is pushing the envelope. Yes, you can make a game on a very solid stack. But it won't stand out. I know what you're saying, but I wonder how true that is, and my analogy is the movie and music industries. You can make a very successful movie or album without pushing any technical envelopes, infact there are people who consciously and deliberately use "obsolete" tools and techniques.
- frik 12y ago> Game coders think service people are mad also: How can you use a database that you do not fully understand? You don't even have the source? Using a framework or library or cloud that you do not 100% understand seems "cowboy" to them. Not to mention widely used on-premise enterprise software with weird upgrade-paths and hidden costs. If you look behind the curtain there is a lot of legacy cruft in COTS. Customizing such installations seems cowboy-ish to others. SaaS/cloud is better and hide ugly details but may off limits for high confidential data. Game programmers often reinvent the wheel but learn from others through post mortems (former Game Developer Magazin). Enterprise devs often cook their own customized solution based on COTS. You can still install and play almost all PC games on modern hardware with Win 7+ 64-bit. Try that with old SharePoint, Exchange, SAP, Oracle/Sun, Novell, etc. software and not to mention the troubles to restore an old backup. As someone who saw both camps, I would say both sides can learn from the other side.
- ido 12y agoPlease realize the story takes place almost 20 years ago! Things have improved a lot since then (in game dev specifically as well as in software dev in general). There are still a lot of fucked up companies but you generally just don't hear about the development of >99% of projects.
- soup10 12y agoIronically the horrible path finding gave the game much of it's charm and interesting micro mechanics. The default attack move would cause the units to converge into a single file march... which is suicide against a grouped enemy or defended position.
- EvanAnderson 12y agoPrior discussion: https://news.ycombinator.com/item?id=4491216 https://news.ycombinator.com/item?id=4491216
- jokoon 12y agoWhat's the point of using linked lists ? Low memory ? I'll never understand why the usage of linked lists is so common. I mean you don't have fast random access with linked list, aren't hash maps just better for fast insertion/deletion ? Object pools are also pretty great too. I'll never forget the day a classmate in some game programming school argued that linked list were like vectors (std::vector). Linked lists only seems viable for insertions, they're not viable for fast deletion since you need to search for the pointer first. Maybe you need to index linked lists instead, but since the heap already allows itself to be fragmented like a linked list can, wouldn't it be better to just use vectors as often as possible so it can be more cache friendly ?
- maxerickson 12y agoIn a game, I would think most deletions would start from the node being deleted.
- flohofwoe 12y ago(Intrusive) lists were useful when the cost of a memory access didn't matter relative to CPU speed, so that cache thrashing wasn't an issue, and you had a scenario where list nodes had to be inserted and removed frequently, but you don't need random access. In C such intrusive lists are also easier to manage since you don't need to care about dynamic memory management since the list nodes are embedded in some other existing data structure. Today where avoiding cache misses is the most important optimization, traditional lists have indeed become quite useless, especially the non-intrusive type like std::list.
- flohofwoe 12y ago...but I think linked list were not the main problem, but (1) use of inheritance instead of composition to implement unit behaviour (but we all walked into that trap, and these were the 90's when OOP was still hip and universally seen as a silver bullet), and (2) it looks like objects have been linked to each other quite ad-hoc, instead of providing some sort of 'object relationship system' which encapsulates object linkage and querying for objects. But as I said, these were the 90's and game developers have learned from these mistakes. There's a lot of good whitepapers around about entity component systems, composition, high-level architecture of games and so on. Today it's more about asset creation pipelines and production tools, at least for 'big' game projects.
- gaius 12y agoThe team was incredibly invested in the project, and put in unheard of efforts to complete the project while sacrificing personal health and family life. I wonder if this is "invested" as in, had a substantial equity stake and it was worth the sacrifices of health and relationships because they and their families were setup for life afterwards and retired to a beach in Malibu, or some other meaning...
- wingerlang 12y ago> .. because they and their families were setup for life afterwards and retired to a beach in Malibu .. And if the game flopped then? Even a success doesn't guarantee the above does it?
- gaius 12y agoSure, but they weren't taking that chance were they? They were just being exploited.
- brainburn 12y agoHe says the maximum number of units is 1600. If 6 players mindcontrol a drone and an scv and build additional armies, the total number of units could way exceed 1600. Or what am I missing?
- ygra 12y agoYou'd get the wonderful error »Cannot create more units«. There also was a limit with certain sprites that counted towards that. It was not an uncommon error to see in certain UMS maps that had way too many units running around.
- plorkyeran 12y agoYou'd also occasionally hit it in zerg-heavy 8 player melee games due to that larvae and overlord count against the limit without consuming any supply. It was always pretty hilarious to see a small pack of mutalisks kill a carrier doom-fleet which couldn't launch any interceptors due to the unit limit.
- realrocker 12y agoReally like the story-telling style of the article. Was wondering where could I find a compilation of similar "programming tales"? Apart from http://www.folklore.org/ http://www.folklore.org/ of course.
- hybridtupel 12y agoDoes anybody know what happened with part three? Was it ever published?
- loteck 12y agoPrevious discussions of this entertaining series from 2012 here: https://news.ycombinator.com/item?id=4491216 https://news.ycombinator.com/item?id=4491216 https://news.ycombinator.com/item?id=4582123 https://news.ycombinator.com/item?id=4582123 https://news.ycombinator.com/item?id=5252003 https://news.ycombinator.com/item?id=5252003