Pandemonium

January 21, 2009

Any requests?

Filed under: Games Development,Personal,XNA — bittermanandy @ 1:51 pm

Wow, it seems like an age since I posted. I guess that’s because it is! Fable 2 took up far more of my time than I expected, I’ve barely touched Nuts and Bolts, and I still have to complete Tomb Raider and Prince of Persia before March, when Empire: Total War is released. This doesn’t leave much time for any meaningful development on Pandemonium, though I have recently chucked together a few little prototypes of stuff I might one day make into fully-developed games.

Anyway I don’t know when it will be that I’ve done enough on Pandemonium to make an update worthwhile. But I don’t want to leave the blog stagnant, it’s still getting a fair number of hits every day and people must have expectations… so I’ll put the question out there: is there anything (preferably XNA-related) you want to read about? Check out the stuff I’ve already written to get an idea of the kinds of things I know. Clue: I’m not the man to ask about whizz-bang graphical effects, but if there’s anything else you’d like to see, just ask.

Advertisements

10 Comments »

  1. Firstly great blog. Id like to see a beginners guide to 3d physics, if thats soemthing you feel comfortable with. Not necessarily something from scratch, maybe how to use an existing library. Ive struggled to find any practical advice on it, and other blogs avoid it! Keep up the great posts

    Comment by Venatu — January 21, 2009 @ 4:29 pm | Reply

  2. Differences between the 360 and PC Builds that you have had to deal with (things not Compact framework you really miss)?
    Any work you’ve done on editor mode in game / editor apps?

    Comment by Paul — January 21, 2009 @ 8:56 pm | Reply

  3. I’ve been thoroughly enjoying your posts, but am still at the stage where I have too many things left that I want to finish before I can start playing with XNA. What I would like to see is maybe your thoughts on organising the data structures you need for 3D games. For example, maps, player objects, etc. and how best to allow them to communicate with each other (where required).

    Again, thanks for sharing this information. Very interesting.

    Comment by Muttley — January 21, 2009 @ 9:47 pm | Reply

  4. Thank you so far for the great posts on your blog! I’ve enjoyed reading them. Please keep going! 🙂

    Could I second the request for how best to structure the engine for a 3D game; for example what do you think of the World/Entity/Component system?

    Also, how are the big industry games structured? How do you prevent 20 programmers from messing up each others work?

    Comment by Alex — January 21, 2009 @ 11:33 pm | Reply

  5. Hi Andy,

    I agree, you could share some of your extensive knowledge on game architecture, messaging systems, entity systems, a bit of AI if you’d like etc.

    Also, imagine that XNA Game Studio was used to develop a large game like Kameo. How would you go about binding the art pipeline with XNA’s content pipeline, since you’d have tens of thousands game assets in the game? How would you keep the art team and the programmer teams separate? It would be interesting to find out how scalable XNA is in terms of team size and in the context of a really big game.

    Keep up the good work!

    Kostas

    Comment by thinkinggamer — January 22, 2009 @ 8:04 am | Reply

  6. Agree with the posts above about this being a great blog and that game structure would be a good topic.

    What I’d find most useful, as I havent seen it anywhere else, is some thoughts and examples on how to design the overall game architecture for a moderate sized game.

    I’ve read articles about using a world/entity/component model, about model/view/controller models, about using events/messaging (I’ve seen this in Game Programming Gems and Game Coding Complete) and about using XNAs game components and services. I’ve read about why trying to use interfaces is often better than using inheritance.

    But what I haven’t seen is any overall architecture guidelines with examples of how a medium-sized game might really hang together, in XNA, in practice.

    Comment by Kevin — January 22, 2009 @ 10:06 am | Reply

  7. There’s been very little written about patterns for multithreaded development in games, and (almost?) nothing in regards to multithreading XNA games. The parallel extensions framework looks extremely promising, and I wonder how it can be used in conjunction with XNA.

    Another commenter mentioned messaging systems and entity systems. I’d REALLY like to see a post about these – most game programming books, posts, etc talk about how to hook up Direct-X and graphics, but I rarely see anything about patterns for these systems. If there *is* anything on these topics, they’re rooted heavily in the C++ world and primarily deal with memory management due to C++ (ie/ disposing resources, factory patterns, etc). Does an entity system need a factory in C#? How would you represent your “loaded world”? What about seamless loading? Are there efficient patterns for entity messaging? How would you write the controller/ai/etc to run the messaging system?

    Another interesting topic would be on leveraging C# for game scripts that are compiled on the fly for entities, etc. (ie/ Reflection.Emit).

    Many XNA posts just say “Avoid using instantiated objects for your game due to the garbage collector”. I disagree – there are major performance penalties for structures as well (ie/ can only pass references to functions, not into variables). Does the GC *really* matter if it runs on one frame? etc.

    🙂

    Comment by ShadowChaser — January 22, 2009 @ 7:24 pm | Reply

  8. Some good suggestions, some of which I know / feel more comfortable talking about than others; thanks guys. Things I might or might not write about soon: coding teams, XNA, and medium/large games? Yes. Game world data structures? A really interesting topic, that I do want to write about, though perhaps not soon – my experience with that kind of thing is C++-based and I suspect C# has different needs, which I’ll need to experiment with before I can write about. Physics? Sure, I want to get JigLibX properly controlling entities in Pandemonium first (it’s very hacked in at the moment), so can write about my experiences. AI? Not my area of expertise, sorry. (Though a friend of mine started a PhD in game AI, until he realised that current cutting-edge AI just isn’t fun, and you’re better off using the simple stuff well). Editors? Absolutely, there is so much to say about that kind of stuff! Threading? I’d want to use threads more in C#/XNA before writing about them.

    ShadowChaser, re: your last paragraph, you may be interested to read my earlier articles on garbage, with the caveat that as with all such things: it all depends on profiling (which I’ve also written about previously). If you write your game code to be correct, readable/maintainable, and reasonably efficient (in that order of priority), you can profile your code once performance drops below your acceptable level, and fix it from there. The only thing I’d add is that I’d bet real money that if you’re targeting 360, and don’t go out of your way to avoid garbage, GC will be the first thing that hits you, and it will keep on hitting you until you take the hint. That may not apply on Windows and may easily not apply on every game, but it happens often enough that, speaking for myself, I’d play safe and defend against it before it caused me problems. (I’ve had my frame rate on 360 drop from 300Hz to <30Hz before now, simply because one function called about ten times a frame was generating a few tens of items of garbage).

    Comment by bittermanandy — January 22, 2009 @ 7:59 pm | Reply

  9. Hi – first off – great blog, I read it every update, but mostly lurk.

    I’d love to hear about game message, as mentioned above.

    Also, between ai, collision detection, and physics a lot of game object end up needing to figure out if they are touching, penetrating, in-range for ai operations, or close-enough for some other operation. If you have an idea for an elegant, easy-to-use system for efficiently doing all that at once I’d love to see your take on it.

    Alex

    Comment by AlexHogan — January 23, 2009 @ 9:17 pm | Reply

  10. Physics? Use middleware. Unless you really, really, really want to specialise in it yourself… make your life easy and use an existing library. In XNA, it looks like JigLibX is the best, though some seem to like BulletX. There’s just too much really, really complicated stuff involved to be worthwhile writing on your own from scratch.

    Of course “use middleware” is just the start – there’s how to plug it into your game. And that’s something I may well write about one day.

    Comment by bittermanandy — January 24, 2009 @ 1:47 am | Reply


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: