Networking
Probably the most anticipated feature
in the new release is support for multiplayer games. Using the Xbox
LIVE and Games for Windows - LIVE services, multiplayer games can
operate across a local area network or across the Internet. The
coolest feature here is that Windows games and Xbox 360 games can
connect and play together.
This was done to help debugging since
requiring two computers or two Xbox 360 consoles didn’t seem like a
good idea. You can run two instances of Visual Studio, one each for
the Windows game and the Xbox 360 game and debug both at the same
time!
All of the LIVE gamer services are
available on both platforms, and games can use nearly all of the
features of LIVE with the exception of leaderboards, achievements,
and rich presence. Achievements aren’t supported for the simple
(and probably obvious) reason that the very first XNA Creators Club
game with achievements would be a title that simply added points to
your gamer score over time. (ProgressQuest for the LIVE gamer score,
w00t!)
Leaderboards and rich presence are possible but will require
some additional work to implement. We’re not sure when we’ll be
able to expose these features, but it is a goal to have community
games with leaderboards and rich presence.
The
API is simple and easy to use. At Gamefest this year, we demonstrated
writing a networked multiplayer game during a presentation in just
about 40 minutes! In a nutshell, you create a NetworkSession class
with a set of parameters defining things like local or Internet, and
how many players can play. You can also design the game to scan for
available sessions to join. We return well-ordered lists of players
to help with matchmaking.
We have simple send and receive methods in
addition to well-defined PacketReader and PacketWriter classes to
manage traffic coming and going from your game. For players who have
headsets, we also added support for voice, which you can manage so
that both the team chat channels and global channels work with your
game. The API sends notifications when players are lost and supports
host migration if the host drops out. We also added support for
reliable UDP and guaranteed messages across the network.
While the APIs will help you get
networked sessions up and running quickly, the real challenge in
multiplayer networked gaming is figuring how to implement the actual
gameplay so that the game can run across a network with latency
issues, bandwidth constraints, and potential packet-loss. Our
Developer Education team has stepped up here and is providing, on
launch day, new samples and starter kit games: simple, working
examples of networked multiplayer games. These will demonstrate how
to use the API, but more importantly, start you thinking about how to
architect your game data to support network gaming.
And a Whole Lot More…
Besides adding all of these features,
the team has been busy fixing bugs and adding numerous small
improvements to the API, most of which are based on your feedback in
our community forums. We now support multiple render targets on both
Windows and Xbox 360. We have a brand new UI for the Microsoft
Cross-Platform Audio Creation Tool (XACT) on Windows, which makes
authoring your sound content much easier than before.
There is a new
Remote Performance Monitor (RPM) tool for Xbox 360, which can show
you which allocations are being garbage collected so you can refactor
those areas to avoid the collections if they are hurting performance.
We also support new input devices such as guitars and flight sticks.
There are a lot more of these kinds of things to name, but it’s
more fun just to grab the bits and start coding!
So what are you waiting for? Go
download and get started! As always, please give us feedback on where
we can improve, what you like, what you don’t like, and what you
would like to see going forward.
The XNA Community Game Platform team
loves building this stuff, but it is you in the community and the
games you build that really get us excited about coming to work every
day! We’re all avid gamers on the team, and we’ve lost hundreds
of hours playing the great games you’ve built so far. I look
forward to having to take controllers out of people’s hands to stop
them from playing the next wave of games you make using XNA Game
Studio 2.0!
Frank Savage, Development Manager
|