A Teleological View (a.k.a. how to cover modern casual game technologies and offend everyone in 75 slides) David Fox VP Technology, iWin.com
Why Lil’ Ol’ Me? iWin As Web Developer Java Applets Flash / Flex Social World (Hotel iWin) Flash “Upsell” Games iWin As Downloadable Developer Two (!!) Homegrown Frameworks: SDL/DirectX Flash Multiplayer Games iWin As Publisher Popcap Playground BlitzBasic Torque 3D Orbital PC/Mac/XBLA/Mobile/iPhone
The Perfect Framework ® PCXBLA Deciding What To Use? WebDS Mac Mobile iPhone FacebookWii Time? Budget? Quality? Genres? Multiplayer? 2D? 3D? Talent Pool?
What is a Platform? Hardware constraints. Software constraints. A person.
What is a Programming Language? The code for communicating with the Platform and controlling its functions. Religion …
What is a Server? That which connects platforms. That which you beseech. That which grants prayers. A god.
What is a Framework? An abstraction of the Platform, via a Language. A culture.
Framework As Culture? Both Give Structure to Common Tasks: Load Resources Deal with Mouse/Key Input Draw Animated Sprites Render 3D Write Text With Fonts Play Music and Sound FX Communicate with a Server What to/not to Eat… Who to/not to Sleep With… Relationship Dos and Don’ts Worthy Vs. Wasteful Tasks What Art Is and Ain’t Relationship with the Divine
What is a Middleware? Sits atop Frameworks Highly specialized system to achieve complex tasks. (Especially in regards to the server or specific needs of the platform) A cult.
Parade of Platforms
Web Browser Interconnected Simple Limited by LCD
Social Networks Links People Directly In Context of Friends Knows About You
Windows Everyman
Mac Hipman who thinks he’s specialman and will one day grow up to be everyman.
Nintendo DS Short and sweet. Must pass many tribulations to get there.
XBLA Fast and connected. Exclusive access. (Other than XNA Community Games)
Sony Network As if.
Wii Oh so fun and cute. Knows how to move. Again, limited access.
Mobile Everywhere you look. Always in your pocket. Pay heavy to get on it. Seriously limited ability.
iPhone Relatively easy access. Always with you. Knows where you are. Likes being poked, pinched, and shaken.
Parade of Languages
Assembly The Basics… Registers Loops Decisions Jumps Org 0 mov dptr,#msg mov R0,#30h loop: clr a movc jz end inc R0 inc dptr sjmp loop end: jmp $ msg: db 'Hello World",0
C First major “high level” language #include main() { printf("Hello World"); }
C++ Object oriented C Many seasoned programmers out there Need to be a “serious” coder Fast, flexible, robust Best IDE: Visual Studio 2008 Many cheap/free frameworks Won’t work in browser (except ActiveX) #include main() { cout << "Hello World!" << endl; return 0; }
Java Highly portable (Any browser, PC, Mac, Linux, Mobile) < 90% browser penetration Version headaches Desktop use requires large JRE download. Poor 2D library Java3D API Can work w/ C++ using JNI class HelloWorld { static public void main( String args[] ) { System.out.println( "Hello World!" ); }
Vest Majority of “Hits” Today? Downloadable PC C++
C# C++-like Language w/Java Features Microsoft’s Visual Studio Huge.NET Runtime Download (19MB) Vista/XP Focus C#: Install huge.NET Runtime Soon? Static.NET Linker/ using System; class HelloWorld { public static int Main(String[] args) { Console.WriteLine("Hello, World!"); return 0; }
Objective C Reflective Object-oriented Smalltalk-style messaging Mac OS X or iPhone OS #include int main(int argc,char **argv) { id set = [Set new]; argv++;while (--argc) [set add:[String str:*argv++]]; [set do:{ :each | printf("hello, %s!\n",[each str]); }]; return 0; }
ActionScript MX From JavaScript to “real” language Flash / Flex _root.createTextField("mytext",1,100,100,300,100); mytext.multiline = true; mytext.wordWrap = true; mytext.border = false; myformat = new TextFormat(); myformat.color = 0xff0000; myformat.bullet = false; myformat.underline = true; mytext.text = "Hello World!"; mytext.setTextFormat(myformat);
Other PHP VirTools BASIC / DarkBASIC Delphi Python / PyGame
Parade of Frameworks
Home Grown DirectX Versions 5.0 to 11.0 Features Vs. Penetration Win98/Me = DX7.0 XP = DX8.0 My Advice? Stick to 7.0 or 8.0 Easy Port to XBLA Well-Tested Code Your Way
Home Grown SDL Simple DirectMedia Layer Free cross-platform multi-media development API Graphics / Video Control Input / Events Audio / CD-ROM audio Threads Timers Win32/Linux/BeOS/~MacOS
Flash CS4
Artist- Friendly Great For Prototyping Vector-Based Movie clips and timelines (Visual OOP)
Flash CS4 $700 MP3 support, embedded markers, etc. ActionScript (like JavaScript) Flash 8 improved math/rendering speed Window, Mac, Linux, Mobile Phones, PDAs In Browsers, It’s The Bee’s Knees
Flash Programming Gotchas “Real” Programmers Rare/Expensive Horrible GUI for Coding Painful Debugging But Now…
Flash Tricks Embed flash in C++ using f-in-box Must write C++ wrapper for EXE Fullscreen Support Right click handling Logs Support for other graphic/audio formats Writing to disk Or… use AIR
Adobe Flex 3 Rich Internet applications Based on Flash ActionScript for interaction HTML/MXML/CSS for layout Adobe Flex Builder 3 $249 IDE built on Eclipse Fast runtime
AIR Cross-platform runtime environment For Rich Internet Applications (RIAs) Using Adobe Flash / Flex, HTML, or Ajax Deploy as desktop application. Mac, Windows, Linux FREE
Director/Shockwave 11 $999 Lingo or JavaScript/ ECMAScript Good for Downloadable (Windows/Mac) OK for Web Games – Poor Penetration Good 2D sprite manipulation Strong audio support (streaming, panning, embedded markers,etc.) Real time 3D (Shockwave3D) Havok physics engine Flash support Can expand with C++ XTras
Director/Shockwave 11
Director/Shockwave
Silverlight 3 Web-focused Runs atop Visual Studio 2008 XAML – UI markup language AJAX, VB, C#, Python, Ruby Cross-browser/platform (but Windows focused) Poor penetration Still unproven for games
Torque Game Builder 1.74 $250 to $1250 Hardware Accel SceneGraph Driven Windows, Linux, or Mac OSX, XB 360, Wii, iPhone, or Web Script in TorqueScript (TGE) C++-like
Torque Game Builder 1.74 Parallax Scrolling / Layers / Camera Advanced Physics/Collision System Tools Up the Wazoo Tile Editor LinkPoint Editor / Collision Polygon Editor Particle Editor GUI Editor Level Editor Genre Kits ($40-$100) (isometric adventure, platform, strategy, side-scrolling shooter...) Multiplayer with TorqueNet
Unity 2.5 Fully Integrated Graphical Editor Play as you Develop Runs on MacOS X only Fast 3D (DirectX and OpenGL) Terrains, Shaders, Particle Systems
Unity 2.5 Pumps out games for Mac, Windows, Wii, iPhone Or Unity Web Player Supports major 3D file formats Networking Physics JavaScript, C#, or Boo (Python dialect) Indie $199 Pro $1,499 iPhone $1,499
Sexy Framework 1.3 Free! (Just credit Popcap) Used In: Bejewelled, Zuma, etc. DirectX 5.0 Windows Only (98 to Vista) FMOD and BASS sound engines. Hardware Acceleration Option Easy Image Manipulation “Widget” Metaphor Memory Leak / Smart Pointers Performance Profiling Routines Sample Apps
Playground SDK 4.0 Free! ____ Dash (& Other PlayFirst Games) Easy-to-use, Developer Friendly API Hardware Acceleration / 3D / Flash Particle System Lua Script Support Cross-Platform (Mac, Web) Powerful Localization Compact Runtime Documentation / Community Support
XNA Game Studio 3.0 Express is Free For students, hobbyists, indies. Based on Visual C# Express 2005 Windows (XP SP2 only), Zune, and Xbox 360 XBLA Community Games = $99/year
$80 Basic/C Hybrid (Arrays, Pointers, OOP) Windows/Mac/Linux Modular Design Own IDE/Debugger OpenGL Support Lots of Source Code Also Blitz3D Good for Beginners BlitzMax
3D Frameworks Ogre Irrlicht Blender Panda3D Unreal JMonkey VirTools Etc.
Parade of Servers
Unity 2 MDK Multiuser applications for Flash (via Uclient) But clients can be Java, C++, any other socket-based platform… Code in Java Comes with SimpleChat, MultiRoom Chat, and Tic Tac Toe. Database connection (mySQL support) Up to concurrent connections per box. Clients cannot communite across machines. Simple administration tools (kick or ban). $140 express $739 pro
SmartFox Multiuser applications for Flash (Flash 6 through 10) Support for Java,.Net, Unity 3D, etc. Comes with many examples P owerful remote administration tool High performing and scalable (1000s on a single CPU). SmartFoxBits -- drag and drop UI components to create game logic without code Built on Java, but can extend server code with Actionscript, JavaScript, Python, or Java Clusterable But must use db to share data across servers Can use Terracotta to scale more efficiently BlueBox: Deals with firewalls and proxies RedBox: Integrates full audio/video streaming 200 € to 2000 € Max users Add-ons
ElectroServer 4 Multiuser applications for Flash (AS2 or AS3) Scalable Distributed workload Claim 200,000 concurrent players Players can interact with each other Good for MMO Streaming Audio/Video Java Can use ActionScript extensions Rapid Message Aggregator™ Good for Flash idiosyncrasies Optional Secure Messaging Buddly List Support Web-based Administration $700 for Pro $4,400 for Enterprise (Distributed, more Connections)
Flash Media Interactive Server 3.5 Multiuser applications for Flash (AS2 or AS3) Audio/Video focus Pause and seek Hugely scalable CDN support Live video / webcam recording Encrypted streaming Simple interface for streaming audio/video, shared objects, and remote procedure calls Most functions via XML files Modified Actionscript 2 Starts at $4,500 per 100 users
Red5 v0.8 Open Source version of FMS Not prime time yet With SmartFox?
Project Darkstar Massively scalable games server in Java Client agnostic… Open source! Highly scalable Zoneless and Shardless All users can communicate real-time Uses servers efficiently Plus Fail-over Transactional data storage system Game state persistent Deals with failures Free (GPL) Few proven projects…
Parade of Middleware
Somatone’s CADI Interactive music Beat Sync Orchestral mixing PC, MAC, iPhone
Gamebryo Serious 3D Tools Flexible geometry pipeline Support for 3DS Max, Maya, SoftImage Output to PC (DirectX 9 10), Xbox 360/XBLA, and PS3/PSN Animation Tool Shader System Asset Viewer Scene Designer Specify, place and optimize lights and cameras Terrain Editor Terrain System Dynamic LOD Path-finding, audio variations, foliage types, and more
Large Animal TOGA Messaging System Cross Social Networks Leaderboards Asynchronous and Synchronous Play Inventory and Achievements Affinity Points & Viral Touchpoints
Freespin Import 3D Models into Flash as MovieClip Extensive and Dynamic Friendly $299 Other Open Source Flash 3D Solutions Sandy PPV Away3D
Re-Enter The Matrix
“Hard” Features Matrix Price (Upfront + License) Runtime Performance Min Sys Reqs Size Dev Support and Documentation Vista Support Unicode Support Cross Platform (Mac, XBLA, iPhone, Mobile) Localization Tools Other Tools
“Medium” Features Matrix 3D Acceleration Vector Support Flash Support 3D Model Support Scalable Fonts Multiplayer Scripting Languages Particle Systems Encryption or Obfuscation of Assets
“Soft” Features Matrix Learning Curve Known Bugs Custom Coding Required Different Game Genre Support Proven?
This ain’t rocket science. Polygons? Frames Per Second? Resolutions? Polymorphic 3D surround sound? Gesture based vibrating controller? Publishers (usually) don’t care Players won’t know (unless they can’t play) For 2D puzzle game, easy switching cost Know Your Game
Programmers ain’t bitching. Artists don’t have to code. Designers can find fun fast. Biz team can maximize profits. You Might Be a Good Framework If…
Survey Says…
2D Downloadable Game? Don’t roll your own! Bugs are inevitable: Proven || Strong_Support || Open_Source Easy to get started. No special knowledge. Easy to expand and write tools. My Recommendation
Take a Picture Now! Casual Games SIG/Whitepaper/Technology Development Platforms for Casual Games By Phil Steinmeyer What About Flash? Can We Really Make Games With It? By Scott Bilas Casual Games Technology Survey By James Smith Technology Face-Off Panel from 2007 Summit
G’luck! Want the Matrix or Links? Casual Games Whitepaper