Nov 11 2012

WSOP

Another game out at EA, World Series of Poker. I helped finish up WSOP, creating the Tutorial/Help systems, the content downloading/management systems, and fixing rendering issues, among other things.

The tutorial system involved creating a slideshow mimic of the entire game scene in action. I managed to create a data-driven duplicate of the game scene that could then be tuned to work with all the tutorials. This required adding screen-space occlusion to our rendering tech, but in the end allowed created a tweakable, extendable tutorial system that could be easily synced with the visuals within the core game itself.

With the content downloader, I learned from Pet Society Vacation’s scene-blocking download at the start, and worked to create a silent, background downloader that could fail, re-attempt, and stabilize itself without interfering with the game systems itself. It could suspend to prevent choking bandwidth on critical areas (logging in), and manage on-screen visuals in priority for an always-quick response. If it ever ran into connection or content issues, it could clear to a known safe point, and re-commence downloading of content once the server/connection stabilized.

It’s still up and running, and if you are a fan of poker, give it a shot.


Nov 11 2012

Pet Society Vacation

I completed my first game at EA: Pet Society Vacation. Pet Society Vacation is a mobile game for iOS based off the Pet Society world. I worked from pre-production to post-launch, trying to get my hands into as many areas of development as I can.

I helped in Pre-production doing engine research and capabilities. I tested many engines, and we eventually landed on Unity, which in retrospect was a fantastic choice. It was my first real experience with Unity, outside of tinkering at home, but I felt very comfortable with C#, and I managed to get a pretty solid proof-of-concept in < 1 week, which really helped seal the deal. Throughout the duration of production I became the go-to guy for Unity related technical issues, learning how to circumvent the byte-code stripper so that we could implement SQLite functionality in a reduced-size build, implementing Zip libraries, re-factoring our networking to properly manage chunked requests, and process-while-receiving behaviours, and other more unusual Unity/C# related issues.

I worked on the client-side implementation of our updating/item system, which turned out to be very effective, allowing the game to continue updating for months after all programmers were gone. The Item system was component-based (Can you sit on it? Can you eat it? Can you see it? etc…), and relied heavily on reflection, while our tools could effectively parse our compiled C# code to create the proper item definitions. This eliminated the need for boilerplate serialization/tooling code, making the code/design flow incredibly efficient. It also meant we could easily create unexpected combinations of components in the design tool, to create unique items.

I also spent a lot of time on the rendering system, of which I feel has some unique features on mobile that are not replicated elsewhere. Due to the fact that we had thousands of items (40mb of .png images of items) and were constantly expanding(a few mb a week of new stuff), using a standard pre-atlassed system was simply not feasible, since a user could have any particular combination of items in any scene and we wanted to prevent limitations. The system in Pet Society Vacation was doing it’s atlassing on the fly, by checking required images for the scene and atlassing them while entering the scene. This allowed us to limit our users purely on texture space used (and even that would automatically downscale when it required more space), rather than simply only allowing certain combinations of items or having to limit users to specific atlasses. This allows us to have such bright, rich, hi-res scenes on even low-end mobile devices. There were a few optimizations that were left to-be-implemented (Memory mapped source image database for one), but overall it was quick, and supported stream-in as well. It could save these dynamic atlasses to disc in cases of re-use. It also used an automatic layering system that would evaluate z-ordering to optimize image placement in atlasses to aggressively tune our draw calls. This meant that even with a 1000 user objects + HUD, and animated/clothed pet(s), we could sit at < 15 draw calls at any given time, and still maintain proper alpha ordering.

Sadly, due to marketing issues, and decline in Pet Society, this game had to be shut down, so you can’t play it yourself. But here is a video of it.


Jul 26 2011

Weekend Spline Test

Spline Test

Spent the weekend (or the part I wasn’t running around) playing around with Bezier Curves and Splines and managed to get a neat little Unity prototype working. Still trying to iron out the physics of movement, it’s a lot of tiny tweaks and adjustments. I made some Unity editors for building the Splines and whipped up a simple little course and webplayer to be able to better tune the controls. Lemme know what you think.

Controls are Left/Right to roll and down increases Gravity (think Tiny Wings plummet).

The Webplayer


Mar 1 2010

Cloneys (48H Competition)

Banner

Made with Eric McQuiggan, Cloneys was made during the first Dirty Rectangles Game Jam.

The Jam’s theme was birth, and this game is about spawning as many rabbits as possible, provided you’e eaten enough carrots to have the energy for it, to overcome your obstacles and make it home. It contains 10 levels, and rewards medals based on how many rabbits are available. It was designed with a Controller in mind, although keybaord controls are available as well.

Here it is:
Cloneys

Keyboard Controls:
Arrow Keys = Move
Space = Jump/Menu Continue
X = Spawn
Z = Previous Rabbit
C = Next Rabbit
R = Restart
Escape = Back To Menu/Exit

It is in XNA, and you will need:
Microsoft DirectX 9.0c
Microsoft XNA Redistributable 3.1
Microsoft .NET Framework 3.5


Feb 16 2010

Prototype: Is This Fun?

Marble Prototype

I found Xen and JigLibX, and am trying to better acquaint myself with them, so I made a quick Marble Prototype. There are still a number of bugs, largely due to continuing to learn more about Xen as I work.

The basic concept of the Prototype is a competitive marble game mode, in which you are being swarmed by marbles that blindly chase you off cliffs. You must survive as long as possible. The curent level contains a few relatively safe spots, to take a break, and the marbles that get dropped respawn immeadiately. The marble count will rise up to 15. I cannot currently restart, still solving some asynchronous update bugs, so restart the application to reset the marbles.

Let me know what you think.

Here it Is

It’s in XNA, so you will need the XNA Redistributable, .NET framework, and DirectX.

Be gentle it’s still in a VERY early form.

The Controls:
Arrow Keys to Move.
Space is a burst in the currently aiming direction.
Z dead stops you and makes you nearly immovable.

I’m trying to think of a direction I could take this, with general modifications, power ups, maps styles, other game modes, etc… And I want to know if it’s fun for someone who didn’t make it.


Feb 1 2010

Lamb Mines (48H Competition)

Lamb Mines Logo

This weekend, I attended the 2010 Global Game Jam and helped create Lamb Mines. It’s a Sheepherding style game with a twist. It was made by 6 of us in XNA.

The Theme was Deception, and in Lamb Mines the goal of the game is to trick the sheep into running into Mines placed by you. You can take on two forms, either Sheep(Attract), or Wolf(Repel). We were voted in the Top 3 out of 8 at the Ottawa location.

We had 48 hours from the time we heard the theme and started thinking about groups, to the submission deadline. It was very stressful, but it was an amazing experience. I plan on participating in any other 48 hour game competitions that come up after experiencing this one.

Our Global Game Jam Page

The Link contains the Final Game with install instructions, as well as the Source code.


Jan 8 2010

Deferred Renderer

Deferred Render Test
Taking a small break from work after Christmas, I’ve created a Deferred Renderer. I took an old DirectX project I had, and started an Object-Component model Scenegraph (think Unity) with Deferred Rendering. Light Pre-Pass soon to come. I am aware of a few small issues, such as the occasional outlining, however I have no contacts with interest/knowledge in rendering so it may take a little longer to figure out the source of these bugs. I hope to get it cleaned up a lot by the next version.

It’s currently a workbench for learning and expanding my knowledge and I hope to update it every month when I get the time.

Update: I’ve fixed up the model loading code, and now it renders out 49 Point Lights and 64 Models at 3000 Polygons each. I’ve also fixed up any Lost Device issues. The f ramerate is lower than I’d like and it’s the next challenge to tackle.

Without futher ado, here it is (DirectX re-distributable required):
Rendering Workbench
Source Code or Snippets available upon request, through E-mail (thoams.baird@sympatico.ca) or comments below.

Note: Should you experience any problems let me know, It’s still very early and so I’ve not been able to test on any other machines yet.


May 30 2009

Scallywags: An Xbox 360 Pirate Game

Scallwags

Scallywags is a 4 player, free for all, pirate game for the Xbox 360.  It was my final project from my game Development Program.

It was created by 8 people: Tom Baird (me), Mike Allwood, Jakub Laszczyk, Cyril MacIsaac, Adrianna Cote, Sonia Illian, Tina Circelli, and Bradley Legere.  We created it during only 4 months during a heavy workload of school from concept to submission to Community Games.

The basic premise of the game is to pillage the central village as well as your fellow pirates.  The gameplay is turn based, however every time someone fires a cannon, all 4 players can manipulate the shot as the fuse burns down.  This creates a feeling that you are always playing, as well as a stronger ability to aid allies and punish rivals.  Multiple ships can be purchased to increase the size of your fleet to get more gold and help protect what you’ve already stolen.  It is fully 3D and created using XNA.

I was the Lead Coordinator of the group, and helped organize milestones and deadlines, as well as contributing things such as shader effects , particle effects, firing mechanics, general gameplay programming, some menu work, sounds, bug fixes, and anything else that needed to be done at the time.

Scallywags is available on the Xbox Live Arcade under the Indie Games section, and a downloadable PC version is available upon request, through E-mail (thoams.baird@sympatico.ca) or comments below.

IGN Review:

Dude, I don’t know what the hell is going on this week, but there’s a lot of neat little games being released. Scallywags, at its core, is little more than a simple little dash to capture and stash cash, but little choices like only being able to fire once per turn and letting other players mess with the shot adds a neat little multiplayer emphasis to everything. Buying ships with stashed money, being able to steal other players’ ends and use ‘em for yourself, some basic strategy in getting the drop on someone or destroying emplacements all make for a genuinely neat effort.

Source


May 30 2009

Galleon: Networked Battleship

Galleon is a game I created in 3rd year Networking class with Mike Allwood.

It can support 4 games for a total of 8 players, as well as a central lobby to organize games. It’s pretty simple to play, and the larger challenge was in making sure that all games were handled, and all players were accounted for.

It uses a Pirate theme, like many of my other projects and has a cartoony 2D look for it. We chose the 2D look to keep the interface clean and understandable. The installer comes with both the server and client, and here it is: Download Galleon

This Game requires the following other programs:
Microsoft DirectX 9.0c
Microsoft XNA Redistriutable 3.0
Microsoft .NET Framework 3.5

The Login and Lobby:
Login ScreenLobby Screen

Preparation and Gameplay:
PreparationGameplay