With apologies to Winnie the Pooh, something I've really come to appreciate working with other people's code is code that compiles warning-free.
When you compile code with warnings you have to ask - are the warnings there because you've done something wrong? There's no way for you really to know. You need to look at the code, figure out what it is doing, and decide if it is correct. That's not always easy. But it always takes time.
Multiply a couple minutes of investigation by several hundred warnings, and new code can be a real pain to integrate. Not to mention that every time you integrate a new version, you have to look at the same warnings all over again or, if you've fixed the warnings, you have to integrate those fixes into the updated codebase.
So if you're making code for others, take the time to get rid of the warnings. When a new one comes along, it will be easy to spot and it'll most likely be in code you just wrote so it will be easy to fix. You might even consider turning on the compiler setting to treat warnings as errors.
One last thing, no points for using #pragma or compiler settings to suppress warnings. There are very rare occasions where the code is right and the compiler is wrong, but hardly ever.
From the programmers' wisdom file.
The last couple days I've been having Visual Studio 2010 crashes every few minutes. I'd be typing, or changing files, and WHAM Visual Studio has encountered a problem and is restarting.
Automated file recovery helped a bit, but I kept losing 15 or 20 minute chunks of work.
I had tried deleting and rebuilding all of Visual Studio's temporary files, as well as the temporary files from Visual Assist X
which is the only plugin I'm using (and it is super awesome by the way - if you don't have it you owe it to yourself to get it!) Still kept crashing.
Getting a little desperate, I took a look through recent changes from Windows Update and noticed that an important hotfix had been installed January 25 Update for Microsoft Visual Studio 2010 Service Pack 1 (KB2635973)
. Hmm, a suspect.
Googled about, couldn't find anyone saying they had trouble with it. But having read the info on it, it didn't seem like it would be a problem for me so I uninstalled it.
Not one single Visual Studio crash so far today.
I've been quite disappointed by the big stink being raised over the offline pass for Kingdoms of Amalur. (Disclaimer: I have no inside knowledge of the providence or politics of the online pass from my time at EA - I just made the games.)
I'm a firm believer that if I buy something, I should be able to do whatever I want with it, so I'm firmly behind the people who want to be able to buy and sell their used games. There's a little irony there considering that I also sell software with online activation. (In my defense, I've always been very generous with activations and transfers for paying customers.) But as a customer I've become very selective about the games I buy, making myself aware of any restrictions imposed by the publishers before buying. And some of those restrictions have made me miss out on some really good games. But it has also caused me to buy a whole lot of great DRM-Free indie games so I guess that actually nets out as a plus!
I've been critical of the "online pass" since I first heard of it because it is publishers using a stick on used game players. Pay us or we'll break your game. Publishers attempted to justify the charge by claiming that because it costs money to run the online servers, they need to recoup that through single-use game codes at $10/per. Sure servers cost money, but they cost so little money for most games (there are some exceptions) that this argument is spurious to say the least. A single game server supports at least 1000, and as many as 10,000 simultaneous users. Multiply that by 24 hours for round-the-world players, and there's some serious capacity in just one server machine. Once the servers are installed, the ongoing costs are relatively minimal for a game selling millions of copies.
Now with Kingdoms of Amalur introducing an online pass for an offline game, EA is finally being honest about what it really is - a shot at Gamestop and the used game market.
Getting Audio into the game is a huge leap forward. You don't realize how much sound adds until the first time your game boots with its theme music playing. There's a physical reaction to sound that is hard to ignore.
After a bit of research I came to the conclusion that the only free option for an audio middleware layer is OpenAL. If you have some money you might want to consider Miles or FMOD - they have a ton of functionality you won't need to build yourself.
I was kind of uneasy initially when I discovered that the OpenAL 1.1 Core SDK and the OpenAL Installer haven't been updated since 2009. Hello? Anybody home? As it turns out, OpenAL has continued to develop, but it is within the drivers and with the extensions. Like OpenGL, the core OpenAL API has an extension mechanism to add new stuff while the core API doesn't change. If you're at all uneasy with OpenAL, go check out the list of games that have shipped using OpenAL - there are a lot of big names there.
OpenAL gives you 3D sound positioning (with distance volume attenuation) with hardware mixing support on some audio cards and the ability to play many sound sources (with different sample rates) at once. If you have a Creative Labs sound card, apparently you get other fancy EAX features through extensions. I haven't looked into that at all.
My first thought for the game's audio file format was MP3 to save space, but MP3 is covered by patent and requires per-copy royalties. Instead I went with Ogg Vorbis. Here's a handy link to a page with all the developer downloads. LibOgg is the container file library and is used by LibVorbis which is the audio codec.
I've been playing Guild Wars quite a bit over the Christmas vacation. I have to admire their business model. The simplicity of it is wonderful. Sell the game, sell some account-wide addons in a secure, off-the-shelf online store, and you're done. It's a shame it's an impossible business model for an indie. The cost of selling that first package is simply too high a barrier without a huge advertising budget.
With my requirement for in-game microtransactions I spent a lot of time over Christmas thinking about how to manage and record those transactions.
My design criteria ended up being:
- Transactions must be resistant to programming error.
- Every transaction must record information about who is involved in the transaction should there ever be any problems with criminal activity.
- Every transaction must be recorded in sufficient detail to be reversable. If there's fraud, I want to be able to run back the clock.
- Transactions that the user has seen the result of must survive a server crash.
- The system must be secure - it is recording real money transactions.
I've done a fair amount of accounting over the years for my various small businesses, so my first thought was to look into how commercial accounting software systems operate. I spent a bit of time googling around and with the help of Stack Overflow I was able to find a specification document for a General Ledger which gave me the basic table design for a double-entry accounting system.
I never could have predicted in a million years that my little indie game would need me to develop a double-entry accounting system.
I keep a log of everything I do each week. With the year coming to a close I thought it a good time to look back through it and see what I've accomplished. It turns out there have been a lot of accomplishments this year. I thought it would be nice to pick out a few of them to share.
I like to do little features in the evening, separate from the bigger stuff I work on during the day. Sunday evening I thought a Terms of Service (TOS) screen would be a nice easy feature.
Little did I suspect I would encounter an international cascade of fail trying to get the TOS to actually work.
I'm just finishing up Dragon Age Origins Awakening. Playing that game so much during the last year has definitely influenced the design for my game. RPG's often feature stuff you can collect: swords, armor, potions, runes. With those items you can usually add enhancements to improve their stats. Sometimes you can combine several items to make completely new items (crafting.) The meat an potatoes of a lot of RPG's is a zillion items and enhancements that can be combined in myriad ways to give the player the choice of how to gain advantage in-game.
I'm not saying I'm making an RPG. But I have been building a data-driven system to support both item enhancements and building new items from components the last 3 weeks. There's still a lot to do yet, but as of today, much of it is working and new entities are appearing in the game. So cool.
Bigpoint managed to sell 2,000 spaceship drones for 1,000 in just 4 days. That's two million euros
(US$2,596,400) in just four days selling entries in a database. Wow. Here's the story
So as of yesterday I'm Tweeting on Twitter. The writer in me quite likes how Twitter forces you to refine your thoughts to make them fit in just 140 characters.
I'll be Tweeting links any time I put a post here, so if you prefer Twitter to RSS, go ahead and switch over.
My tweeting is a result of me attending the Canadian Games Conference this year. One of the more interesting presentations I went to was the social marketing talk. You can check out the full talk on video, there's a link here: http://onemanmmo.com/?cgc11
I also wrote a URL-shortener for the blog. It is something I've been meaning to do for a while - ever since I first considered using Twitter. In an ironic twist, there's no point in having a URL-shortener with Twitter anymore, since they shorten all URL's with their t.co service. But I've long wanted to be able to post more human-friendly URL's for pages on this blog, so I did it anyway. Only took a couple hours to add the database table and forms for entering the short URL's. In case you're looking, I haven't made it a public service. I will probably integrate it further into the blog in the future. Baby steps.
My Twitter picture looks like I'm looking at the birds on my Twitter page. Note to self: get a new picture.
Thanks, I'm still looking for ideas of what people think could be fun to do in an open world RTS.
Sounds awesome to me, i like the idea of NPC encounters/quests etc,one thing i found when i played was you are right once you build a base and get harvesters running etc, if noone is there to fight you kinda float about waiting. Dont know what you ...
I had an absolute grand time playing this weekend. Thanks for helping me out whenever you could, Rob!
Looking forward to an awesome future
Hey Dondergod, what firewall program, and what did it complain about? It's not BitDefender
I tried to get in, but my firewall kept blocking it.
Unfortunately I did not have the time this weekend to look further into it. Probably an easy fix, but I had too much to do.
Hope I will be able to enter the next test!