OpenGL ES: Bringing 3D Gaming to Cell Phones posted 3/11 at 12:11:07 PM PST by Dave Astle
Well, this is a little late, but I realized today that I never posted about this session.
This was the one session at the GDC that I knew I had to go to, being a long-time OpenGL supporter as well as being professionally involved with game development on cell phones (I work for Qualcomm).
Hosted by David Blythe (formerly with SGI) and Neil Trevett (OpenGL ES chair for the Khronos Group), this session mainly focused on the current state of OpenGL ES. The details of the spec are currently under NDA, but on a high level, OpenGL ES is a subset of OpenGL targeted at mobile devices, in particular cell phones. At this point, the spec includes the basics of 3D rendering, including transformation, lighting, and rasterization (including texturing). OpenGL ES is further broken down into "profiles" for specific types of devices. Currently, there are only two profiles, the "entertainment" profile, and another for devices requiring a higher level of security, such as computer systems in cars or airplanes.
Several game developers demonstrated games running on cell phones using OpenGL ES "like" implementations (no one can have an actual OpenGL ES implementation yet because the spec hasn't been finalized, so most of the developers either just guessed at what would be in the spec, or designed separate APIs modeled after OpenGL). Most of the games looked pretty good, and would exceed most people's expectations of what is possible on cell phones.
Ultimately, as the number of mobile devices capable of 3D graphics increases, there is a need for a standard graphics API to use with those devices. OpenGL ES is the natural choice for that role. OpenGL has long been the standard for cross platform graphics and game development, and now OpenGL ES extends that standard to mobile gaming. As IHVs begin to provide OpenGL ES implementations, game developers will be able to more easily develop games for a wide range of devices and reach a very large potential audience.
Programming Cleverness: Tricks of the Trade posted 3/7 at 11:18:45 PM PST by Gaiiden
I attended the roundtable for game programming tricks with some pretty high hopes but it seemed that most people came expecting everyone else to have some ideas. That's not to say that it wasn't good - it just wasn't as good as I expected it would be. I'm going to be cheap right now because Brian Sharp, the moderator for the roundtable, was taking notes (better notes than me I should elaborate), and he'll be posting them up on www.ionstorm.com in the near future, so keep your eyes there.
Highly Detailed Continuous Worlds - Streaming Game Resources From Slow Media posted 3/7 at 7:10:28 PM PST by Kevin Hawkins
Today I attended the lecture by Stuart Denman of Surreal Software (creators of Drakar and Drakar 2) called Highly Detailed Continuous Worlds: Streaming Game Resources From Slow Media. The lecture discussed several approaches for loading all types of game data asynchronously in the background while the game continues to run.
Streaming is defined by Denman as the operation when data is loaded as a background operation only when it is needed. The benefits of this approach is that the memory contains “active content” only, it reduces the initial loading time because you only load what you need at the beginning of the level or game, allows for larger levels, and it avoids console limitations.
The impact of such an approach on those working on the game includes:
Classic streaming works by loading a buffer and using it immediately. Denman’s approach to streaming works by loading all data that is close to the player into memory before it needs to be used. An example of a racetrack game was given, where the racetrack is divided into ½ mile segments. With this approach, a vehicle traveling 100 mph would take approximately 18 seconds to go through one of the segments. Since modern hardware can load 80-100 MB of data in that time frame, 18 seconds should be plenty of time to load data asynchronously in the background.
Denman also addressed the need for an ability to separate shared resources from unique resources. He proposed treating all resources separately. The only problem with this approach is that the loading order becomes less predictable.
Data itself is stored in the form of a database instead of a stream. The data could be any kind of data, and the selection of data would be determined through a scenegraph or visibility connectivity algorithm.
Denman also mentioned resource caching, where resources are identified by their type and id, giving a 2^32 possible number of resources. He proposed a C++ class for each type that is derived from a Resource base class, and where each data type has its own cache that is time stamped. Whenever a resource is accessed, the time stamp is renewed to the current time. This results in a least recently used algorithm for flushing the oldest resource when the cache is full. Denman mentions using a hash table to allow for fast lookup services.
Loading is performed through the following steps if the resource is not in the cache:
A “valid” resource is defined as a resource that has been properly and completely loaded. An invalid resource is a resource that has not been properly loaded or if an error condition occurs.
Typically developers will want to use some sort of reference counting schema where each resource keeps a reference count. The cache will not flush a resource unless the reference count is set to zero. The renderer holds a reference count for resources used each frame. Frequently used resources can be locked in the cache. An example of this would be an animation that could happen at any time.
Overall, the lecture was very good and had the right balance of enough low-level and high-level details to enable anyone to implement a similar system.
My Roundtable Adventures posted 3/7 at 7:08:59 AM PST by John Hattan
I decided to take in a couple of roundtable discussions this morning rather than my usual task of attending lectures. First was the sparsely-attended Freelance Developer Discussion. Even though the room wasn't packed, we did have a spirited discussion of freelance-related issues. In attendance was a guy who does Java games for Pogo.com and an artist from the local Art Institute, which apparently has a lot of game art farmed out to it. There were also a couple of newbies in attendance, and we were able to give him a couple of pointers regarding being a one-horse game developer.
Next I attended a discussion of embedded browser-window games. All of the big players in the browser-game world were there (Popcap, Pogo, Shockwave.com, etc). From this I took that folks are generally happy with the big-three browser game technologies (Java, Flash, Shockwave), although Macromedia needs to spend some time speeding up the Flash player. Also, WildTangent doesn't seem to be a player in the mix anymore. Many of the folks had a WT game or two, but either they were poorly-trafficked or users had trouble getting them going. WT's absence from the expo floor this year seems to bear this out.
IGDA VIP Luncheon posted 3/7 at 1:23:24 AM PST by Gaiiden
This year I was invited to attend the IGDA VIP Luncheon, which is something they hold every year to recognize the people that have helped contribute to the IGDA in some substantial way. While you don't receive any personal recognition (there's too many volunteers for that), the chance to sit down to lunch with fellow developers is always worth the while. I missed getting a picture of Graeme's speech, but he did give one. Here's an event pictorial.
Newbie Programmers Group Gathering posted 3/7 at 12:54:49 AM PST by Gaiiden
This morning I attended the Newbie Programmers Gathering over at the IGDA booth. While I didn't consider myself a newbie programmer (Eric Dybsand didn't think so either) in relation to getting a job in the industry I sort of am a newbie. So really for me it was a chance to see Marc Mencher (GameRecruiter.com) again ( I attended a similar roundtable last year with him speaking) and make sure that the decisions I've been making in my life have me on track for an industry job. Dustin Clingman (Full Sail) was also speaking with Marc this year. I walked away with my confidence still intact, and I also have a bunch of tips from the session in this little packet Marc made up. My personal comments are in parenthesis.
Things To Know
Here's a bunch of things that any new game programmer should know.
That was basically it, although Marc was also pushing his new book, Get in the Game! where he gives information on breaking in to various jobs in the industry. Dustin also helped him write the book.
Liquid Development on Strike posted 3/7 at 12:15:35 AM PST by Gaiiden
Last year, Liquid Development, in lieu of buying up expensive booth space, stood outside the GDCA and handed out three different little comic books that depicted Jesus and the Devil in a battle for art supremacy - or something like that. I have the comics at home and not with me and it's been a year so my memory is no doubt a little skewed. But anyways the point was that they were funny while advertising Liquid Development as an art house. This year they really went over the top and held an impromptu strike outside the GDC, clamoring for better game art and that all bad art should be jailed and... well, you can read the signs in these pictures. Needless to say when I walked out to head over to the GDCA and saw the picket line and realized who it was, I couldn't stop laughing. Only in this industry can you get away with something like this :)
Developing Games for N-Gage posted 3/6 at 1:54:58 PM PST by Sande
Nokia sponsored this session to inform developers about its new gaming platform. Intended for a mainstream market of ages 18-35, the N-Gage has a 8-way D-pad, ergonomic design for 2 handed play (think GBA), high quality color and 3D Graphics, loudspeaker, backlight and wireless connectivity through Bluetooth and wide area networks. Games will be on MMC cards and packaged by Nokia.
The N-Gage operates on Symbian, which is dedicated to low power, low memory devices. Adrian Sack of Ideaworks 3D, a third party developer, says programmers may be puzzled at first by Symbian but will soon realize how efficient Symbian is at conserving CPU and memory. Ideaworks 3D ported Tomb Raider and Pandemonium for N-Gage.
For qualified developers who are selected by Nokia or those working with third party publishers, Nokia will provide the device, CD-ROM, emulator, libraries, source code examples, documentation, and technical support. Those wishing to make a prototype for submission to Nokia should download the Series 60 emulator, available free on Forum Nokia. More information can be found at www.forum.nokia.com/games