Showing posts with label Game Development. Show all posts
Showing posts with label Game Development. Show all posts

Tuesday, March 4, 2014

GDC 2014 Schedule Highlights

My quick scan of the GDC 2014 Schedule:
  • The Year in Free-to-Play Games - Monday 10:00
  • Animation Bootcamp: An Indie Approach to Procedural Animation - Monday 16:00
  • Turing Tantrums: AI Devs Rant! - Monday 16:30
  • Google Developer Day (Presented by Google) - Tuesday 10:00
  • Antichamber: An Overnight Success, Seven Years in the Making - Tuesday 11:15
  • The Connection Between Boys' Social Status, Gaming and Conflict - Tuesday 12:45
  • From Indie to AAA to Indie: The Rebirth of Design - Tuesday 13:45
  • Analysis and Lessons from the Global Free-to-Play Market - Tuesday 15:00
  • Bringing Console Quality Lighting to Mobile (Presented by Imagination Technologies) - Tuesday 15:00
  • Indie Soapbox - Tuesday 16:30
  • ID@Xbox: Introduction to the Xbox One Console (Presented by Microsoft) - Wednesday 09:00
  • Flash Forward - Wednesday 09:30
  • Moving to the Next Generation: The Rendering Technology of Ryse - Wednesday 11:00
  • Porting Realm of Empires from Facebook to Mobile HTML5 - Wednesday 11:00
  • Creating Unique Interactive Experiences with the PlayStation4 (Presented by Sony Computer Entertainment America) - Wednesday 12:00
  • ID@Xbox: What's New in Live for Xbox One (Presented by Microsoft) - Wednesday 13:00
  • ID@Xbox: Faster, Better: An Overview of Tools and Performance for Xbox One (Presented by Microsoft) - Wednesday 14:00
  • Mantle - Introducing a New API for Graphics (Presented by AMD) - Wednesday 14:00
  • OpenGL ES 3.0 and Beyond: How To Deliver Desktop Graphics on Mobile Platforms (Presented by Intel Corp) - Wednesday 14:00
  • Authoring Tools Framework: Open Source from Sony's Worldwide Studios (Presented by Sony Computer Entertainment America) - Wednesday 15:30
  • Next-Generation AAA Mobile Rendering - Wednesday 15:30
  • Mobile Programmers Roundtable: iOS - Wednesday 15:30
  • Rendering Battlefield 4 with Mantle (Presented by AMD) - Wednesday 15:30
  • The Last of Us: Human Enemy AI - Wednesday 17:00
  • A Context-Aware Character Dialog System - Thursday 10:00
  • Classic Studio Postmortem: Lucasfilm Games - Thursday 10:00
  • Code Clinic: How to Write Code the Compiler Can Actually Optimize - Thursday 11:30
  • Rant Apocalypse: The 10th Anniversary Mega Session - Thursday 11:30
  • Approaching Zero Driver Overhead in OpenGL (Presented by NVIDIA) - Thursday 13:00
  • Ask the Experts: Professional Programmer's Panel - Thursday 13:45
  • Classic Game Postmortem: Robotron: 2084 - Thursday 14:30
  • Ellie: Buddy AI in The Last of Us - Thursday 16:00
  • Engine Postmortem of inFAMOUS: Second Son - Thursday 16:00
  • Classic Game Postmortem: Zork - Thursday 17:30
  • Distribution & Tools: Building your Game for the Modern Web and Finding an Audience (Presented by Mozilla) - Thursday 17:30
  • Experimental Gameplay Workshop - Friday 14:30
I'd love to hear sessions that stand out to you.

(Regular Expression used on their CSV export:
^"([^"]*)","2014-03-.. ([^"]*):00","[^"]*","[^"]*","([^"]*)".*$



  • \1 - \3 \2
  • )

    Tuesday, March 19, 2013

    GDC Sessions for HTML5 games on web and mobile


    GDC sessions that caught my eye related to building games on web tech:

    Native Apps? With HTML5? Yes You Can! (Presented by Google)
    Joe Marini  |  Developer Advocate, Google
    ... Chrome Packaged Apps platform allows the creation of native app experiences using HTML5 technologies that work offline by default, have access to native platform features, and can run across a variety of operating systems.

    Fast and Awesome HTML5 Games (Presented by Mozilla)

    Vladimir Vukicevic  |  Engineering Director, Mozilla Corporation
    Alon Zakai  |  Senior Researcher, Mozilla Corporation

    ... JavaScript tooling and execution allow near-native-code speeds. Combined with standards such as WebGL, Web Audio, and the rest of the HTML5 stack, the modern web is emerging as a platform for high-quality games ...

    Multiplatform C++ on The Web with Emscripten
    Chad Austin  |  Technical Director, IMVU
    Emscripten is a compiler of LLVM bitcode into JavaScript. With Emscripten, programs written in C++ can run straight from your web browser, and no plug-ins are required. ... why IMVU has chosen Emscripten as part of its multi-platform engine strategy ...
    (Tragically, a time conflict with 'Fast and Awesome HTML5 Games' by Mozilla, which overlaps content wise)!

    Nintendo Wii U Application Development with HTML and JavaScript

    Ryan Lynd  |  Senior Software Engineer (NST), Nintendo Software Technology
    Kevin McCullough  |  Software Engineer, Nintendo of America
    Takeshi Shimada  |  Deputy General Manager, Software Environment Development 
    ... HTML and JavaScript have empowered a whole new wave of developers that have previously been excluded from Nintendo console development - until now! This session will introduce a new way of rapidly developing Wii U applications that takes full advantage of unique Wii U features while reducing development times significantly.


    Game Development with Google Cloud Platform (Presented by Google)
    Yanick Belanger  |  Server Architecture Lead, Electronic Arts
    Ryan Boyd  |  Developer Advocate, Google
    Chris Elliott  |  Solutions Architect, Google
    Dan Holevoet  |  Developer Programs Engineer, Google
    Momchil Kyurkchiev  |  CEO, Leanplum
    Michael Manoochehri  |  Developer Programs Engineer, Google
    Luca Martinetti  |  Founder and CTO, Staq Inc.
    Google Cloud Platform provides everything you need to build, run, and scale social, mobile, and online games. Already, tens of thousands of popular applications like SongPop, Angry Birds, SnapChat, and Legend of Monsters ...


    Supercharge Your Game With YouTube (Presented by YouTube)

    Satyajeet Salgar  |  Product Manager, YouTube Live & Sports
    Ibrahim Ulukaya  |  Developer Programs Engineer, YouTube
    Jarek Wilkiewicz  |  Developer Advocate, YouTube
    ... By integrating your game with YouTube, you can share rich and authentic game experiences that are more likely to convert viewers into gamers than any other medium. In this session, we will highlight integration examples and best practices with special focus on mobile. We will also give you a sneak peek at our latest live streaming platform APIs. ...

    HTML5 Cross-Platform Game Development: The Future is Today (Presented by Ludei)
    Ibon Tolosana  |  CTO, Ludei
    HTML5 is finally ready for cross-platform game development. We'll explain best practices for HTML5 game development, case studies and how to overcome issues to make HTML5 games work.

    Rapid Development of High Performance Games for Mobile and Web
    Ricardo Quesada  |  Software Architect, Zynga
    This talk will be about the cocos2d JS, a complete toolchain for developing multi-platform games for both the Web and Mobile, which goes all the way from rapid prototyping to a finished high performing game. There are three main components: a game engine (cocos2d), a physics engine (Chipmunk), and a visual editor (CocosBuilder). For the web, no plugins are required. For mobile, it uses JavaScript bindings for the C/C++ version of cocos2d and Chipmunk, and achieves a performance 10 times faster than other JS engines/JS accelerators. ...

    HTML5 Audio: Coming to a Mobile Game Near You!
    Jory Prum  |  Sound Guy, studio.jory.org
    ... possibilities the new Web Audio API enables audio developers when building games for the web. ... With the adoption of the new W3C's new Web Audio API (available in Chrome, Safari, and iOS 6), tremendous possibilities exist, ranging from simple audio playback to object- and event-triggered audio. There are advanced filtering and reverb capabilities built in, 3D positional panning, and all available with extremely low latency. ...

    Have fun at GDC!





    Tuesday, March 12, 2013

    Chrome's FPS Histogram

    Eberhard Gräther has improved the FPS meter in Chrome. I particularly like the histogram added on the right hand side. It allows you to easily see how long your frames are taking, and if your frame rate is bouncing around between different values.

    You can check it out by

    1. Opening up Chrome's developer tools (3 bar menu in upper right, Tools, Developer Tools)
    2. Opening up the options (gear menu in bottom right)
    3. Enabling 'Show FPS Meter' in the rendering section.

    Or, in about:flags you can enable it always.

    It's handy to see, e.g. when you are missing some frames and oscillating between 30 and 60fps:

    Wednesday, November 2, 2011

    New Game Conference Day 2

    The sequel to my Day 1 report from the New Game, HTML5 Games, conference:

    The quality per session has been really great, and the good news is that Videos are on the way, so if you weren't there, don't fear. Also, here are most of the slides.

    Zynga kicked today off. They're dedicated to HTML5 games, reaching lots of people, and moving the web forward. Paul Bakaus pointed out that classic games devs get people to upgrade hardware; new web games need to get users to update to modern browsers, "Please help me upgrade the web".

    Zynga has also open sourced some rather handy sounding tools: https://github.com/zynga including audio fixes/hacks for ios, viewport control, custom viewport scrolling assist libraries.

    Grant Skinner has put out tools too: Easle.js, flash like api primarily to draw to Canvas 2D, though he demoed swapping out rendering engines to e.g. DOM & flash too. He also demoed exporting content from Flash.

    Spil had a good talk about developing for and publishing in Asia; primarily challenges in hosting, distribution, and localization (beyond just text).

    Opera's Erik Möller showed off WebGL support in Opera, including a demo off a TV set top box hardware kit.

    Mozilla has a cool project taking a spin on their old question of "Are We Fast Yet?" and changing it to "Are We Fun Yet?" Their Palidin effort is designed to improve that answer. They're building an open source web tech game engine and implementing platform features such as Mouse Lock and Game Pad. Similar in ways to the Chrome Games effort I'm part of.

    Rachel Blum of Chrome (ex Blizzard) did a great rundown of Chrome as a platform for games, now and in the future.

    Overall, there was a lot of energy, excitement, and potential shown off. Several presenters demonstrated that they are monetizing now using some of this tech. Others that we still have lots of potential in tech that's not quite ready for everyone.

    I'm psyched about fixing what needs fixing to make the web platform awesome for games. And tomorrow there's the W3C Games Community Group Summit which I'm hoping will be a great forum for prioritizing that work.

    Tuesday, November 1, 2011

    New Game Conference Day 1


    New Game's first HTML5 Game Conference kicked off today. It's an intimate and comfy affair with just a few hundred devs all packed in one large room. It's easy to mingle in breaks, and we had lunch all together on the lawn at Yerba Buena park.

    Rich Hilleman, EA, kicked things off with a great keynote discussion of what it takes to build out a game platform and how things are quite different doing so with open standards tech. It was inspiring, but also underscores the challenge of building a 'platform' when no one controls it. Who will champion a killer app? Who will define the capabilities and expectations for developers and customers, and do quality assurance? Who will make certain we can monetize and distribute? Well, no one, and everyone.

    The other business heavy presentation was from Justin Quimby of Moblyng. They've already been at this a few years, with the goal of using web tech to reach a huge number of devices, primarily mobile. His main message was that of the many challenges that await after you've build a compelling game. His recommendation was primarily technical conservatism and diversification of services (e.g. payment solutions, metrics, and distribution).

    But the majority of the presentations were technical. The biggest points and themes:

    • Garbage Collection a major performance issue! Several techniques to avoid this, including careful JS coding, all memory out of array buffers.
    • Sound! Much love for Web Audio API, but needs support in all browsers.
    • Many developers using high level frameworks and languages and cross compiling to HTML/JS. E.g. PlayN in Java, Mandreel in C++.
    • WebGL standard update coming, major focus on security and robustness.
    • 2/3rds of attendees from Web Dev background: http://goo.gl/PSTrU
    Lots of good coverage on twitter #NGC11

    Slides for many presentations are already posted if you dig around, but I saw cameras so I suspect we'll see a post conference set of links to videos.

    [day 2 post]

    Tuesday, August 23, 2011

    Casual Connect 2011 HTML5 Games Presentation



    My Casual Connect 2011 HTML5 Games Presentation was recorded, and the 30 minute video is up.

    I discuss the current availability of some key HTML5 features, overview the browser tech being used today in games, and touch on monetization and distribution. Lots of resource references towards the end.

    The next best way to learn more is to come to the New Game Conference in November.

    Tuesday, March 8, 2011

    GDC 2011 Report

    Some of my observations from GDC 2011:

    I've been mispronouncing Bokeh for years, and posted before about how there's a lot of room for improvement vs what's common on PS3 and Xbox 360. Well, it's all the rage these days. E.g. check out the Unreal demo and stills. Blur alone was a topic AMD discussed on DX11 day, discussing perf and memory optimizations of the heat distribution method from Kass et al at Pixar.

    Tessellation and Displacement Mapping were put to good use in a variety of places too, e.g. terrain in Battlefield 3, character morph in Unreal demo.

    On a much different note, I spent most of the rest of my sessions in design and rant topics. Much of that is hard to summarize, but here are some bits:

    Trip Hawkins quote from the Social Rant: "Think more about the browser. The browser will set you free." after he described challenges Nintendo, Apple, etc have presented for game developers in the form of license agreements.

    In general I was disappointed by the Social Game Devs Rant back, in that no strong defense was made for social games. Much of what was discussed was the same anti slot machine techniques we've already heard.

    The Experimental Game Design session had two games with recursion build in. One spatially, e.g. the level had a model of the level in it, and you can manipulate objects from the different scales. The other “inside a star filled sky” with the player, enemies, and power ups all agents but also levels that can be entered and ascended out of.

    [update] I forgot to mention user generated content. Andy Schatz (Pocketwatch Games / Monaco) discussed it and pointed out his site: http://hellodotdotdotgoodbye.com/ (cool, simple idea I keep being drawn back to) and others http://infiniteblank.com/http://playpen.farbs.org.

    I've not been keen on the 3D wave in cinema, TVs or games. So, I thought I'd better take a good look at the Nintendo 3DS which is the best option I've seen yet. Autostereoscopic works nicely in a personal device like a hand held, and I can't stand glasses. The 3DS works well if it’s close to your face, not as well at my comfortable playing distance ~1.5 ft. Was very cool to see, but I’m concerned about eye strain. I played a few demos looking for any where the stereo effect really helped them. But none really stood out, and were all just as nice to play with the effect turned off. But, the always on wireless feature to exchange data between games seemed cool.

    Google (I work there on Chrome) had a stronger presence than previous years with 2 tutorial days, booth, and some additional appearances. I gave a talk "HTML5 and Other Modern Browser Game Tech" (slides up soon, promise) which was received well.

    I got a chance to meet up with friends, including the guys at Activate 3D, who had a cool demo running on Kinect. Being able to jump, swing on ropes, zip lines, monkey bars, etc, with video motion capture is pretty cool. They need to update their website's video, they had a nice rooftop race demo running.

    David Jaffe pointed out that Consoles are way too slow to resume playing your game -- why can my DS pop back instantly and my plugged into the wall console takes minutes.

    And finally, I'm inspired to do more design work and game Jams. Especially Stone Librande's talk 15 Games in 15 years, where he described creating games for himself and children was superb. Build fun in your life.

    Tuesday, February 22, 2011

    Get Ready for GDC 2011!

    Here comes GDC!

    I'm presenting at GDC this year on HTML5 and Other Modern Browser Game Tech. Still busy getting slides ready, I've a lot of tech I want to cover... WebGL, canvas 2d, svg, web sockets, storage, audio, Native Client, etc. Whew. Well, it deserves a bit logo off on the right. ;)

    Google's going to make a good showing this year. Check out our GDC Agenda.

    Here's a list of sessions that caught my eye when I skimmed through. Did I miss any awesome session? Let me know in comments. ;)

    (you can add it to your own calendar view by putting bdsmf82ejdng803qok5mlmsn4s@group.calendar.google.com into your "other calendars")

    See you there.

    Tuesday, February 8, 2011

    One Year at Google

    I've been at Google one year.

    A lot has happened, but the vision stays the same. I and others are working on improving tech to support great applications on the web. Better performance, use of GPUs, 3D, and much more (audio, connectivity, device access, monetization, discovery, ...).

    Google continues to build it's engagement with game developers. We're already engaging on multiple platforms (Android, Chrome, Google TV) and offering useful services (YouTube, AppEngine, Analytics, Ads) and building out great tech.

    We've also continued hiring great game developers, and I'm humbled every day by the ones I'm working with. (e.g. people keep doing double takes that Bill Budge is working a few cubes down.) Ian Lewis has hit his stride and is doing a great job driving Game Developer Relations (btw: hiring) (and, well, all of Google is hiring really, even back in the Research Triangle NC, drop me a line if you'd like help applying).

    Chrome GPU team is my home, though I'm still excited about Chrome OS where I started. There's a lot of core infrastructure for all GPU features, some of which are starting to ship, like WebGL.

    20% time is a great perk at Google. Not everyone uses it, but I take a lot of it to help Game Developer Relations out and also do some game experiments.

    Google was the hardest job I've joined yet, though. There's so much to learn, so much great tech and products, tons of fascinating things to look into, and so many rather smart folk. I love the culture, the positive "do the right thing" attitude, and that there are engineers all the way to the top. I'm excited for year 2. ;)

    Saturday, November 6, 2010

    IGDA Leadership Forum: Tools Round Table

    I hosted the Tools Round Table at the IGDA Leadership Forum this year. The group focused primarily on project management and communication. Attendees were producers, tech leads, a software consultant, an agile coach, a Hansoft employee, two localization professionals, and students.

    Below I've included my notes from the discussions. Contents are purely in order that they were mentioned.

    But before the notes, some quick thoughts on the conference. It was pretty small just a hundred or two people. I missed a lot of people who cut out half way through the second day (I showed up only for the end). There was a dinner with John Romaro interviewing Will Wright, with a goal of capturing designer's thoughts for posterity (romeroarchives). This is a great idea, though the level of detail covered in the interview only scratched the surface. It was interesting, but was primarily just getting the rough timeline of Wright's early career.

    On with the Tools Round table notes:

    Project Management
    • iteamwork
      • online - project management - slightly dated feel - free
    • jira with greenhopper front end
      • good for short term sprint plans, limiting for long term projects
      • some web-app style hiccups
    • (in follow up for long term:)
      • MS project
      • pen-paper
      • spreadsheets
        • hard for a wider team to use, OK for the single producer working with it
    • pivotal tracker
      • good for scrum
      • nice 'index card' like view
      • not a database
    • devtrack
      • often pushed by publishers
      • database backend
      • not great out of box, lots of work needed to setup for a team's process 
    • base camp
      • good for small teams
      • day to day level workers annoyed at it, though higher levels liked it
      • didn't scale up as well
    • scrum works
      • smaller teams, medium teams, good for burndown charts
      • free and paid versions
    • smart q
    • 5 pm web
    Transitioning between long term planning and fine grained issue tracking remains the largest problem.

    Communication
    • yammer
      • like an internal twitter
      • threaded views
      • third party tools good
    • google wave
      • threading issues
      • recommended using RSS updates of a wave to track it
    • google docs
    • gotomeeting
      • great screen sharing, not so great web cam
    • mikogo
      • similar to gotomeeting - free
    • webex
      • too heavyweight
    • skype
      • great webcam sharing, so-so screen sharing
    • meetingplace
    • active desktop
      • HTML on desktop with team specific information, e.g. bug counts
    • design docs placed in source control shadowed to a web server for ease of access
    • wiki

    Monday, October 18, 2010

    LootGrab: HTML5 Game from Triangle Game Jam 2010


    Spoilers in the Video! Consider Playing LootGrab first. (As of Sept 2010, Chrome was definitely the best option since Firefox and IE struggled, you can give your smart phone a try too).

    2010 Triangle Game Jam game: LootGrab Video on youtube, or LootGrab Video on vimeo.

    This year brought changes from the Game Jams of past:
    First, I moved from the Research Triangle and now work at Google, and Adrienne came too (we've worked together on 5 of the game jam projects now). So, we got some fresh blood at Google to join us and ran a game jam in parallel with the 2010 Triangle Game Jam.

    Second, instead of using C# we used HTML5 this year:

    Third, you can Play LootGrab with a click of a button - ridiculously easy compared to all previous Jams where I didn't even bother giving you the gazillion prerequisites required.

    Theme and Game Ideas
    The theme this year was, "Placing Blocks". Here is my game concept, which didn't make the cut::


    (someone pointed out it would be great from the side too, with ballistic arcs.)

    We voted up ideas, and Adrienne's one out: LootGrab is about placing down blocks in a dungeon to influence the hero, instead of controlling the hero directly. The greedy guy runs for the closest loot, food, or exit ... without care for monsters or traps.

    We figured we'd need a map editor, the runtime, and perhaps a level sharing system online via AppEngine. I was particularly attached to an idea of allowing user contributed game object definitions. Allow a user to upload an image and a snippit of javascript that defines it's behavior. How cool would a mod-able game jam game be? :) That was stretching a bit far though.

    HTML5

    HTML5 is a grab bag of new functionality in browsers. Some of it is pretty cool (peer to peer networking, local storage, video and audio tags). We focused on two simple components, canvas 2d to draw and audio for sound effects.

    In my day job I'm working to accelerate canvas with GPUs, as are others at Microsoft, Mozilla, and Apple. It's fairly fast even in software, and LootGrab runs fine without GPU acceleration. In fact, it runs on phones pretty well, such as my Nexus One Android phone. That's pretty cool, all we did to support mobile was to make sure we handled low frame rates without changing gameplay. To do that we used fixed time step gameplay logic (tick based), and just run as many ticks as needed to cover the amount of time elapsed.

    Our use of canvas is basically clearing it, drawing a pile of sprites (via sub-rectangles of larger images), and also a line to show where the player is moving. Actually, we have a few layers of canvas stacked on top of each other. Theoretically we could have saved performance by not redrawing non animating tiles - just compositing them underneath.

    Adrienne took on audio for sound effects, and did run into a bit of trouble. The sound effects were very short, and had to be padded out to longer audio lengths to trigger properly. Also, multiple instances needed to be created in case the sound was played more than once.

    Javascript

    Several of us hadn't done anything substantial in Javascript before. Certainly not an object oriented game entity system that can factory from user created levels. Some complicated flurry of activity by Glen, Ian, Nat, and Gregg made that happen. The result could be cleaner, but worked well. We have JSON data blobs, e.g. for the tile definitions.

    Things I loved:
    Need to add extra data to your level components of game object definitons? Perhaps only to particular items? No problem! Just start typing. At runtime it is trivial to just check if the data is there and use it if so.

    Writing some code and wish you could hang more data off an object? Just set that value! Check to see if it's === "undefined" later and you can pick up  your special data easily. Object definitions don't have to worry about implementation details of other systems, and those other systems don't need extra book keeping kept in parallel. e.g.:

      try {
        ctx.drawImage(this.img, ...);
      } catch(e) {
        if(this.error_printed === undefined) {
          tdl.log("problem with image " + this.entDefID);
          this.error_printed = true;
      };


    Development tools: Logging. Resource load timeline. Immediate mode editor: Hit a breakpoint, and just execute some code at the Javascript console.

    Fast iteration time, though C# was great for that too.

    Instant continuous "build"! Glen installed an Auto Reload Chrome extension and put the game up on a projector. Check in some code and see the game running it in 20 seconds. ;) Helps to have a game that can play its self.

    Libraires such as TDL, and JQuery: some helper code for Javascript. It's not so important what you use, but you definitely want to not worry about the minutia.

    Not so great?
    I didn't use an IDE that had code analysis, and that's a very convenient feature of MSVC. Though, Ian had good things to say about WebStorm.

    Also "classes" in javascript are syntactically very sad, and inheritance to my novice eyes looks messy. And variable "scoping" is dicey.

    Debugging is functional and GUI, which is better than what most programmers use around my on linux. But it falls short of a modern debugger such as MSVC with C++ or C#.

    Also, deciphering a web page via HTML, script, HTML embedded in script, CSS files, and dynamic changes to styles? ... yikes.

    Things for Next Time


    Would be nice to have some basics already written:
    - Factory that will created entities from JSON data packs
    - Cleaner audio solution
    - Sprite system for canvas

    Smaller teams. We had six on this project, and that's a bit much for a game jam game. Several were first time jammers, and several Javascript newbies, so it did really help to share know-how. But we wasted a lot of time getting started, coming to consensus on implementation choices, and stepping on each other's code.

    The End

    And now I leave you with some screen shots:


    And a thanks to whoever oryx is, who created the sprites we used:

    Monday, October 4, 2010

    Scriptcode: misc batch files and visual studio macros

    Here are the random macros I use in Visual Studio and windows batch files. Nothing monumental, but I find them useful often enough.
    • scheib.vb
      • The general purpose Visual Studio macros I use, particularly useful to me are:
    • addpath.bat
      • Eases adding more directories to your path environment variable.
    • cmd_here.bat
      • Right click any directory or file in windows explorer or a file save/open dialog and get a command prompt at that location.
    • copy-certain-files.pl
      • Assists automation to copy certain files from one directory to another, e.g. just the .html files but not the images.
    • remove_empty_directories.bat
      • Cleans up a directory tree to not have empty directories.
    The following are useful to have when writing a batch file:
    • isadirectory.bat
    • isafile.bat
    • isemptydirectory.bat
    Files can be downloaded here:
    http://gist.github.com/582050 - visual studio macros
    http://gist.github.com/582036 - batch files





    Monday, June 14, 2010

    Games for Infants

    Games for infants. A noble cause. But they're tricky customers. And in the end, so easy to please.

    Once upon a time I thought, "I shall make a game for infants, it shall be easy and quick." So, I thought to myself, what do infants like to do? Whap their grasping tentacles at things. Yes, such as keyboards. And they like it when things do things, but they're not very sophisticated.. so simple reactions should be just fine.

    So, I sat down and made a simple program to change the color on the screen when keys were pressed.

    Fail.

    First, infants seem to like all buttons, especially the windows key, Alt key, etc. All sorts of ways to make an application loose focus. Second, they like to mash buttons. To grind them down. As if pinning the machine and asserting, "I AM YOUR MASTER!"

    So, let's see.. easy things first. Holding buttons down can change the color of the screen too. How about a key press causes a flash in green that fades away quickly, and the intensity of blue ramps up the longer you hold keys. Ok, working well, let's try it out. Ah, it works, but again, infant seems rather determined to exit the app, launch new applications, all sorts of not intended things.

    Most of a Saturday later, I've learned about windows hooks. How thoughtful of Microsoft to give me a way to catch and handle the key presses before Windows interprets them. I'd like to do this from C# and XNA, so that was a bit of searching and tinkering, but Bnoerj.Winshoked seems to work. Yeah, that works fairly well, gimme your kid again, lemme try.

    Fail.

    Yup, infants are dutiful testers, seems to reliably mess things up. How much time do I really want to spend on this? Let's try searching the Internet again... nope, nothing really good out there. Hmm, except...

    Ah-HA!

    Windows log-in screen should do nicely. If anything in windows can stand up to button mashing it'll be the log-in screen. Whap keys, see dots show up, hear beeping noises as the length limit is hit, that should entertain the kiddo. Give that a shot.

    Blue screen.

    Really? Had to have been a fluke. Try again. See, it works, happy kid. Blue screen.

    Hmm.

    Well, I've learned something. Why build a game when an infant can be entertained with just the log-in screen. And, how disconcerting is it that sustained mashing of keyboard keys can cause a blue screen?

    Tuesday, March 16, 2010

    GDC 2010: Conference Report

    Game Developers Conference 2010
    Real-world UV Texture Mapping of a Car. Found on the side of a building just outside GDC.



    Themes
    • Social Games
      • High growth area, many publishers and developers looking to take advantage of social games. Investors looking to... invest. Designers considering how to make their games more social.
        Note: Social had a spectrum of meaning to people, from viral marketing games with little multiplayer, to games played with friends, or random strangers. 
    • Indie Games
      • Indie games have established a significant movement now. They are becoming more influential, with significant number of sessions devoted to them, and references to them from non-indie.
    • Digital Distribution
      • Major impact to publisher/developer relationships; enabling indie movement; changing design and productization strategies. Also requiring different marketing strategies. Also tied to social games and viral games.
    • Design, Psychology, Achievements
      • Achievements discussed often (disliked). Common theme that designers need to understand psychology well to build successful games.
    • Mobile / Android
      • Google distributed phones with 12 month service - Lots of buzz about this.
      • Unity announced Android support.
      • iPhone discussed in many sessions, but Apple wasn't courting developers.
      • Little to no mention of Microsoft.
    • Cloud based Games
      • OnLive, Gaikai, and OToy are products announced to enter cloud serving of games (and apps) via compressed video to clients. They were news in 2009, in 2010 we will see some of these services ship (OnLive has a June 17 date).
    • Uncharted 2 drake's fortune (ps3 game)
      • Several sessions from Naughty Dog, well attended, represented the quality bar developers are after.
    • Gamification
      • Companies are seeking to add “gameplay” to their products to succeed with the increasing adoption of games in culture. E.g. adding game aspects to taxes, health-care, or training.



    Android
    Handing out hundreds of phones got Google attention. Developers felt that Android needs better games, that they’re a “killer-app”, and that iPhone’s successf is tightly linked with the app market and games.



    iPhone sessions were well attended. Unity is a middleware engine offering iPhone support and is apparently quite successful by counting licenses sold. Unreal has been ported to iPhone.

    Microsoft win 7 phones will run XNA games and silverlight, popular technologies among “small” game developers.


    Social & Facebook
    Facebook and Zynga received much attention.


    Facebook exposes the social graph to app developers for fun and profit -- to great commercial success for some of those developers. Much of this success is tied to the spamming / viral marketing done by these games. And most seemed to have you play with strangers, not friends. Facebook has changed the permissions for apps, which will reduce the previous spam methods, interesting to see how this affects games.



    Asian markets have years of experience in monetizing virtual goods and building social games. These methods are of high interest now in western games. 2009 Asian market had $7 Billion in virtual goods, compared to ~ $500 Million of social games in western markets just starting to move towards virtual goods or social monitization.





    Notes From the Expo Floor
    • Human Hamster Ball demoed, allowing Virtual Reality with walking in any direction. Single user enters large plastic ball through access hatch. Ball is on wheels, and tracks movement. User wears VR headset. Targeting instalation at entertainment venues, malls, etc.
    • Mono will ship full compatibility with C# 4.0 when Microsoft does
    • Sony’s WiiMote competitor, “Move”. A combination of accelerometers, gyroscopes, and optical tracking makes this “WiiMote with a light bulb on the end” very accurate for location tracking. It’s still very poor for pointing at the screen (worse than WiiMote?), and rather laggy, maybe .1 second of lag or more. The need to be in the EyeToy web-camera view frustum will also limit the use of this device.
    • There was a great eye tracker that worked from 6 feet away, just sit in a chair and it finds you.


    Presentations
    • Indies and Publishers: Fixing a System That Never Worked
      • Ron Carmel (2D Boy) discussed 2 main points: The classic model of publishers doesn't seem relevant with digital distribution, and the remaining need is just funding. Cue introducing theIndie Fund. There weren’t any new details on that. There were some tidbits of World of Goo costing $120,000 and Braid $180,000.
    • Case Studies: AI in Recent Games
      • My takeaway was that the future of AI is in handling specialized cases without requiring explicit coding to set them up. That calls for generative AI instead of just expert systems. With online games pouring in huge amounts of human game play data, there's good opportunity for training AI.
    • The State of Social Gaming: Industry Overview and Update
      • More (mostly for a fee) info at http://insidenetwork.com
      • Asia had $7 Billion in virtual goods business in 2009. In the West social games are growing fast, but still only $.5 Billion last year.
      • Zynga is over 700 employees now, and is overtaking Facebook in headcount! (Oh, and $200 Million for them last year)
      • Facebook will be introducing their own currency "Facebook Credits", but with a 30% tax.
    • Bringing UE3 to Apple's iPhone Platform
      • They moved as much of the build to Windows as possible, running commands on the mac over PuTTY.
      • Executables still in “teens” of megabytes.
      • Materials are rendered offline and only a small set of shaders used at runtime. This is due to required compiling of shaders at runtime, and memory constraints making multi-texture materials too costly.
    • Advanced Visual Effects ... [Full day session]
      • Order Independent Transparency (AMD)
        • The framebuffer is simply a list of linked-list targets per pixel, and another buffer is used to store many samples. There is a demo released 2009 that shows this. Multisampling of course is an issue, and it’s clearly an expensive effect and requires guessing how many transparent fragments you’ll need to store.
      • [Indirect lighting with blockers]
        • Linked lists used again, sourcing from a 3D grid of the entire scene to look up blockers of indirect light used with reflective shadow mapping.
    • V-Con 2010: David Perry Keynote
      • Dave convinced me that the critical feature from cloud streaming services such as Gaikai, OnLive, and O-Toy will be frictionless entry. How many clicks does it take to get someone a demo of your game? Gaikai will do it in 1. Just 1 click and you're in the demo.
      • Gaikai is targeting 300 data centers, he claims OnLive 5, and OToy 2
      • WOW takes 30+ clicks to enter into gameplay. ;) Multiple EULAs.
    • Designing for Performance, Scalability & Reliability: StarCraft II's Approach
      • Starcraft scalability and perf discussed how they felt custom built profiling tools were necessary. They did have nice features:
        • Historical frame perf data
        • Single button press to sent data to engineers from QA
        • Butterfly view for CPU time & Memory too
        • Post game results with worst frames sorted out and worst “moments” spanning multiple frames.
    • Data is a Four Letter Word [Brutal Legend]
      • They built directed graphs for data dependencies offline. These were processed into indices that could easily locate the needed assets. They were also used to build disk layout information to reduce seek times.
    • Physics Meets Animation : Character Stunts in Just Cause 2
      • They have highly coupled physics, character movement from animation and gameplay code, and IK. The results looked good, but also very delicate to work with. Some tidbits:
        • Start with gameplay code driven movement of character
        • Use physical simulation data to drive blending of animation tracks (e.g. rotational acceleration of car influences “hang on leaning left” blend weight)
        • Use ragdolls to add physicality to animations
        • Use IK to correct everything that went wrong. ;)
    • GDC Microtalks 2010
      • Many speakers, mostly touching on design elements. A good view on GDCVault if you’d like a bit of inspiration.
      • Random data: TV Ads have gone from 13% to 36% of programming time over the last 60 years.
    • Nuevo Sessions
      • Several indie developers discussing their games
      • Hazard - Artsie First Person (non)shooter. Heavily abstract and metaphor puzzle based
      • Interesting to see on GDCVault if you’re interested in indie games.
    • The Implementation of Rewind in Braid
      • Encoding similar to video:
        • initial state
        • key frames
        • delta frames
    • Animation and Player Control in Uncharted: ...
      • Strong use of blending and layering to achieve desired effects, but primarily to reduce memory.
      • 3000 to 4000 animations for main character in a given level.
        • 20%-40% level data is animation, 15-30MB
      • 10Hz sampled animation data (except where artist overridden). Engine runs at 30FPS.
      • Additive animation layers, partial animation sets, pose based root animations.
        • E.g. one idle animation that is additively blended onto simple standing poses, those poses can easily be changed to have new idle effects.
        • Variation animation 10 times as long as most run cycles adds variation to different runs etc and can be reused to give lots of variation.
      • Mixture of gameplay code driven movement and animation data movement, IK.
    • Metaphysics of Game Design - Will Wright
      • (unannounced presentation by Will Wright)
      • Will packed a dense and sprawling presentation into the hour. It’s not really summizable into a few points.
      • You’re best to seek video on GDCVault - it’s a treat.