Tag Archives: Torque Game Engine

Ludum Dare 21 – Conclusion

I didn’t finish. I just didn’t have my weekend clear.  You really need a clear weekend to finish Ludum Dare. The tech change in the middle didn’t help.

My main take away: Unity slowed me down. I’m too much of a programmer. When a game engine gets in the way, I can see all the different ways I would code myself out of the problem, but I can’t see any solutions in the engine’s context. Code is a powerful too, and I’m good at using it. Game engine’s are alien worlds with bizarre rules and un-explainable behavior.

So, I’m going to stop using game engines (or frameworks etc.) I’ll use non-game libraries and leave all the game programming to myself. Specifically, something like SDL, SFML or even XNA are good for me, but not stuff like Torque 2D or Unity. I think XNA is “library” enough not to be considered a game engine. It’s more like a toolbox. Oh, I think the caveat here is I want to make 2D games, not 3D.

I think there is a bigger principal at work here: KISS = Keep It Simple Stupid Game Engine’s are complicated systems built by lots of programmers.  They have multitudes of  audiences with different needs.  This all makes them hard to understand with lots of bells and whistles.  In order to accommodate all these different requirements, some feature are overly complex with lots of assumptions.  Those assumptions require rigidness to keep you out of the weeds that aren’t handle so well because of those assumptions.  So at the end of a Ludum Dare weekend, you look back and see all the time lost figuring the game engine’s nuances and gotrchas.  Then you pine for a chance to go back in time and just pounded out the code you needed.

Random Post


Garry of Garry’s Mod expirments with causal iPhone game, nice break down of revenue and graphs comparing paid and ad business models. – http://www.garry.tv/2011/06/02/the-story-of-snabbo/

Do not laugh at this: http://i.imgur.com/ldg0F.jpg

Surprise in my stocking from Garage Games

I’m sure you heard that Microsoft released XNA Game Studio Express yesterday. What you might not have heard was Garage Games also released an open beta for Torque X. The big surprise is if you own a license to Torque Game Builder COMMERCIAL, Torque Game Builder Pro – INDIE or Torque Game Builder Pro – COMMERCIAL you now own Torque X! If you aren’t one of those lucky people you can still download a 30 day trial version to check it out.

Here’s where I point out that Garage Games has gotten a little too punchy with the different flavors of its products. It is confusing enough that there are now four different engines. But now there are different VERSIONS of the engines!?! Do you want Torque Game Engine 1.4 or 1.5??? Then you add the layer of licenses, are you a Professional Indie or just a Professional Commercial the one that does not have the word Indie in it? AAAAAAaaaaaaaaaaaaaaaaaaaaaaa!

So maybe you hadn’t heard of Torque X before. It is basically a mash-up of XNA and Torque Game Builder. Imagine using a game engine that let’s you program in C# and deploy your games to the PC and Xbox 360! Crazy cool! It’s the game engine you thought you got with XNA!

Here’s a handy bullet list of features:

New starter kit Tank Buster
The “Pro” version includes source code. That should be interesting.
A Shader 2.0 based material system by lighting Guru John Kabus
All the tools from Torque Game Builder: Tile Builder, Particle Builder, Level Builder, GUI Builder and Packaging Utility
NO TorqueScript WOOOO HOOOO!!!!!!
Tips & Hints:

Oh and just in case you don’t realize this all works with the XNA Game Studio Express, Torque X isn’t a stand alone product.
Currently isn’t working with 64-bit Windows
TorqueScript Gui files cannot be loaded in TorqueX
Can’t commercially sell on the Xbox 360, yet.
XNA Creator’s Club membership is required to run your Torque X games on an Xbox 360

T2D release Alpha 4!

Garage Games has release Alpha 4 of T2D 1.1 and it is a more complete release than the previous alphas.

New (and popular) directory structure
Level Builder
Updated documentation and tutorials
Turn Based Networking!!! (Its there, look around!)
No public Link currently. (Link for licensees)

Messed about a little today with Torque’s networking code

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.

Things I learned at Torque Boot Camp Day 3

— 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.
— 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 1

– 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 Torque Boot Camp Day 2

– 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 IGC Day 3

– 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

– 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