Tuesday, December 29, 2009

Wednesday, November 25, 2009

Anamorphosis Gamebryo LightSpeed Logo

We all love Anamorphosis, and have seen it done wonderfully before ([edit] even spectacularly). Well, I've done a few simple things around the office, here's one I just did:

Vimeo and YouTube videos.




That was done with painter's masking tape, with the help of Cat, in about 2.5 hours.

Here's an earlier project, the old Gamebryo logo done with post-it notes:



Post-it notes were handy after a late night in the office and no prep. The masking tape is obviously much better. Both were done by setting up an image on my laptop and using a projector to cast it into the room. The perspective for both is just in a doorway, to help guide viewers to the right position. Both also are cast in a way that the image is heavily distorted as soon as you move slightly away from the right point.

Share links if you've done similar projects, or know of good ones. ;)

[Edit:]
Falice Varini is the link you want to follow! See e.g. this.

Tuesday, October 20, 2009

Pixelated Martini Roller - Game Jam Video

I've posted about Pixelated Martini Roller before, including a cell phone video recording of an IGDA presentation and a description of the collision. But dear blog readers you've never been able to see a high quality video. Here it is:



Best watched in High Definition / full screen, with vimeo or youtube.

If you don't recall, it's one of the Triangle Game Jam games I've worked on, this one from 2008.

Three.5 of us made the game in 2 days, based on the madlibs jam theme that randomly made the title "Pixelated Martini Roller".

You're an olive. You like martinis. You roll around and get to umbrellas for checkpoints. Sitting in a martini glass gets you a bit tipsy. You've got more energy and can jump higher. But watch out, stay too long and you get sloppy. You'll stagger around, and your jumps won't land you where you want to go.

As you get tipsy the screen gets pixelated, and the music sounds like it's had too much to drink too.

The world was created with an in-game level editor. The objects are just a few images that represent the visual and collision texels.

We've noted how fun it is to implement hacky collision over and over again in a weekend, but I liked coming up with and working on the pixel based collision we did for this one. I also enjoyed writing the post FX pixels and rushing out the level design in the last hour. ;)

Thanks for Michael Noland and Adrienne Walker for working together on this game with me, and Brad for the title screen.

Wednesday, October 14, 2009

Gamma Correct Lighting, On The Moon!

When I explain gamma correct lighting to people, sometimes they look at images and aren't certain which is supposed to be better.

E.g. in GPU Gems 3, The Importance of Being Linear two spheres are shown, similar to these:

Two spheres lit by a directional light. Which has gamma correct math?


A small thought occurred to me: there's an object people are familiar with that will help them to understand, the moon:
Two spheres lit by a directional light, compared with an image of the moon.
Which has gamma correct math?


Still don't see it.. yes, it's subtle... shall we make it obvious with a gradient?


Yes, it is but one example, there are many more. But it's a good basic visual example.

If you'd like to read more on gamma correct rendering:
[EDIT: See the comments for some nice thoughts from people who've spent more time on this.

Naty points out another good example in Real Time Rendering.]

Thanks to "ComputerHotline" on openphoto.net for the image of the moon.

Sunday, August 30, 2009

A Weak Smart Pointer, or a Smart Weak Pointer

Smart pointers simplify many lifetime management scenarios, especially when designing modular components and systems with a multitude of lifetime dependency options available to final applications. Weak pointers are also useful, but are flawed in a multithreaded environment.

The other day a hybrid smart/weak pointer occurred to me, I'll present it here.

A refresher:
  • A smart pointer is an object that acts like a native pointer, but whose lifetime controls a dynamically allocated object's lifetime. As long as you hold a smart pointer to an object, it continues to live. Multiple smart pointers can point to one dynamically allocated object, and it will not be deallocated until all smart pointers are released. Implementations typically maintain a reference count and delete the dynamic object when that ref count goes to zero.
  • A weak pointer is an object that acts like a native pointer, but whose value is changed to NULL if the object pointed to is deallocated. Holding onto this type of pointer does not keep an object alive, but you can check it's value and see that it is NULL when the object has been destroyed (a normal pointer would still point to the memory the object used to reside in).

Discussion:
Smart pointers are sometimes used for code safety, even when a system does not desire lifetime management responsibility. Weak pointers are a better solution here, allowing a system to keep a reference that will go NULL when the object dies.

In multithreaded systems weak pointers lose their benefit if the dynamic object can be freed from another thread. A portion of code may check the value of the weak pointer and find the object exists. However, as the object is accessed another thread may free it.

One work around is to use a short lived smart pointer, which will keep the dynamic object alive from the weak pointer dereference until work is complete. This requires a smart and weak pointer pair implementation designed to support this use case in a multithreaded system, and is also likely quite a performance burden due to the additional reference count manipulation.

For code that runs infrequently, the smart & weak pointer pair is a good option though. Without any smart or weak pointers the system would need to implement thread-safe API to register and deregister objects, and the systems would need to be tightly coupled (or perhaps use a message system).

My Idea:
A smart weak pointer to the rescue? It would be nice to have the same functionality of a smart pointer, knowing that as long as you hold it the object will live, but also indicate to the system that you're willing to let the object die. The only catch is that you need to let the object die at a convenient time for you, so that you can safely handle the situation, but not be required to safely handle it everywhere you use the object.

Start with a smart pointer implementation. Add an additional ref counter for the smart weak pointers, call it WeakRef. Any smart pointer pointing to an object acts as before. Any smart weak pointer acts the same as a smart pointer, but also increments WeakRef counter. Add a method to check the ref and WeakRef counters to see if they are equal, and if so set the smart weak pointer to NULL and decrement the two counters.

A system then could use the smart weak pointers just as if they were typical smart pointers, and occasionally check if the smart weak pointer should release it's reference.

System::OnTick()
{
for (lots of work to do)
{
Look up the right smart weak pointers to dereference, and use them as normal
}

for (all smart weak pointers)
{
CheckForRelease(p)
}
}
This works out well for a multithreaded system that accesses a large number of smart pointers frequently, and has a regular opportunity to release them.

If your system only infrequently dereferences pointers, is single threaded, or performance isn't an issue; the discussion's example of weak pointers with temporary smart pointers would be great for you.

Wednesday, August 12, 2009

Beautiful Pixels in Post-It Notes and Assembly

Previous readers know about the Beautiful Pixels API game jam concept. I'm tickled whenever I see others with the same idea. Such as

Post It Shooter, an experimental game by Petri Purho:
A Space Invaders mini game rendered with a post it note style. ;) Well worth seeing it in motion... download or youtube video (it lessens the effect since it's a downsampled resolution, at least watch in HQ).

Frameranger, the winning demo at Assembly 2009 by CNDC, orange, & Fairlight:

At 5 minutes in, there's a great shift to 8-bit music style and a block push pixelated render target. Check out the capped.tv video.

oh, demos... i love you, you make the most beautiful pixels.

Wednesday, August 5, 2009

A Light Field and Microphone Array Teleconference Idea


Paul Mecklenburg and I were chatting, and the thought of really cheap cell phone cameras led us to day dreaming about a teleconference system.

Line up a dense array of cheap CCD sensors and microphones into a video conferncing wall you're projecting onto. Now you've got a light field, which permits rich virtual camera re-imaging (movement, rotation, zooming, depth of field). The microphones can be used to triangulate sound sources. Sources from e.g. table locations can be dampened (see "hush zone" in picture). Sources distant from mics can have an audio boost to account for volume fall off (see "audio boost"). The speaking locations can also be used to drive an automatic virtual camera which focuses on subjects doing the speaking.

Wednesday, July 15, 2009

Diving - Triangle Game Jam 3 - Music Game



Video links (Recommended viewing in H.D.): youtube, vimeo.

The 3rd Triangle Game Jam was last weekend! Hot off the presses, the game I worked on: Diving. (The other games have not yet been posted on that website yet -- we're all busy catching up after speding the whole weekend making games)

The theme was Music Game, similar to how music and video can be used to make a music video experience. The theme was inspired by Reset.

In Diving, the gameplay is subtle. The game is primarily delivering an experience well tuned to the music. I'm pleased that our design captured the mood of the music, synchronized to the lyrics, and also the piano notes.

The actual gameplay mechanics allow you to steer left and right as you chase the ring down into the depths. While that's a bit simple, the concept of the woman at the railing, jumping after the ring, and swimming down after it ever deeper, is the real point. The game is designed to never let you actually catch the ring, it's always just out of reach and lands on the ground always at the end of the song. As the song closes and the woman just about reaches the ring, there's a fade to black.

The song and concept seed were Adrienne Walker's, and I contributed significantly to the final design we presented.

Contributers:
Brett Brown (Title Art) (Electronic Arts)
Derek Ehrman (Programming) (Atomic Games)
Vincent Scheib (Gameplay Art/Programming) (Emergnt Game Technologies)
Adrienne Walker (Programming) (Emergnt Game Technologies)

The song was Feathers by Man Man.

Tuesday, July 14, 2009

An Email Organization Scheme for Outlook 2007: How I Efficiently Triage Email


I process a lot of email. (Beautiful pixels take a lot of email to make these days.)

Many emails are in conversation threads. Some emails are very important, and must be responded to, while others I can soak up when I have time or choose to skip over.

I'll discuss the system I use in Microsoft Outlook 2007.

Here's what it looks like:



The mechanics of it:
  • I leave email marked Unread until I explicitly mark it read (CTRL-Q)
    • I turn off automatic marking as read (Menu: Tools: Options: Other Tab: Reading Pane...)
  • I flag message for Follow Up (with times, e.g. Today, Tomorrow, Next Week, or a specific date).
  • I read email from the "Unread or For Follow Up" folder.
    • (You'll find this under your Mailbox tree, in "Search Folders")
    • This displays all messages not yet read, or flagged for follow up.
  • I use a custom view:
    • Make a a new view by copying one and making changes
      • Menu: View: Current View: Define: Copy "Messages with Auto Preview"
    • Group By...
      • (set "Select available fields from" to "All Mail fields")
      • Start Date (Ascending)
      • Importance (Descending)
      • In Folder (Ascending)
      • Conversation (Ascending)
    • Sort...
      • (set "Select available fields from" to "All Document fields")
      • Category (Ascending)
      • Received (Ascending)
      • (say "No" when closing window and asked if you want to show Category field)
    • Other Settings
      • Auto Preview: Preview unread items
      • Reading Pane: Right
    • Automatic Formatting...
      • Only Me
        • Condition: Where I am "the only person on the To line"
        • Font: Underline
  • I make important email folders "Favorites"
  • Our teams use many public folders, and I make them favorite folders for the ones I track
    • (You must make the public folder a favorite public folder, then a favorite email folder)
  • I use several rules to presort items
    • Route emails to topic specific folders whenever possible
      • e.g. sales staff, partner companies, email lists
    • Flag items for follow up later
      • e.g. items I need to review weekly are flagged "next week"
      • Delete means "trash it, I don't need it any more, but just in case keep ~6 months of deleted items"
    • I purge deleted items manually
  • My Inbox means "I haven't bothered to sort this", and accumulates lots of email
    • I don't read out of the inbox, so it doesn't matter much if it builds up
    • I do periodically move everything in the inbox to a folder "_save-generic"


Now, how do I use this?
  • Emails arrive and I triage them.
    • I select the "Unread or For Follow Up" folder.
    • I hit the Home key to get to the top.
    • I scan over the large pile of unread messages, and first at a quick glance:
      • Delete anything obviously not important.
      • Move to Folder anything that should be sorted
        • This greatly improves grouping of items in this "Unread or For Follow Up" view, beyond just filing things away for later.
        • I use the toolbar icon which remembers the most recent folders I've put things into.
      • Mark as read (CTRL Q) anything trivial I can ignore .
      • Flag for follow up anything substantial I can't handle right now.
        • Tomorrow, this week, next week, or a specific calendar day if needed..
      • Anything remaining I need to handle right now.
        • I flag these by just clicking on the "flag", which is effectively "Today".
      • My email I should handle is now all sorted by a follow up date.
      • I hit F5 to refresh the view - hiding all messages marked Read and with no flag.
  • After triage, emails are displayed in groups sorted by the time frame I need to review them.
    • I read emails, and after doing so mark them as read, leaving them flagged if I still need follow up.
    • As emails are dealt with, I delete them if appropriate, or click their flag to mark them as complete (which removes them from this list).
    • I can easily push items futher away in time if I'm getting backed up, or "read ahead" if I'm ahead of things


The major benefits:
  • I can easily push items into the future and not deal with them right now - they'll come back to my view at an appropriate time.
  • Long conversations are all grouped together, automatically. And they can easily be hidden/rolled up from the view.
  • I can easily sort several emails into folders, which groups them together in my view. Thus related emails can be grouped together, even when they have unrelated subjects lines.
  • Public folders allow me to go to that topic at an appropriate frequency (every few hours, daily, weekly), and making them favorite favorites makes them easy to see.
  • New High Importance emails are at the top of the list, while ones I've look at can be pushed down for later.
  • Emails will never "fall through the cracks".


The shock to new users:
  • The email view is padded out vertically quite a bit.
    • True, but the sorting and grouping benefits are worth it when you're tracking dozens to hundreds of emails.
    • You get used to it pretty quickly.
    • For select folders I use a different view that has 1 email per line. You can always toggle 2 views for your need.
  • Explicitly marking all emails as read is a pain.
    • Multi-select and marking entire conversations read at a time helps.
    • This is what keeps emails from falling through the cracks.

- thanks technabob.com for the cc image of the hamster shredder.

Tuesday, June 30, 2009

Doom Resurrection for iPhone by Id and Zorsis for Wii by Emergent

These two pictures show:
  • Zorsis (Forbidden Terror on Station Z)(Demo) for Wii by Emergent
  • Doom Resurrection for iPhone, by Escalation and Id
Which is which?




Interesting similarities. ;) Kudos to our tiny demo team for GDC 2008.

Thanks Michael Noland for pointing it out.

(Resurrection picture from Kotaku)

Monday, June 22, 2009

Links: Middleware survey, online tech, virtual memory, graphics deconstruction, deferred lighting, ssao, 3d glasses

On the left, a pile of links.
On the right, some Gamebryo games I don't think I've mentioned yet.

Game Development:
  • Mark DeLoura is at it again with another Middleware Survey. (You saw his writup on his Game Engine Survey online or in Game Developer, right?)
  • Darrin West has been writing up detailed thoughts on Online Game Techniques, e.g. his recent post Online Hard Problems.
  • Sysinternals offers handy tools you likely already use, such as Process Explorer. But, have you noticed VMMap? It can show you a process's virtual memory access. This came up recently on the DXGAB email list as a hint to finding memory leaks of GPU resources (look for WriteCombine attrib)
Graphics:
  • Timothy Farrar is verbose and detailed in his many graphics posts this year, certainly you're following along? e.g. game deconstructions: Killzone (+more), Resistance 2
  • Adrian Stone has started a blog Game Angst, and has some experienced thoughts on Deferred Lighting vs Deferred Shading.
  • Accumulative SSAO, similar to what was done in Gears of War 2. A gamedev.net thread on Screen space ambient occlusion together with reprojection to smooth over time.
  • 3D Glasses from NVIDIA. I recently tried these out in the office, with about 50% of people thinking they were cool, to 50% not being all that impressed. I'm concerned it's a bit of an expensive gimick that doesn't add much - gamers won't wear glasses for prolonged periods, and I doubt autostereoscopic displays will justify their cost.
Fun:
  • ThruYOU, sample based music, but together with video from the youtube sources of the samples.
  • Advanced Cat Yodeling (youtube video link -- couldn't help myself, it's funny)

Texas CheatEm
Dungeon Runners
Freaky Creatures
Wizard 101
Bloodbowl
Space Chimps

Friday, June 5, 2009

EGT Podcast E3

Emergent Game Technologies Podcast, E3 2009 where Adam Creighton, Dan Amerson, and I chat about E3 2009 and recent Gamebryo news.

E3 Thoughts on Nintendo, Microsoft, and Sony; Motion Controllers

Some thoughts on E3 2009 press briefings from Microsoft, Sony, and Nintendo.

Motion capture was a big focus from all three, which seems to be an attempt to show technical achievement and ability to grow into the market area Wii has had some success with.

Microsoft had some big news with device free, full body tracking (Natal concept advertisement). That's very impressive, and I give mad props to Ryan Geiss who's been a key contributor on the Xbox team that pulled off the software side of things.

Sony has a odd looking engineering prototype that requires you to hold a controller with a light bulb on it. However, they deliver excellent precision and tracking with nearly no lag (Sony live demo).

Nintendo discussed their previously announced motion plus, which adds precision to their unfortunately laggy and low precision launched wiimotes.

Some criticism to go around?

Nintendo didn't show anything really compelling with their new found precision. All I could see so far was really a more expensive and bulky set of peripherals that still didn't sync up as well as you'd like with characters on screen. Aiming for FPS or pointing was still a problem.


Sony's controller requires something in your hand and a camera. You'll be limited as to where you can stand, and the light bulb on the controller will be challenging to make "cool".


Microsoft's Natal still has some bugs to work out (Their first demo shows poor tracking of the speaker, contorting and snapping a lot (see video), though it is a bit better in subsiquent live demos).

Their precision will likely stay pretty limited with the camera only solution. Also, buttons are important, so it's likely that many "non-gimmick" games will still have you holding a controller.

Overall, I'm still curious about how much impact motion based gameplay will have on the long run of games. I think there'll always be a place for it, perhaps more as a gimick. But, the recent hype of Nintendo's Wii may diminish (many of their consoles sold to the "new market" are collecting dust after the gimick wore off). Will the result be the same as 3D stereo glasses? A gimmick that returns every decade or so, only to still be realized as a gimick without lasting appeal?

Social networking was focused on quite a bit too, along with adding other non-game elements to the systems. Facebook, Twitter, and more Video. TV and movie delivery work out well, but it's odd that Sony didn't have more to say here. Sony Pictures should be owning this market nicely, but the bigger news is Netflix and Sky on Microsoft Xbox 360.

Games
Well, many looked good, but also more of the same. ;)

One Game that stood out to me: Mod Nation on PlayStation. It's editor is great, so easy, so much what I wish Trackmania offered. ;) Now if they can only get their game play to be as fun as Trackmania.

Friday, May 1, 2009

Rapid Prototyping (and Rapid Iteration) with Gamebryo LightSpeed, Presentation


In April I presented at the 2009 Triangle Game Conference on Rapid Prototyping and Rapid Iteration. I'm making the slides, audio, and video available here:



Abstract:
Studios succeed by securing solid publisher deals, and then delivering games on time and budget. Great games can't be started until that deal is in place, which places great prototypes as one of the most essential stages of development. This presentation discusses several technical strategies that can be used to facilitate rapid prototyping. These include discussions on asset management systems; live tool-game connections; and data driven designer tools and extensions. This presentation is intended for attendees experienced with game development. It will dive into the technical design of these systems and demonstrate their features. Concepts learned will be directly applicable by developers preparing to build a game content pipeline and tool set.
The demonstrations come from Emergent's latest product, Gamebryo LightSpeed.

Wednesday, April 1, 2009

Used Games on Valve's Steam: Competition for GameSpot

Valve adds a used game marketplace to the Steam service! Because Steam servers are used to validate games as licensed by particular accounts, Valve has been in an excellent position to offer easy migration of games and game content for some time.

Recently Gamestop, Amazon, and others have provoked the ire of developers such as Mark Rein, David Perry, etc. due to the perceived loss of revenue for developers.

Valve's offering enables developers to assign a resale tax, e.g. of 20% of a used game sale. It also assists with market price point adjustment, since a developer can list games at a full price, and the used market will auction off games at the highest price they can under the new price. As games trickle through the used market, developers continue to receive the highest revenue the market is willing to offer. Nice.

Monday, March 30, 2009

GDC 2009 - My Overview

Gamebryo Lightspeed consumed nearly all my GDC hours. I was slammed with setup, demos, client meetings, partner tech meetings, and selling on the show floor 16 hours a day all week. ;) Friday 11pm when I thought I was finally free, I was pulled into a group of Japanese developers to pitch some more.

Other things I did see:
  • OnLive - cloud computing video games delivered via low-latency live video/audio feed. They've got a little hardware box to connect to your TV. AMD has made some vaporware news on this topic too. I'm not certain OnLive will make it, and get publishers to sign on etc... but I am certain that we'll see this technology eventually. More likely that it will stick vs:
  • Stereo - NVIDIA has been pushing it, Sony had some R&D passive displays and games with stereo, and some other vendors have contacted me about it too. A nice suit from a market research firm interviewed me on the topic... just about everyone except users and game makers seem keen on this. I'll put my money down that it's a short term flop of a gimmick.
  • Engines - So many engine companies... alpha sort: BigWorld, Blade3D, C4, Crytek, Evolution, Gamebryo LightSpeed, Hero, Infernal, Project Offset, Source, Torque, Unity, Unreal, Vicious, Virtools, and some not-yet-announced engines walking the show floor. Somehow I don't think they're all going to make it...
    ... If you checked some out - drop a comment and let me know what you thought.
  • Tools - A few different "platform" companies have shown some very nice tools for developers in the works. NDA blocks me, but the good news is that game development on increasingly complex machines will be a tad easier.

Friday, March 13, 2009

Mark DeLoura's Game Engine Survey

Mark DeLoura has published results from a Game Engine Survey (part1, part2). Well worth a read for any game developer.

I’m pleased to see that developers are using engines!
55% of the responders stated that they are using a middleware game engine on their current project.
Also, many are using Gamebryo:
39% are using Unreal, and 22% are using Gamebryo, with other engines landing significantly smaller percentages.

Gamebryo 2.6 has been on the market since last fall, and stacks up nicely to the needs developers are expressing: They want tech that works for any genre, Source code, Easy integrations with other middleware, Multi-threading, On target viewers, stand along editors, solid documentation, and real support.

At GDC we’ll be unveiling Gamebryo LightSpeed. (Some press coverage has already gone out.) Looks like we’re on the money with our major new features and tools. Mark’s survey shows developers are demanding tools for rapid prototyping and rapid iteration. We’re delivering just that with LightSpeed, and doing it with the same technology that clients can use all the way to gold master.

Interesting times. I’m glad to have made the transition from internal tech at game studios to a tech company supporting hundreds of games. The industry has rounded the bend on adopting this business model, and from an engineer’s point of view it just makes me feel good to have things built more efficiently.

Monday, February 23, 2009

The Escapist Show coveres the Triangle Global Game Jam

The Triangle site of the global game jam was covered by The Escapist Show:



After the "48 hours later" montage, all games shown were developed by our game jam group.

Friday, February 20, 2009

Triangle Game Conference - Confirmed Speaker


I'm a confirmed speaker for the Triangle Game Conference, April 29 and 30, 2009. There's a good line up of presenters, from companies including:
  • Crytek
  • Destineer
  • Emergent Game Technologies
  • Epic
  • Insomniac
  • Red Storm
  • Vicious Cycle
  • Virtual Heroes
(Are you surprised to learn that only one of these companies isn't local to the Triangle?)

Thursday, February 19, 2009

dAb 3D Painting Research Licensed

[Edit 2010-03-15: A new project at Microsoft has been announced that looks a lot like dAb, Gustav]

In 2000 I collaborated with Bill Baxter on a 3D paint brush system that was presented at Siggraph 2001. Less talk, more video:


dAb: Interactive Haptic Painting with 3D Virtual Brushes (Siggraph01)

Bill continued the line of research for his PhD, and you can see some great improvements to the paint model and brush simulation:


IMPaSTo: A Realistic Model for Paint (NPAR04)


A Versatile Interactive 3D Brush Model (PG2004)

Over the years, we've had a few large companies inquire about licensing the research. I'm excited to say that we've closed a package deal for several systems! Perhaps you'll see this technology in consumer applications in a few years.

For more details, visit the dAb webpage.

Friday, February 13, 2009

Building a Game Engine Product vs Internal Tech

Yesterday I was reminded again of the difference between developing Gamebryo as a product and typical studio internal tech.

Joel, over at Insomniac, mentioned how much he enjoyed only working on one platform, and only supporting one version of Maya. While Gamebryo supports several versions each of Maya, Max, and XSI. We cover Win32 with 2 compilers / 2 versions of DirectX / static & DLL configs, Xbox360, PlayStation 3, and Wii. And, for good measure, we keep some of the code running on Linux.

David Boss also happened to have just given an update on our build system. He's running continuous integration on all platforms with unit tests; a full build; extensive regression tests; and packaging into DVD images. This turns over every night. That's impressive for an engine, tool set, and art library this size!

Monday, February 2, 2009

Global Game Jam: Robot Love

The Global Game Jam weekend is over, and I'm excited to say I got to help out on Robot Love:

High Resolution Version available on youtube website.

The theme was, "As Long as We Have Each Other we'll never run out of Problems..."

Gameplay: A 2 player co-op game with a simple gimmick, you need to stand next to the other player to reload! Two robots are escaping their factory, chased by mobs of other zombie robots.

Credits:
  • Demond Rogers (Epic) did an awesome job at the character animations.
  • Jason Connell (Red Storm) built the 2.5D environment.
  • Adrienne Walker (Emergent) was ninja lead programmer.
  • Harrison Moore did sound and UI.
  • Will McGuire coded and placed enemies and props in the level.
  • Mike Daly (Emergent) chipped in on level file format and robot AI.
  • Vincent Scheib (Emergent) helped with collision, a bit of gameplay, and gamestate/screens.
Download it!

Saturday, January 31, 2009

Global Game Jam: Kicking off the Triangle

The first global game jam has been kicked off! Although I can't participate all weekend, I did help get things started at the local triangle game jam. You can check in on them with this ustream:



Icarus studios is being an excellent host, setting us up in their motion capture room and having wired up a LAN for us. We've got just under 20 participants, with 4 games in development (brainstorm names: Breeder, Tethered, Robot Swarm, Buttons and Mindy).

Monday, January 26, 2009

Submitting Our Fails (or, how I love the Error Shader)


I pestered Michael Noland to submit a few images from Emergent to I Get Your Fail, which if you haven't subscribed to you should. ;)

This one is my fav. Several years ago Tim Preston wrote the "error shader", for any situation where a renderer can't bind a shader... and we haven't been able to wipe the smirk off his face yet.

This particular scene is amusing with some error shader, and some missing lighting.

Monday, January 12, 2009

Vista Send To Clipboard As Name

Vista 64bit has been a fairly smooth move for me, but one feature of Windows XP I missed dearly was Send To Clipboard As Name (from the Power Toys).

I frequently have one or several files I'd like to get as fully qualified text strings to dump into a shell command, another application, or just a text file when keeping notes.

Well, I found it, Vista supports Copy as Path on a file explorer context menue if you hold SHIFT when opening the context menu.

The image shows the context menu with the SHIFT exposed items:
  • Pin to Start Menu
  • Add to Quick Launch
  • Copy as Path

Tuesday, January 6, 2009

msinfo32 - big brother of dxdiag

Developers likely already know about dxdiag, a good tool to get information related to graphics. However, did you know about msinfo32?

Msinfo32 and it's predecessors (msd, winmsd) have shipped with DOS and Windows for quite some time. These tools are a great one-stop-shop to get information about a machine: device memory mappings, drivers, environment variables, startup programs, history of program crashes, etc...

Msinfo32 is easy to launch and save a computer's data to a single binary or export to a text file, which you can examine on other computers. Handy to know about when you're debugging across several machines.