A lot has been happening lately, but not much worth writing about (aka I’m too damn tired at the moment to be bothered writing it). It’s been a good year, and I’m gearing up for a busy 2008 with plenty of ideas and goals I hope to set in motion and accomplish :). Hint: One of those goals is to update this blog more frequently. Catch you on the flip side! Happy New Year Everyone!
Yawn! Man, I’m tired but can’t fall asleep. Just finished my first play session on Gunstyle on the Xbox 360 a few hours ago with a friend (2 player split-screen). The day before I finally got split screen working fully (up to 4 players) with the exception of the in-game HUD. Overall, we had a good laugh and the rounds were exciting, but I’m not satisfied with the controls :|. Since a big part of Gunstyle is movement, this creates a poor gameplay experience. Guess that’s the nature of game design :). Gunstyle from the very beginning was always designed with a PC in mind and the flaws in the 360 version are apparent from this.
First off, the thumbsticks do not have anywhere near the fidelity/accuracy of a mouse. This makes aiming at fast moving objects (while you’re moving at a brisk pace also) very very difficult. Sure, after a few rounds of play we were getting accustomed to the aiming scheme but on the 360 I felt like 50-60% of my shots are just pot shots with little hope of hitting anything. As a result this turns into a spam fest. I’m going to have to come up with some alternate aiming schemes that come close to retaining the accuracy of a mouse, possibly implementing a slight auto-aim of sorts (ala Halo) or maybe something more drastic: Altering weapons to become more thumbstick friendly. This could come down to actually making new weapons that require less accuracy to make a hit.
Secondly, there are moments while running around the level and you want to do a simple jump up to a ledge or hop over a gap, but simply don’t have any way to express that movement. This has been somewhat of a problem in the PC version also, so it’s definitely a more fundamental issue regardless of platform. But it seemed more pronounced on the 360. As some of you may know, this version of Gunstyle on XNA is a remake of an older version built 2 years ago for the PC, except with several new maps. I think the key difference here is some of the maps are more corridor-like and closed-in compared to the first version where maps were wide-open terrain with a focus on smooth speed. So our physics-based control issues could have existed back then, but weren’t visible due to maps not requiring that much finesse to navigate. I’m going to experiment with a ‘digital’ control scheme where your left/right movements and speeds are more concrete, where as right now you simply slowly accelerate left/right based on a key press or thumbstick movement. This may alleviate some navigation issues. Another issue here is that wall jumps on the 360 are harder to do for some odd reason. I may make them stronger to give the wall jump a straighter trajectory on the 360 so players won’t miss jumps as easily.
And lastly, another major point of concern (as it always seems) is performance. Having 2 or more player split screen sends FPS below optimal (30 fps). I’m hoping GarageGames releases their newest version of TX with performance improvements sometime this year, otherwise I’m going to have to roll up my sleeves and start gutting TX or Gunstyle to trim down on some of execution time. Interestingly enough we hit our 30 FPS goal with eight players on the PC (no split screen though), but the 360 struggles with 2 players and 2 view ports. I’d like to think it’s something we’re doing on the game-level that’s slowing it down, but I’ve yet to find this bottle neck :/.
So anyway, that’s the state of Gunstyle on the Xbox 360. At the moment I’m still not absolutely sure where I want to take Gunstyle platform-wise. Getting Gunstyle running the 360 took about a week and a half (working in the evenings for a few hours), so it’s been a pretty quick turn-around and exciting to see it running on the console. It still is fully cross-platform code for the PC, so I haven’t abandoned that. On the plus-side, the overall performance tends to be better on XNA-capable PC’s. But networking and hardware compatibility (mostly shader and render target issues) is a bitch. With the promise of Xbox live access this coming holiday season I’m really drawn to the idea of not having to write a dedicated server version of the game (basically from scratch). Right now, Gunstyle works by letting players host servers on their running game. Without a dedicated server on the PC version, it’s hard to retain players in games and overcome networking issues such as firewalls and routers. Not knowing too much about the Live networking, that could also be the case there, but I can dream can’t I? I fully intend to be ‘done’ (aka feature-complete) with Gunstyle by year’s end. That way all that is left is bug fixing and maybe a little polish, but ultimately free me up to start a new project with a much smaller scope (read: single player). Having started development of Gunstyle in XNA in February it’s quickly approaching a year-long development time! That’s enough late night rambling, Happy Halloween!
After a lot of tinkering I got split screens functioning in Gunstyle. TorqueX supports split screens natively so i expected it to work rather simply, but due to some modifications and how Gunstyle game code worked on top of TX it complicated things a bit. Below is just a screenshot of two player screen shot on “Fool’s Paradise”. This is also working on Xbox 360. I am going to have to optimize some load times as they are drastically longer on the 360 (particularly loading assets initially on start up). You’ll notice in the image below some things aren’t done, like the HUD. Anyway, back to work :)!
It has been a while since I’ve talked about Gunstyle so I figured a post was due on the status of the game…
Right now development is rather slow just due to our busy college schedules. It’s also the last 90% so it’s always tough ;). Right now Gunstyle is a PC only title due to it being a multiplayer centric game (XNA 1.0 lacking networking functionality on the 360). Personally, I’d love to see Gunstyle on the Xbox 360 and take it in that direction, but I guess it’s more of a ‘wait and see’ right now until XNA 2.0 hits. As a result, I’m holding off on writing a dedicated server, and also trying to decouple TorqueX from it’s graphics pipeline and game logic (too allow for a light-weight server app) has been rather painful, and I’d rather not re-write a graphics-less version Gunstyle. These days it’s mostly polishing and fixing bugs with little new content. Looking at the latest development screenshot above you may notice some of the effects are familar :). The distortion is a post-process effect I first developed as a component and Ziggyware article. The trail you see behind the flag and player is a seamless ribbon trail. This again is another component I developed separately and was featured on Ziggy’s site with source and tutorial, so go check it out if you want to use it in your games! I also added in a post-process bloom to the engine, which adds a really nice subtle touch to the level graphics. Each level has it’s own custom bloom ‘strength’ to give that level a certain look and feel. The image above is a picture of the ‘Hive’ map which has a bright techno/industrial look to it.
In terms of gameplay, the mechanics haven’t changed much but the rules of engagement have. After spending a little over a month optimizing game code we found TorqueX bottlenecking on some of scenegraph functionality. After doing some minor tweaks in our code to minimize calls into TX we decided to bite the bullet and scale the game back. Originally we targeted the game to be played by a maximum of 16 players in one server. We halved that number down to 8 to give us stable frame rates across the board. I was hesitant to do it, but I’d rather get the game out sometime soon than toil with optimizing algorithms and doing complete re-writes of engine code for the next 6 months.
We hope to have a full public beta released for the PC sometime later this year :). That’s all I have for now, more updates hopefully in the next couple of weeks!
Hey again! Two updates in less than a month! Wonder if I can keep this up :). Anyway, just finished another article for Ziggy’s site. This one shows you how to do those cool, seamless ribbon trails you sometimes see trailing behind melee weapons (swords, sticks, etc) and other objects. I’ve also included a sample with full source code that works on both the PC and Xbox 360. So go check it out!
January 28th, 2010 Update:
Ziggyware.com seems to be down indefinitely. As a temporary solution until I get back around to hosting this tutorial myself you can find the Google cached version of it here. If you wish to look at the sample code and illustrations in full you can download the XNA sample from my site here. Note, that the XNA sample was built on a very old version of XNA so my guess is it will not compile out of the box, but the general logic for the ribbon trails should be the same regardless of XNA version.
Wow it has been a while! School is back into full swing so I’m spending time at school and in labs longer than should be legally allowed :|. I managed to scrounge up some spare time to write up this distortion shader article and some explanation of how things work for Ziggyware.com. Go check it out! Feedback is welcome as I’m still somewhat new to the world of shaders. Below is an example picture of the post-process shader in action.
I’ve written networked games in the past, but never in XNA. So after writing the networking logic for Gunstyle I figured I could write a blurb about general networking in games for XNA, which in reality isn’t that much different from any other API. I do not claim to be some expert in networking and I only present to you what I know based off prior experience from a few multiplayer networked games. Oh, and yes I am aware the diagrams are not completely correct UML diagrams, I am simply trying to illustrate a point. This isn’t a How-To guide to networking either, just food-for-thought for those just starting out with networked games.
Its been quiet on my blog and the End Dream site, due to me being on vacation. And man, was the beach great! Now I have to get back into the daily work routine :(. Oh well, that’s life as it seems. So we’ve got an update for Gunstyle available to any irc #xna chatters on EFNet at the moment. A lot of the major core building and development is done with Gunstyle and we are now shifting into more of a ‘polish’ mode to fix bugs and tring to create an accessible, easy, and hassle-free multiplayer experience.
It feels great to have the game finally submitted to the Dream.Build.Play contest, and go on vacation straight after for a well deserved rest :D. We’re not going to release any hard dates on when the next update will be, but the plan currently is to keep the beta closed to irc until contest winners are announced. This is to keep multiple versions at the same time to a minimum and allows us time to fix more issues for the next patch. What’ll be in the next update? Don’t have a final list for you right now, but the tentative agenda currently is:
- Customizable controls
- Some master server fixes to iron out some connectivity issues
- Address some of the performance issues with larger numbers of players
- Have some integrated patching system to allow for more user-friendly updates
That’s just a few of the issues we’ll be hopefully addressing in this next update. Speaking of patching, we still haven’t decided whether to do our own custom solution in .NET or to use a 3rd-party solution like Xpatcher. If anyone’s got any experience with Xpatcher, I would love to hear your opinions on it.
Last night we hosted our very first semi-public play test with the new XNA version of Gunstyle. Tonight is the midnight deadline for submitting to Dream Build Play. I’ve been hearing some bad experiences about it, so we’re all a little worried about getting it submitted in time. We’re going to be submitting our current build for now, but also try to get more fixes in before the deadline and hopefully submit a newer one later today.
It was an absolute joy to play with the people that participated last night. Thank you to all that showed up last night! A super big thank you goes out to Michael ‘Ziggy’ Morton of Ziggyware.com for helping raise awareness of Gunstyle and for his general XNA community support! Also congrats on getting MS MVP status, Ziggy :)! After 5 long months of just playing 1v1’s with Martin or Adam, having some fresh competition is a god send :). The pay off of seeing others play your game at the same time and enjoying it, even in such an early state was worth it. And what made it even sweeter was there was no major show-stoppers that kept people from playing a few maps. We had 1 somewhat big issue with map server changing through the admin console, which we intend to hopefully track down tonight. The game host would drop everyone from the server and they would either timeout or crash to desktop (I believe a bigger percentage were timing out). Big oops there, but current work around is to just not change the map as an admin and let the map play it’s course.
The other pressing issue was performance. With only 3 people fulltime on the team to test game features and such, it’s difficult to test loads and how the game would hold up with 6+ players. On the plus side of things, our physics engine for the game held up superbly when things started to get choppy. Yet when there was 5+ people on screen all shooting like maniacs things sometimes slowed to a crawl. So we’ll have to start doing our rounds of optimizing and profiling real soon. My current suspicion is our custom animation code that isn’t optimized. Last night was a great milestone for the whole team. Seeing it in action and being able to say ‘ok this is what we have…now we just need to smoothen the rough edges’ is great :).
On a different topic, I’m still not sure what to call these builds of Gunstyle. We named them ‘betas’ just so people kinda-sorta know what to expect. But to me, betas have always been ‘feature-complete’ and just lacking on stability/polish. Yet, Gunstyle is still missing some features sorely (like custom controls, which is near the top of our to-do at the moment). Calling a game ‘Alpha’ to me also feels like it’s very early in development and sometimes might give people the wrong impression to not bother with it. So it’s kind of a mind game of sorts.
Now we’re focusing on getting the game submitted. Which has me wondering also on how this game will be judged compared to normal single player experiences. Gunstyle is pretty much exclusively a multiplayer-only game. So no players = no fun. But we’ll see how that turns out later I suppose. Also, we have a dedicated server in the works, that is functional (from my last post), but simply not stable enough to warrant public use. That’s another one of those top things on our list.
Anyway, if you’re interested in helping test Gunstyle online then drop by #XNA on EFnet in IRC for a link, or contact me. Right now during peak hours we just let loose and let people play and just try to log any issues that we come across, while in calmer times it’s a bit of a more structured bug hunt. Hope to see you in #xna or in one of our GS servers :D!
Update: Updated the development image gallery with some screen shots of last night’s action :).
Well the Dream Build Play deadline is approaching and as always there seems to be a crunch to get those last final features implemented, down-sized, or cut and squashing bugs all the while. It’s clear the game won’t be in a ‘final’ state July 2nd, but very playable. After the submission we’ll be continuing development as usual to get the game where we originally wanted.
Right now I’m finishing up the dedicated server to allow us to just setup a host machine to run servers with no graphics component to allow players a place to play. The great thing is we planned this from the get-go so converting the full server-client to a dedicated server has been going really smoothly. Last night we had our first test run with a dedicated server instead of a client-hosted server. A couple of people joined and played without any hitches (don’t you just love it when things just…work?). We got the master server up last week and it’s working as expected. Yay, no more manual IP joining! The core game is pretty much done. What’s left is the ‘auxiliary’ things that’s expected of a game, such as configurable options, tutorials, few extra huds, and of course polish.
There’s still lots of work left to be done (as always), but I’m confident we’ll get the majority of it implemented, tested, and tweaked before July 2nd. It’s kinda scary to think of the complexity a ‘simple’ multiplayer game like Gunstyle requires in coding and content creation to get to a user-friendly and playable state. I can’t imagine what developers of AAA games go through! And we’ve barely touched gameplay balancing (using what worked from the last version of Gunstyle). That’s where the players in our upcoming beta test will hopefully help with :).
Anyway, back to more coding and level editing. Here’s a quick screenie of our ‘desert’-ish arena level. I was testing to make sure the game ran in high-res (1920X1200). Just a few minor issues but thanks to TorqueX, supporting multiple resolutions in a 2D game is a lot easier…