An Open Love Letter to Our PC Fans
ironhidegames.com
ironhidegames.com
That being said, this letter is cloying. A letter where you tell someone you care about that you don't have it in you to be with them isn't a love letter, it's a "Dear John" letter (http://en.wikipedia.org/wiki/Dear_John_letter). For the recipient, those two types of letter are very different!
It would have been 100% fine to just say "look, it would take a huge effort to bring Origins to PC, and we don't have the money or the energy for that." There's no need to dress it up in shiny happy "we love PC!" platitudes.
That seems so wasteful and challenging, anyone from the industry care to comment on how a studio would get itself into a situation of effectively zero reuse of their code?
It also doesn't help that due to the structure of the industry (e.g. work hours, low pay etc.) they have trouble retaining developers and instead replace them with fresh grads. A huge percentage of people I know left the industry before they hit 30 (myself included). This leads to a lack of experienced engineers.
Ass properly covered, I'll be real: I'm never surprised to see this because "code reuse" is generally the sign of reasonably advanced developers and I don't know a single person in game development I would hire for a role outside of it. It's not just NIH--that's a problem but one slowly going away. It's more just a fundamental lack of understanding of software engineering and building Good Code. As time goes on I've seen gamedev acquaintances poorly reinvent most of the wheels that the rest of the world takes for granted--even something as simple as serialization for save data and network transport (but no schematic validation, because "schemas suck") was trumpeted to me as this Big Crazy Great Thing. Which contextually it may be, but I kind of feel like the state of the art for stuff not involving pointer munging is about a decade behind everybody else.
So, code reuse? Gotta make good code first.
The problem is not whether or not game developers know how to reuse code but whether or not it makes sense or are allowed to reuse it. One big challenge when you are going to reuse code is not having a stable set of requirements (which in gaming is almost non existing even in the late stage of a project) and when you take that and join it with tight and unreasonable schedules you would have a huge mess as result.
The state of the industry is very unhealthy in my opinion and I wouldn't be surprise if there is another dark age for videogames coming up.
I worked in a company that went from doing software gigs in general to be full mobile gaming company. Before it was quite standard Agile style company: Scrum, code reviews, TDD, cross-functional teams (front end devs knew how servers works in general), focus on quality over quantity (one dev, rotated weekly or biweekly, focusing on fixing bugs), separate concerns.
After going full game-oriented, company hired couple of people from gaming industry into higher positions - tech leads, project managers etc. Over couple of months, people with many years of experience in those big companies dismantled what was standard for me, using combination of two arguments:
- big names don't do it, so it must be wrong - it's a waste of time
Before I quit, there were no longer code reviews (waste of time), all testing was to be handled by QA team (waste of valuable dev time), ship with issues (waste of time to fix minor bugs when can add features), single system responsibility (one dev to write code for client server protocols, one dev for UI, one dev for assets etc, that's gow big names do it).
At one of the last talks with "industry veteran", when I mentioned those things - and how negative, in my opinion, those changes are, his response was "so you are saying that whole gaming industry dev practice is wrong". At that point I thought he's right and I sound full of crap, now I believe that yes, AAA companies are simply bad development practises shops.
My guess as to why is because AAA is very strongly driven by deadlines and marketing, where you cannot simply delay release (Christmas shopping spree is coming). This idea I saw articulated on HN first and I agree with it.
For example, look at Assassin's Creed - will the bad launch cause people to avoid AC in the future? Maybe, but probably not.
Shitloads of money. Massive institutional knowledge of public relations and marketing. Direct lines to Sony and Microsoft. Every kind of benefit of economy of scale you could want.
It's not like the idea of a barrier to entry is a new concept.
It's pure meritocracy here, if you are good then getting a publishing deal is not a problem.
The core of an "AAA studio" is a big fat wallet. It's essentially definitional. You're not actually saying anything with respect to them in any of your posts.
AAA do get a lot of money but it's the effect of them making games that sell well. There are dozens of startups in SF that cannot make even mobile games with their piles of cash and hundreds people. Money do not make you a AAA studio.
I could see arguing here with myself that AAA games are usually "ship and forget", with some bugfixes only. Maybe because company I was working in was not AAA, but small (by industry standards) f2p mobile shop, where applying AAA ideas is not that great (in my opinion). I mean that's where your product is more along lines of web apps - you are going to constantly add content, update code base, refine features, so focusing on quality in long term is better. This, thought, I was not able to articulate clearly and properly to AAA veterans.
I feel like not all ideas from current practises can be applied to big gaming studios, but saying that I believe it can be improved. This may need time and risk that companies that are big enough to be called AAA are not willing to take.
Why two companies you mentioned failed? I think we can assume there might be more reasons to that than only being Agile, maybe their games were just not that good, or IP was boring? Still you sound like you have more experience than me here, I'm trying to wrap my head around whole AAA industry thing. I'm ranting about it so much because making games was way more entertaining than web/mobile, but the industry is so poisonous for pure developers that I had to quit to regain my sanity :)
>This may need time and risk that companies that are big enough to be called AAA are not willing to take.
Infinity Ward, the original home of $1B+ games, had about 100 people at the time of the split from ATVI and founding Respawn. It's about the same size now as well as the Respawn. Media Molecule is just a few dozens. Size does not make a AAA studio.
And you don't even need to show the best practices right at the AAA level - start small and if it's any good people will copy you or, at least, you should be able to grow yourself.
>Why two companies you mentioned failed? >I think we can assume there might be more reasons to that than only being Agile
Indeed, it would be naive to blame Agile on destroying multi-million businesses. Agile seems to be just a symptom. It could be that the management sees that the development process is failing and tries to improve it with a well advertised technique, for example. Or that some Agile enthusiast gets too much power due to the weakened culture. What I was trying to say is that very few AAA studios practice it now and the ones that did in the past are not in the business any more.
Also, there is no single AAA development way. For example, Valve's practices are very different from Bungie's, which are different from the R*, which are different from ATVI's COD teams etc.
Add to that that each framework has its own standard and way of doing games (event-base, component-base, etc.). The worse part I think is the game logic is generally enclosed in framework-specific objects like events in as3, components in unity, etc.
Virtualizing that would be expensive, tricky and costy in terms of performance.
That's amazing.
The difference between engine optimized for certain platform is simply massive. We're talking at in the worst case 10x the performance difference.
Why is this? Let's take modern console game for PS4. It uses mantle like API where you can simply spam drawcalls like no tomorrow. Port that to DX11/OpenGL and you'll choke.
Or move a simple OpenGL game from PC to mobile, it does nothing fancy and uses ES2.0 subset of OpenGL so it should work nicely? Not quite. All your scenes are built using effects that cause massive performance penalty in tile based renderers. Sure it works fine on Tegra K1 but everywhere else it's horrible.
On the other hand there is a way of doing multiplatform development. It means using Unity (or other multiplatform engine), limiting yourself to a common subset and leaving the optimization part to be the headache of the engine developers. However even if you use Unity you have to manually consider the effects you are using on per platform basis.
After the Amiga/Atari/Commodore/etc era when games were ported on every platforms came the PC age (which was relatively divided from the consoles during a long time). Now heavy crossplatform is back again.
Basic, C and Pascal were the Python and Ruby back then.
So porting studios appeared, specializing in porting the games to specific platforms. The porting industry came to life.
Fast forward 30 years, you still need to write quite hardware specific code if you wish to squeeze out every possible ms out of the machine, which opens the door for all kinds of shortcuts.
This of course only matters when doing AAA games.
So you do the safe thing everyone else is doing, Cocos2D and Objective C. You'll worry about porting later, if the game does well. Maybe you'll just pay someone else to do it.
They could have used AIR on mobile to re-use the AS3 codebase. Alternately, they could have done c++ on cocos2d-x instead of objective c, so that would have been pc portable.
They would just have to write it twice, in that case. However, if you are a group of AS3 devs jumping to mobile, they probably picked the best sounding thing at the time - which was cocos2d.
Keep in mind android wasn't really a game platform in 2011, so choosing cocos2d in obj-c over c++ wasn't really a bad call.
EDIT: Here's what they are saying about Unity:
"We never had a Unity port for Frontiers. Origins is coded in cocos2d, like all the other KR games. By the time Unity became known to us, we gave it a try with the Steam version of Kingdom Rush. This was mid 2013... Frontiers was almost ready by then. Early 2014 we started working on Origins and we used the old engine out, sine the effort of adapting the old games to new platforms wasn't exactly good to us. Origins is the last game that will use our old and loyal cocos2d engine. As we define what our next game will be, we are very much aware that it must be multi-platform."
I guess they are too exhausted at this point. Even with Unity there are bugs specific to each platform and supporting that takes time.
You might need to adjust some screens so they work better with a mouse instead of with taps, but this game doesn't use multi-touch or anything that can't be done with a mouse so I don't see an issue with that.
You also need to write platform specific IAP and notification code, but again, going to desktop you won't have notifications, and writing platform specific IAP code is not that big of a deal, especially compared to porting your entire game.
Short story is, these guys chose their engine very poorly. They had already experienced cross platform issues in the past, and seems like they just decided to ignore them until it was too late.
I have no sympathy.
In my case I bought one game and was hit by this bug. I contacted developers with strace data and got no response. Then I contacted Unity developers and they actually got back to me and confirmed that it's indeed the case with large XFS partitions (they had to set up that test case to verify it). They produced a custom build of Unity player of the same version with patch backported, and I was able to run the game.
Now, those game developers obviously don't care about supporting such cases, yet they sell the Linux version. I don't appreciate it on one hand, on the other hand may be it's better than not having that version at all. But I can see a point of some being exhausted and trying to avoid bug reports for systems that they can't properly support.
The proper response from a Unity game developer who wants to sell a Linux version but not support it is pretty simple- just offer refunds for anyone who has problems. 0 work and problem solved.
Also, good Unity developers know there are platform specific issues (and how to solve them). I'm not saying platform specific bugs don't exist. They're just rare. When they happen, post on the Unity forums or Unity Answers site. Unity employees will read it, and get back to you. The support is great. This is why you use Unity. Let Unity do this work for you!
They wrote Kingdom Rush first in flash, then ported it to iOS, then ported it to their own proprietary mobile engine that's portable across iOS and Android. Earlier this year, they also ported it to Unity.
This blog post is talking about their newest title, Kingdom Rush: Origins, which isn't built on Unity but still on their own proprietary mobile engine.
[0] http://www.ironhidegames.com/forums/viewtopic.php?f=5&t=5950...
(At least, that's how it sounds to me.)
I guess the problem is that you need different rendering code? OpenGL works on PC and mobile, but you'd need to mock it out for WebGL. Has someone already done this for asm.js?
Presumably there is some other huge hole in my thinking...
[1]: http://haxe.org/
It does look like the situation has improved since then, but I'm guessing that documentation is a big reason for Haxe being so underappreciated.
The game is definitely not pay-to-win, although there is low flexibility in strategy. (You must use all 4 types of base units.)
All three of these games are great fun and a great way to kill an hour while, e.g. waiting for a plane.
If someone is really that bad at the game that they can't even win without using a ton of items per level, then yes, it's pay to win. But if it wasn't pay to win, they would just be stuck and couldn't play at all.
The game isn't freemium either, and it's not designed to be pay to win (I'm a successful freemium game developer).
> Do these games have a large following? It's widely considered to be one of the best tower defense games on iOS.
This seems to be a bit of a recurring thing where we evaluate technologies wrong very early and punish ourselves in the long run. The fact that Twitter once was a Rails app comes to mind.
I can't recommend enough to write software for the best case scenario. You shouldn't have to replace your entire toolchain once the thing you dreamt about happening actually happens.
The game's popular enough that Activision did them the honor of cloning them for their recent Duck Dynasty game, so it's hard to say they screwed up that badly.
It's not that the picked the wrong tool for the job, it's that the job changed.
sehugg kind of got a point, but I think there were really good cross-platform solutions available back then. Just not the ones used today. Marmalade has been around for a quite while and it was/is used by a lot of big studios.
The other two comments I don't agree with.
> It's not that the picked the wrong tool for the job, it's that the job changed.
If your tool can't adapt to new requirements an argument can be made that you did in fact pick the wrong tool in the first place. That's my point exactly.
> That seems like a better option than over encumbering yourself to begin with by adding in effect a bunch of additional cross platform requirements.
I think this is a bit of an exaggeration. They don't write their own engine, so the overhead for going cross-platform is really, really small — so small that I have a hard time coming up with examples right now. Not hard coding screen sizes and that kind of thing might be one, but that's about it. There's also some irony in saying that's the better option given the blog post we're talking about.
> In three years we had made five versions of our two games. For each version, the programming was done from zero.
Besides, it's only 2D tower defence. The artwork probably took longer than the game, and at least that's portable.
Then there's the question of which platform is most profitable. I've heard that the profitability order is iOS > Android > Web > PC for this kind of game. Maybe others have experience of this.
Edit: well, I guess there's no quicker way to get correct information than to post incorrect information!
In my spare time by myself in the last 4 years I have built a complete cross platform engine from scratch for Desktop and Mobile. If one person can do it their spare time in 4 years, a couple of programmers working full time could do it a lot more quickly (I also deliberately reinvented the wheel in a lot of places I did not need to).
I develop with GCC rather than VS, but I have much the same setup with a single makefile that can build for different targets instantly, e.g.
> make (for PC) > make android (builds and deploys to a connected android device)
There are way better criticisms of Xamarin than the price.
PS. I think they should fix the bugs in KR Steam first anyway, which was pretty much abandoned.
On the other hand, the use of bold and non-bold was driving me nuts. I feel it's up to the reader to decide what is important in the text, not the making of certain sections of bold, it was hard for me to read.
After awhile, as I wanted to read the whole thing, I copied into a text editor to read.
My guess would be that the actual reason might be the lack of reliable distribution channels and/or rampant piracy. Though there is Steam, which seems to work just fine for a lot of game devs...
Google for steam tower defense
click steam web page link
"Showing 1-10 of 101 results"
Trying to be the 102nd competitor. That's tough. I can see the disinterest. Can you split a very old market 102 ways while making a profit? Frankly, probably not.
If you have even the slightest inclination to release on multiple platforms, you should be building it as cross-platform from the beginning. There are very few reasons not to.
I think a lot could be done to make the core of the game more portable. It's just not being done for one reason or another.
Or they highly recommend you play with a gamepad.
BTW IGN is giving away Kingdom Rush Frontiers promo codes for iOS, limited availability.
> Should we make a PC version? Absolutely!
cool.
> Can we make it? Nope.
should have been Yes.
> Are we focusing solely on mobile from now on? Not at all.
Nice misdirection. The question should have been:
> Did we decide to focus solely on mobile? Yes.
Then the rest of the article explaining why.
Short story is, they chose their engine poorly, and are now making excuses. Very disingenuous blog post.