Archive for August, 2008|Monthly archive page

360’s content pipeline gives me a headach!

Oh man, I’ve spent the last week learning the ins and the outs of the Content Pipeline, trying to write readers / importers / writers / data types etc, to the content pipeline… and it was all going well, until i hit F5 :( Damn thing wouldn’t build!

Creators Club msgboard and a few friends who know their way in and out of the 360 helped out a TON with my persuit of knowledge. I don’t know all, or even half, of what goes into the content pipeline programming.. but at least i know “WHY” its doing what it does.

So I’m back on track now, we’ll see if this set me back enough to where I’ll miss the dream build play deadline, but I hope not. And for all of you folks who are looking into the content pipeline for the 360, remember these fun facts that will save you a TON of headach if you don’t already know how to write your own custom readers / writers;

1) The ContentReaders should be placed in the same project as your class you’re reading, preferibly at the bottom of your class.cs file.

2) Content writers need to be in a ContentProcessor project file, and they will be created at build time (not run time) so make sure that any classes you’re referencing, either make a copy and put them into that project (IE: Player.cs from your main game, make a copy, and put it into your Content Extention project file with the name PlayerContent.cs so you don’t confuse the two) or do what I did and have a shared project “Data” stash.

3) HOWEVER, if you DO do what i did, remember that the 360 and windows needs their OWN VERSION since they’re different assemblies. This gave me the most headach :( So my solution now needs 4 projects; 360 game project, 360 data project, windows data project, content pipeline extention project.. Oi, pass the advil!

Thanks go out to Stephen and the whole crew that helped me through, and a BIG thanks to RomSteady and Mittense at shacknews.com … couldn’t do it without you guys :)

Next up, working on releasing a demo!

ShackRPG: Battle System Almost Complete

Battle system didn’t take as long to implement as I had thought, which is great news.. because it means I may just end up getting everything done in time for the Dream Build Play competition!! This battle system is by far one of my most complex systems in the game, for the very reason that makes it fun in the first place. I’ve tweaked it a few times because it was slow and un-interesting, but after playing through a few battles with the new system I think I have things tweaked enough to make battles fun and exciting.

So on to bigger and better things I always say. There are a few systems I’d like to have complete before the Dream Build Play competition, but not 100% necessary, including but not limited to:

Content Readers / Writers: With the current system of XML data, all of the content is being read in via the System.XML namespace. On the PC this doesn’t really give a lot of problems, but on the XBox things are terribly slow when reading new content.

Save System: Right now the game isn’t long enough to support such a system, but its an RPG.. you’ll need to save eventually! I have not even started working on a system to save your progress.

New Assets: While I am just using the assets from the RPG Template right now, I would love to eventually build my own. Not a priority right now, as I’d love to get a tech demo out first.

Cutscene / Scripting system: Cut scenes are possible with the systems I have in place, but I’d love to implement a dynamic scripting system that lets the user really experience the story.

Polish!!: Naturally everything will have to be touched up, working good, bugs squashed, and looking pretty.

So while everything is going along at a fairly quick pace, it is time for me to start putting together something you all can enjoy. I hope to have a few trailers up in the next few weeks and some screenshots of some action, and a demos worth of story hammered out for the Dream Build Play competition.

ShackRPG: Deployed to the Xbox360

With the battle system framework completed, i took the opportunity to deploy ShackRPG to my 360 for testing. The surprise? Things went very well and I didn’t experience any crashes or major bugs!! I’m happy to say that with the exception of a few details, things went pretty flawlessly.

Having said that, there are quite a few things that I messed up with so far during development, that I have to now go back and change.

Window locations: Fixed
I tried to keep everything in enough so the game would render correctly on a TV, but there were a few windows that I forgot to convert to my % system, and they were cropped.

Movement Speed: Fixed
For some reason, movement speed on the computer felt solid but when I deployed the project to the 360, it felt way too quick. Character feels solid all around, and the way I did collision detection and movement feels really solid with the controller, but I just had to turn the movement speed down a tad.

Debug Components: Fixed
There were a few components that were written with the PC in mind, and I had forgotten to change a few things with the 360 development. For example, the FPS display was at Vector2(5,5) which was off screen on the television screen. Also, in order to view active screens in the screen manager, you have to press Ctrl+Alt… obviously there is no Ctrl or Alt keys on the gamepad.

Loading Times: In Progress
The one minor mess up I had was with loading times. Anytime I had to access an XML file i would get between 1 to 5 seconds of loading time lag. This is most notable with loading a new map, but you could also see it when completing a quest. Talking with a friend of mine, he says the XML reader is not as efficient in the lite version of the .NET framework, and I should convert them to the Content Pipeline. Good advice? Sure, not what I wanted to hear however since I am trying to finish things up on the engine side so I can begin story development. This news means I may just end up missing the Dream Build Play deadline unless I can research the necessary fields quickly.

So there you have it, my first Xbox360 deployment was a huge success in my eyes. Some things needed to be tweaked, others changed, but for the most part everything works and works very well. The battle system is about 25% complete, and it is looking very solid and action packed at the moment. We’ll see how it all ends up, but for now its looking like a winner.

ShackRPG: Quest Demonstration

Quest journal functionality

Quest journal functionality

This section was quite fun to write! The quest system is not overly complex, but flexable enough to enable some pretty creative quests to be executed. It is my feeling that alongside the battle system, your quest system is one of the most important aspects of your game. To this end, I’ve enabled several aspects including;

Prerequisites: Items or equipment in your inventory, Monsters slain, Npcs Visited, or previous quests completed that must be obtained before the quest may become active.

Objectives: Could be but are not limited to: Talking to several specific NPCs, killing a specific monster or monsters, or the possesion of an item or amount of gold. (Several of these are demonstrated in the video below)

NPC Dialog: Changes based on the stage of the quest.

Quest Journal: A journal to keep tabs on your active and completed quests, along with a marker indicating if the quest is repeatable.

Rewards: And what quest would be complete without its rewards?

A lot of these aspects are demonstrated in the video below. I think the quest system works for the type of game I am writing, and so far its even passed the “non-gamer” test… sit a non-gamer in front of the workstation and have them run through your “Demo” and see if they understand it / can navigate through the demo.

Well, now its time to finish up some polish, and who knows… I may actually get a demo out in time for the Dream Build Play competition :) Here’s hopeing!

ShackRPG: Menu, Inventory, and Equipment systems

Finished work on the GameWindow class, so I’ve been implementing a few items that would take advantage of this window class, mainly the Menu system!

Main Menu options

Main Menu options

As seen from the above screenshot, once you hit the “Menu” button on the controller, this screen pops up. From here you have access to a variety of options including ways to customize the look of the system, your inventory, and your Equipment. The system structure is in place and needs tweaking for sure, but at least the groundwork is done.

As always, below is a video of the progress. Just a few more systems and a demo will be released, exciting huh! Thanks to everyone who gave me some opinions on the menu system. As always, if you have any questions, feel free to send an email my way to CraigGiles9@yahoo.com

Video of the menu system in action