I've moved my blog

It's official, I've folded my blog, MrPhil Makes Games, into Mr. Phil Games.  I'll be adding all new content there.  For now, all my old posts here will remain here, but I'll eventually move them all over.  Go check it out, it looks great!

GameProducer.NET

Today, I joined a very new forum belonging to GameProducer.Net.  You probably recognized the name because author Juuso Hietalahti has had several very popular posts.  He’s done a series of interviews including Positech’s Cliff Harris and today’s with Jesse Smith a Producer at Firaxis Games.  What I find most interesting is the ongoing series “Sales Statistics” which reveals the real sales data of some indie games.

So why did I plop $50 down to join an unproven, brand spanking new forum on game development?  It seems crazy on the surface, because other quality forums like Indie Gamer are free, but there are 3 crucial factors that made it a no brainier for me.

First, I don't see it as a replacement for Indie Gamer or the old dexterity forum archive.   I've enjoy both and benefited from both. That said, Indie Gamer has lost that feeling of group participation it uses to have and I have been reading less and less of the posts there. I'm hoping to find (will find) a higher concentration of yummy posts, more group discussion and less, “Hey! I just turn 18 and you should join my team because we are going to make the best MMO in the world.”

Second, because I'm still a beginner (in the sense that I haven’t published) I often felt my posts in other forums where considered from the same bin as the MMO nut.  This is where the $50 comes into play.  I'm very serious about game making and hope that because of the entry fee that will be true for everyone.  I also hope that because of the entry fee forum posts will be given the benefit of the doubt, taken seriously and given respectful guidance and advice.

The third and final reason is Juuso Hietalahti has a good reputation.  His blog has provided a lot of useful information, resources and guidance.  He is respected on Indie Gamer and has made significant contributions.  I believe this will help attract a very talented crowd.

So check out the details because I believe the future is bright over at GameProducer.Net Forums.

April 8-9 Game in a Day J (19)

Gidweb10_06Originally Posted by Tom Bampton Garage Games Associate

Greetings!

Sorry it's been a bit quiet on the GID front lately. It's been rather hectic around here lately and I've been trying to hold off the next GID til the site update was done. Unfortunately, finding time to get the GID site rewritten has been harder then I thought it would be. As with GID18*, time has ticked by far to quickly and people are starting to get withdrawl symptoms so its time for GID j** ...

So, join us in #gameinaday on irc.maxgaming.net on the 8th and 9th of April 2006 for GID j, the theme being Extreme Forces.

* - GID17 was cancelled because we didn't have Constructor.
** - Game in a Day got bored of plain old decimal and has now switched to a base 62 numbering scheme.

[The theme is extreme forces.]

Airbus A380 built in 7 minutes

Here's a great video.  It takes 12 months to assemble an Airbus A380 and this video compresses it down to seven minutes.

 

What strikes me is that a lot of sci-fi games gloss over the reality that the construction of a spaceship is a ridiculously massive under taking. I think this video helps give one a small taste, a mere glimpse at how much work it would really take.

I think it would be cool to have time lapse construction videos in a game. It could add a level of coolness and authenticity. Can you imagine ordering the construction of a starship and being able to check on its progress, seeing the engineers testing a system, or painting the markings? That would blow me away.

Arrrrrrgggggggg give me me free stuff

Of all the blogs on the internet I think Cliffski Mumblings is among my most favorite. I always look forward to getting updates on his game making progress and somewhat enviously reveled in his progress.  Today’s post talks about piracy and his plans to add a “phone home” protection feature to prevent it. Piracy is a topic that can quickly generate a lot of passion and very different view points in the indie gamedev community. I tend to lean towards the “ignore” philosophy because I think most pirates won’t buy the game anyway. They are simply morally bankrupt, irrational and their nothing is one can do to change that.

In the post, however, Cliffski brings up the gray area of ‘casual piracy.’ This is the type of stealing that happens when people start to feel that “everyone is doing it and I’d be a chump not too as well.” This happens because the average individual hasn’t asked themselves the simple question, “What would happen if everyone pirated?” Or more personally, “What would happen if everyone pirated my (or my employer’s) product?” The answer to these questions would sober any “casual pirate” in a second because it isn’t hard to see that the world would become empty, and anything of value would disappear because work would have no reward and poverty would be the smart choice.

In the comments Hamumu has some really interesting ideas about giving the player an incentive to go online and rewarding those who are legitimate buyers.  I think these are valuable strategies and I wonder too, if somehow getting the “casual pirate” to ask himself what a world of pirates would be like might be useful too.

Devil is in the details, right?

I recently got my hands on Game Architecture and Design.  So far I’ve been impressed with it and I’m going to try and follow it chapter by chapter and apply it to my game Alien Sovereign.  I’ve been working on a document for a couple years now catching all my ideas and refining things, which is a cross between the Treatment that the book describes in Chapter 2 and a first pass at the Game Spec described in chapter 2.  It is causing me problems in structure department, oh well.

I think, I hope, this book has kicked it into my head that I’m really lacking on the details for my game.  I’ve come across the idea in other books, but until now I keep thinking that somehow I’d work out the details while I was coding.  Instead it has been a big barrier to coding because I get lost as to what to do next, which leads to procrastination via tinkering with new technology and the like.

I’ve also been playing with the new Alpha 4 release of T2D and some of the new tutorials up on TDN.

Ta Da! Make It Big In Games

Jeff_tunnell Jeff Tunnell of Garage Games has launched a new blog site call Make It Big In Games.

"Six years ago when we started GarageGames I didn't truly know if "indies" could succeed in making a living making games without large publisher support. In fact, unaffiliated game developers were not even called indies back then, but we didn't like the name "shareware developer", so we used the name indie and it stuck. Now I absolutely know you can make a living making games, and I have developed many strategies to help you succeed.


I’ll explore those ideas in future posts, and hope to make it into a two way street by having a companion wiki at makeitbigingames wiki.  The MBG wiki is open, but not ready for prime time yet, so look for it in the future."

Good luck Jeff! Link

BBC's Gamers in the UK

Gamers_in_the_uk Wonderland has gotten a hold of the BBC's Gamers in the UK.  It is a great collection and explanation of research on gamer's habits and includes a ton of beautiful graphs.

Link

Moving to subversion

Subversion_logo I've recently decided to move my source control from my local visual SourceSafe setup to a subversion hosting company. A host can provide better security through features like power backup, security monitoring, RAID 5 etc. Sure, I could set all this up myself, but that is time I’m not putting into my game. I believe this is a core strategy to success.  Every time I find away to get someone else to do a task it means more time to put it into my games. Plus, if my house burns down (knocks on wood) my code is completely safe and secure.

Messed about a little today with Torque’s networking code

Torque Network Library I messed about a little today with Torque’s networking code.  I was looking to see if they used bit packing.  I was also curious to see how difficult it would be to create a plug-in system that allowed you to use different compression techniques.  It definitely has an interesting system that tries to only move the data that has changed (as opposed to the whole object every time something in it changes.)  I haven’t tracked down the part that actually packs the variables, because it wasn’t part of the variable classes like I expected.  They are probably either doing it in the object (i.e. the author customizes the packing for each object) or at the stream level.  I’ll definitely need to create some sort of test bed before I attempt to muck around.

My excuse for procrastinating Christmas shopping this weekend

I've found the perfect excuse to procrastinate Christmas shopping for the entire weekend!  The Ludum Dare starts tonight at midnight!  What Ludum Dare?  It is a 48-hour game programming contest.  I participated last year, and hopefully will be able to top my past performance.

 

Digg It!

Progress Log

Things I learned at Torque Boot Camp Day 3

[First appeard at http://www.garagegames.com/blogs/29221/9013]

-- Variable name prefixes:
--- m - member variable
--- s - static member
--- g - global variable
-- BitRock is the/an installer GarageGames uses and comes highly recommended
-- Manits comes recommended over bugzilla
-- Forums make a good communication tool because it has history and persistence
-- Make a Vision Statement for your games that is 2 or 3 pages because no one is going to read a 100 page Design Document. You also need flexibility to create a game that is fun to play, not one that meets the design document.
-- Face to face communication is critical, put a mechanism in that gets your team together
-- Dynamic Risk Assessment helps you determine what to focus your time and energy on. You should deal with the risky parts soon, because they are the things that could kill the project and you want to address those problems as fast/soon as possible
-- Any process or method you use to manage your projects has to be flexible
-- Commercial game makers have to work ungodly hours because they are trying to shoehorn in the stuff the game needs to be fun into the schedule. The schedule was created to get the feature list handed down from marketing and management implemented.
-- ThinkTanks design doc was only 8 pages in the beginning
--- It only got bigger to meet the needs of the team
--- It stopped being updated once the game itself was the best reference
--- had a Vision for Game Play
--- had a Vision of the Target Audience
-- I was so focused on what Joe Marushak was saying... that... uh... okay I was a wus and didn't ask him what he meant by the term "Shell flow." I think it is a way of referring an event driven program's control flow?
-- Consider a schedule using an "effort unit" or "work unit" and then adjust a unit's time value as actual tasks time of completion are discovered.
-- SCRUM
-- It takes a longtime to build a good working relationship with a contractor
-- Think what you target audience wants and then shoot lower, you are going to over estimate things
-- 2% of users need support
-- if you spend more than 30 minutes fixing a users problem you are losing money
-- Good contractors are hard to find so don't drive them away trying to low ball them
-- What does a freelance artist need from you?
--- Scope of work
--- Defined beginning and end
--- Chunk it up, defined list of tasks
--- Include at least one revision or adjustment step/round
--- Cost $35-80 a hour
--- Around $3000 for a model
--- Around $800 for a texture
--- Concept art is $100-500 a drawing
--- You need Social Security Numbers or Tax Identification numbers from your contractors for proper records
-- Consulting/contracting isn't a starting point for individuals trying to break into the industry
--- study the engine's parts, play with change its behavior
--- turn out a few small game you can make fast, because the hardest part about making games is finishing
--- create resources and/or fix bugs for the community, if you do good quality work someone will probably notice and approach you with work
-- Connection Sequence Overview a step by step break down of what happens between the server and the client when networking
-- clientCmdMissionStart() is where you would add code specific to your project
-- There is a SimGroup called MissionCleanup and by adding objects to the group when you are done with them. It is a way to guarantee they get deleted at the end of a mission
-- TorqueScript doesn't have true array, the array looking syntax resolves to basic string manipulation
-- T2D has Continuous Time Collision which means that collisions are swept through time, meaning it checks to ensure collisions a properly created when the speed of the objects makes it possible for the collision to occur between frames.

Things I learned at Torque Boot Camp Day 2

[Editor's note: First appeared at http://www.garagegames.com/blogs/29221/8937]

- Successful people just fiddle with Torque for a good while before trying to make a game
- SceneObject bins help limit the amount of collision math/processing that is needed
- Portals are about DIF not DTS
- Gotcha using RenderTransform() instead of normal Transform()
- GameBase datablocks, processTick(), ControlObjects
- ShapeBase
... Assumes a 3D world
... TGE isnt totally thread safe
...... this is one of the improvements in TGS
...... Atlas and IRC needed multi-threading ability
... MountingImages
... Events are not the same as Call-Backs CallBacks are in process, meaning they are part of the Tick process, but Events are processed outside the tick loop
- Player
... ConsoleMethod( Player, MethodName, Const Char*, 3, 3, help string );
... Argv array of arguments, C++ args, not script arguments
... dSscanf d is for dynmaix; cross-platform consistency, but might act a little different than a standard lib function
... Con::executef purpose so C++ can call script, Dont block b/c its during a tick (most likely)
... Schedule 0 means next available moment (After tick and other sensitive work)
... SimEvent would be a good way to hook in a non-Torque application with TCP/IP

Things I learned at Torque Boot Camp Day 1

[First appeared at http://www.garagegames.com/blogs/29221/8919]

- Use Doxygen for your own code because one day you might have to hire someone to work with your stuff, or it might be months before you go back to that area of the code
- ShowTool Pro saves a lot of time debugging art asset problems and is worth its weight in gold, and it is written in Torque!
- DTS can have concave shapes
- DIF no concave shapes, this allows BPS trees which perform much faster, but cant fully animate
- LOD is based on pixel height not distance from camera
- Jill pack is a great learning tool
- Atlas is faster than TGE terrain engine
- All of TGE is in TSG, you arent losing any functionality and is probably the way to go for a new project these days
- You must use Mono sounds not Stereo when working with 3D emiters
- DNA replication for grass and tress eliminates server bandwidth problems, this way you can provide the effects without having to simulate every blade of grass and twig in the tree.
- Portals can help a lot with scene frame rate problems on interiors
- 4 is the average number of LOD
- TCL is a scripting language, stands for Tool Command Language
- Two useful console commands: Tree(), [object].Dump()
- The car metaphor: A game engine is like a car, it has all the parts and systems needed to start up, idle, turn, heat, cool etc. But needs a driver (the script) in order to truly be useful moving people around. The script is like the driver pressing the gas pedal and turning the steering wheel.
- SimObject provides smart referencing which is mucho help dealing with pointers, especially protection from stale pointers
- A SimObject maybe a member of only ONE SimGroup
- When a SimGroup is deleted so are all its members
- SimSet has an onDeleteNotify()
- There is a SimSetIterator
- A client is sent a Datablock ONCE when the mission starts this means that if you change a value in a Datablock after the mission has begun the client will never know about it
- Datablocks are like the Ten Commandments, once they got handed down that was that, no changes would propagate to all the copies
- Network scoping is more like the smelling than seeing because something can be in scope even when it is impossible to see
- Hysteresis is a hard word to explain
- There is voice code in Torque, but almost always it is better to use a third party tool like Team Speak
- A Ghost(ed) object is simply a model on the client of an object that the server has authority (ie control) over. The client has to sometimes predict what has happened since the last time it heard from the server, but once the client hears from the server again those predict values are throw out (ie changes to a Ghosted object do not affect the real object.)
- A tick is sent every 32 milliseconds
- 1000 milliseconds = 1 second
- Playing with un/pack can be easy to mess up because one-bit mistakes can bring the whole house down

Things I learned at IGC Day 3

[First appeared at http://www.garagegames.com/blogs/29221/8909]

- There is a weird battle between "Attach rate" and "Conversion Rate" going on because the consoles are measuring their "downloadable games" by game sold per console instead of sales per download
- Apple claims "$500 million of 3rd Party sales (non-apple stuff)." (I think they meant a year but it wasnt explicitly said.)
- developer.apple.com
- Developing in Linux is so mean streets difficult, it is now is referred to as "Ghetto Linux"
- Dual core systems are the future, so learn more about multi-threading
- I have no idea what "vectorization" really means
- Maybe I should think about buying Apple stock, oh wait I need that money to make my game
- XCode is free
- Shark is the greatest dev tool ever (it is a profiler)
- Chris Crawford thinks about stuff that make my brain wish is was having a beer
- Interactive story telling is such a weird wild concept that I *fate intervenes and the narrator's brain explodes*
- *destiny intervenes and some how the narrator's brain was saved from exploding using a lame plot gimmick involving a time machine and coke bottle*
- Casual game will be a $2 billion space by 2008
- Top 10 Causal Game developers:
...spend $50,000 to $150,000
...Have 1 to 3 programmers
...Have 1 or 2 artists
...Develop a game in about 6 months
- Royalties are a fuzzy science:
... Developers get 20% to 40%
... Publisher get 10% to 25%
... Distribution services get 10% to 20%
... Portals get 40% to 60%
... Money appears and disappears between 80% to 145% (Attention, that was humor)
- Causal Games are sold at $19.95 to $24.95
- Some games sell better at $24.95 than at $19.95
- Causal Games sell 5000 to 20,000 units
- Try Media loves Torque
- There are (can be) 11 milestones for a Causal Game Title
... Pre-Production
... Prototype
... Code Complete
... Content Complete
... Alpha
... Friends and family beta
... Beta
... Soft Launch (putting a game out on a small portal and testing different changes effect on conversion rate)
... Launch
... Post-Launch Updates (some portals like Yahoo will take months to put up a patched version of your game if ever)
- Portals are dieing for games and it makes their life easier if you have 12-24 Prototypes to show them (I was kinda of confused on this point but what is meant is that Portal's don't have the staff to deal with lots of developers and would prefer a handful of developers with a lot of games)
- Get a Mentor
- There is a great book out there called "Refactoring"
- There is a great testing company called "Testing Testing 123" and they arent over priced
- Get feedback using "Survey Monkey" it is free
- A self-funded games royalty rates are considered low at 15% and high at 42%, average is 30-35%
- Tools youve gotta check-out: Jira, JotSpot and Ning

Things I learned at IGC Day 2

[First appeared at http://www.garagegames.com/blogs/29221/8895]

IGC

- Business cards are a must, even if you are just a hobbyist
- Microsoft uses interesting phrase when talking about software and computer games like vibrant ecosystems and digital lifestyle
- Xbox live has 2 million subscribers
- Microsoft predicts the PC Game markets expanding from $4 billion (2004) to $9 billion by 2009
- MSN Games players are 70% women
- Xbox 360 has out of the box support for downloadable games, even if they got the model without the hard drive, they call it Live Arcade
- Xbox has seen an average Conversation rate of 8 to 8.5% on its Live titles (this is just insane!) Peak titles doing 21-22% and low titles in the 4% area
- In Korea you can rent games by the hours
- A lot of cash flow in Asia comes from selling power-ups and providing servers not the actually selling of the game (because of piracy)
- It is important to know your story because a good strong story will be picked up by the press
- 21-6 spent two years working on it own game engine in the beginning
- Dont get wrapped up and excited by offer of money for your game, it happens a lot and usually doesnt go any where
- Lawyers are expensive and very important, dont hire one that charges less than $400 a hour
- Make a game you have passion for, consider yourself the target market, youll need the passion to get through the tough spots
- Watch out for feature creep
- A big part of game development is feature creep
- Game development will take Two times longer and three time more expensive than you expect
- Give yourself a couple years to finish a title
- Monster.com is actually a great place to find talent
- Cap royalties and have a vesting schedule for all projects
- Offer ownership in projects NOT the company
- Talk to outsides and get the input on your ideas and work, it is important to find out if what you are doing makes sense
- Usefully tools: IM, CVS, Phone, Conference Rooms in person, Secure forums, Team speak, Twiki, Subversion JotSpot, Dot Projects
- Communication is very very important for a team. Phone conversations and in person meeting help calmly resolve emotional issues

Things I learned at IGC Day 1

[First appeared at http://www.garagegames.com/blogs/29221/8891]

- TDN is in beta and open for SDK owners!
- Drink tickets are easier to negotiate for than expected
- Im not the only one who feels like they are fighting uphill to make their dream game a reality
- It is the natural order of the world that all programmers must try to write thier own game engine from scratch so they can see first hand what an ridiculously impossible challenge that is, much less too do by themselves and not to mention a timeline that all but rules out making a game with it one day.
- IGC food is quality eats!
- The polish of the games being shown is awesome (and has set the bar a little higher for us all.)
- Putting the name of the game on the screen when demoing in this environment is a good idea
- Whoa! There is more than one women doing indie games!
- XBOX 360 has some very awesome looking games
- Microsoft sounds like they are embracing the Indie Community, awesome.