Download the presentation here

minedesertSoftware and s/w Development

Oct 31, 2013 (3 years and 5 months ago)

94 views

Multiplatform Development

Benjamin Nitschke

CTO Delta Engine &

exDream & MobileBits


Benjamin@DeltaEngine.net

MobileBits GmbH

Lerchenstrasse 28

22767 Hamburg


exDream GmbH

Hildesheimer Str. 35

30169 Hannover

MobileBits GmbH

Overview

2


Who is MobileBits?


Why Multiplatform?


Market Analysis


Engine Comparison


Mobile Development is challenging


Example Game on iPhone, Android, WP7


Our Solution: The Delta Engine

Who is MobileBits?

2


Founded 2009 by Holtz, Griga, Nitschke & Wysk


Focus on Mobile Games


Developed many smaller Mobile Games


iSkat, ZombieParty, FlightSchool, Ewe Doodle, ..


Also is developing
www.DeltaEngine.net


Allows developing games and apps in Windows


Deploys with one click on many platforms:


iPhone, iPad, Android, WP7, Xbox 360, Windows,
MacOS, Linux, and many more

Who is MobileBits?

3


Same team as exDream, known 10+ years for:


Twork (1997), WebWars (2000)


Rosho: Games for Kids (2001)


EuroVernichter (.NET, 2003)


Arena Wars (RTS, first commercial .NET game, 2004)


Armies of Steel (Prototype, RTS, 2005)


Rocket Commander (Open Source, 2005)


XNA Racing Game (Xbox 360, first XNA game, 2006)


Arena Wars Reloaded (RTS, 2007)


Fireburst (PC, Xbox 360, PS3, UE3, 2009/2011)


ZombieParty (iPad Party Game, 2010)


SoulCraft (iPhone, Android, WP7, 2011)


Many smaller iPhone Games and other projects …

4

4

Why Multiplatform?

10


Past: Start with Single Platform Game Development


Recent: Multiplatform Shift on Consoles, Web, iOS


Present: One platform or all platforms


Most teams still focus on one platform


Successful games are often rewritten on other
platforms, but only exceptional games


Or you need an engine to be on many platforms:


Unreal Engine 3 (Consoles)


Unity (mostly iPhone)


More examples later

Why Multiplatform?

10


A game programmers life was hard in the past (1980)


Writing programs in low level languages


Hardware was slow as hell


Good performance was only possible in a very low
level and it is heavily hardware dependant


Usually no good tools around


Everyone build their own engine, tools and libraries


Software was simplistic (because of all this)


Consoles and Handheld devices were not different,
programmed on a very low level by very few

Why Multiplatform?

10

Commodore 64

Why Multiplatform?

10

Prince of Persia (1989, first released on Apple II, then DOS, Amiga, Atari, etc.)

Why Multiplatform?

10


Windows dominated App
-
Development in the 90
th


Games getting more complex (RTS, Shooters)


Libraries and better tools emerge


DOS: Still very direct, most games still have to
write their own drivers, VGA games mostly


Windows: Getting very popular for game
programmers due
DirectX
, also
OpenGL

and
many emerging tools, libraries and frameworks


Visual Studio still today the de facto standard


There is also Consoles, but only few develop for them

Why Multiplatform?

10

Doom (1993 on DOS, later ported to many platforms, including Linux, Mac OS, Amiga, Xbox, iPhone, etc.)

Why Multiplatform?

10

Fury3 (1996, on of the first DirectX Windows games), based on a popular DOS game Terminal Velocity

Why Multiplatform?

10


2000
-
2010: Development still dominated by Windows


Consoles are getting more popular (Xbox, Xbox
360, PlayStation 2, PlayStation 3, Wii, etc.)


Games are also getting much more popular


Complexity goes crazy, teams grow in the hundreds


Lots of frameworks, libraries, tools and engines


Quake3 engine dominated early in 20
th


Halflife game and engine also very successful


Unreal3 dominated late in 20
th


Many other engines and frameworks

Why Multiplatform?

10

2004 many great PC games came out that were the foundation for many nowadays popular game engines:


Halflife: Counter
-
Strike, Halflife1, Halflife 2, Left4Dead, Portal, Team Fortress, Garry's Mod, etc.

Farcry: Farcry, Farcry 2, Crysis, Crysis 2

Doom & Quake: Many games in 1998
-
2004 used the Quake3 engine, not so many since then

Unreal3 Engine: Unreal 2 was used a bit, but Unreal 3 a lot: Is currently the most successful PC and Console engine

BTW: Unity3D was also started in 2001 and became usable around this time (2005) ^^

Why Multiplatform?

10


Most of the time small teams could focus on one platform


In the 80
th

you could focus on C64 or Amiga


In 1990 as a game developer DOS was most used


1995 Windows 95 and DirectX was a good choice


2000 Windows was a good choice for most teams


2005/2006 Many consoles came out, many developers
would focus on one platform


2007/2008 iPhone came out, many focused on just iOS
development and many simple apps were extremely
successful in 2008 with Apples AppStore

Why Multiplatform?

10

Angry Birds (2009, one of many very successful iPhone games, was ported to many other platforms later)

Why Multiplatform?

10


By now you should have noticed a trend:


All those games were only developed for one platform


If your game is successful, it will be ported later


Not all games are this successful and have this luxury
to make port later if the initial version is already selling


There are also Multiplatform
-
Games from the start


Those are mostly sequels or done by big teams


This trend is changing a bit as many software giants
provide multiple platforms: Apple with iOS (iPhone, iPad),
Microsoft with XNA (Xbox 360, Windows, WP7)

Market Analysis

11

23%

20%

57%

2011

PC
Consoles
Mobile
66%

31%

3%

2003

PC
Consoles
Mobile
53%

30%

17%

2009

PC
Consoles
Mobile
Market Analysis

12

1 bn USD (2009)

10
bn

USD (2015)

Why not just develop iPhone Games?


Mobile game market is shifting towards Android and WP7


And growing on all platforms and devices (e.g. tablets this year)


Most apps are games (iPhone, Android,

WP7), but usually costs only 99 cents.

Sell many apps on many platforms!

9

2010 Developer Distribution

2015 Developer Distribution

ca. 80%

development

under


Windows

Most
developers
will still work
in Windows
or use tools
or engines

AppStore

(
iOS
,
Android
,..)

Consoles

PC

Consoles

PC

AppStore

> 2 *
AppStore

developers

needed

Market Analysis

Market Analysis

12

Mobile Platforms are a pretty good target platform for games:


The popularity of mobile games has increased in the 2000s, as over $3
billion USD worth of games were sold in 2007 internationally, and
projected annual growth of over 40%.


Ownership of a smartphone alone increases the likelihood that a
consumer will play mobile games. Over 90% of smartphone users play a
mobile game at least once a week.


In recent years, there has been a move towards mobile games which are
distributed free to the end user, but carry prominent, paid advertising.


From:
http://en.wikipedia.org/wiki/Mobile_game

Engine Comparison

13


These days lots of Multiplatform Engines are available:


Unreal3 (Consoles, PC)


CryEngine (High Performance PCs)


Unity3D (Mobile, Mac, Web)


Torque (popular before Unity for Indies)


Many other possibilities:


Vision Engine


Irrlicht


Ogre


Many proprietary and closed engines, etc.

Engine Comparison

13


Most other engines are either:


Black boxes (Unity, UDK, Editors, Modding)


Just graphic frameworks for specific platforms
(DirectX, XNA, OpenGL ES)


Or huge native code engines with high license costs
(only suitable for big teams: Unreal, CryEngine, etc)


We like .NET, it allows more rapid development!


Only recently possible on all platforms


Xbox 360, WP7, Windows
-
> Microsoft


iPhone, Android, Linux, Mac
-
> Novell

Engine Comparison

14


Most platforms have specific frameworks and usually only
support 1
-
2 languages well:


iPhone
: Objective
-
C (not very pretty)


Android
: Java (lots of config files, can compile C too)


Windows Phone 7
: Only C# (Silverlight or XNA)


Xbox 360
: Native C++ (XDK, or C# with XNA, Xbla)


PS3, Wii
: C++ (have their own frameworks, ES)


Linux
: Mostly C++ (gcc), Java, also .NET (Mono)


MacOS
: Objective C and C++ mostly


Windows

can do everything (.NET, Java, Scripts, …)

Engine Comparison

14


Unreal 3 Engine/UDK


Targeted to big teams


Heavily focused on Editor


Lots of tools and support for Artists


Unreal Script


With a license can be programmed
natively (C++, Huge Code base)


Expensive, Complex, 15+ Years Old


PC, Xbox 360, PS3


Recently iOS and Android too

Engine Comparison

14


CryEngine 1 was FarCry (2004)


CryEngine 2 was Crysis (2007) and used
in a few other games


CryEngine 3 is used in Crysis 2 (2011)


Focus on great visuals, shader heavy


Cool sandbox features


Struggling with low performance PCs


With a license can be programmed
natively (C++, Huge Code base, Lua)


Expensive, Complex

Engine Comparison

14


Unity3D


Mac oriented engine


Editor based


Scripting: C#, JS, Boo


No source code access


Huge community


Focused on small teams and individuals


Became very successful in the last few years


Huge community


Mac, Web, iOS, Wii, recently added Android

Mobile Development

14

Mobile Development is challenging (10 quick examples)

Mobile Development

14

Mobile Development is challenging (1/10)

You need a lot of actual devices to test

Mobile Development

14

Mobile Development is challenging (2/10)

Different Programming Languages, Different Challenges

Mobile Development

14

Mobile Development is challenging (3/10)


Different Frameworks, Libraries, Engines


Often you will end up writing your own libraries


DirectX vs OpenGL


Physic Engines, which one is for you


Multimedia formats


Objective
-
C library not useful to a Java developer
and vise versa

Mobile Development

14

Mobile Development is challenging (4/10)


Write game natively or use a engine?


Early when a new platform comes out most games
are written without engines


As games get more complex more and more
libraries are needed


Many engines to choose from, each one has
advantages and disadvantages:


Unity3D, Unreal3, Vision, Torque (GarageGames),
XNA, Vision Engine, Delta Engine, etc.

Mobile Development

14

Mobile Development is challenging (5/10)

Different device capabilities = Different file formats

Mobile Development

14

Mobile Development is challenging (6/10)


Many devices have different resolutions


iPhone 2G, 3G, 3GS: 480x320


iPad: 1024x768


iPhone 4: 960x640


Android: 320x240, 480x320, 640x320, 800x480,
864x480, 1024x600, 1280x720, and many more


WP7: 800x480


PC, Xbox 360, PS3: 720p, 1080p, many more


Aspect ratio can be 3:2, 16:9, 16:10, 5:4, 17:10, etc.

Mobile Development

14

Mobile Development is challenging (7/10)


How to get big content on small devices?


Xbox 360, PS3 is challenging with 256 MB Ram


iOS can have as little as 15MB left to work with


Even newer devices might only have 50
-
100MB of
memory free to use.


Mobile devices are not build for multitasking


There is no swapping memory


Compression is key, keep content small


Swap out loaded content yourself (streaming, etc.)

Mobile Development

14

Mobile Development is challenging (8/10)


Often existing games need to be
ported


Web games run too slow, a
native port is better


PC and Console games need
a lot of rethinking


Handling input is challenging,
devices were not really build
for gaming

Mobile Development

14

Mobile Development is challenging (9/10)


Compiling game source code
and/or content can be very
time consuming


Deploying also needs time,
testing is crucial, but if your
build takes long times you
have less time developing


Some tools are horrbily slow
(PVR texture compression)

Mobile Development

14

Mobile Development is challenging (10/10)


Optimizing complex games is very important


Simple games can get away with messy code


Complex games MUST NOT leak memory or they
become unmanageable and unplayable after a while


GPU is usually very slow (few instructions per pixel)


CPU is even worse, you can‘t really compare it to a
desktop PC. Even multiple cores does not help you if
your game code is slow.


Try to separate parts (physics, multimedia, logic, gfx)

Example Game

14


Blocks Game (in just 40 lines of code)


Written as a sample game for an article

Example Game

14


WP7 Version is about 200 lines of code

Example Game

14


Android Java Example code from a different game

Example Game

14


Objective
-
C is even more complex and verbose


Even drawing a simple box with OpenGL ES is many
hundred lines of code

Example Game

14


We as game developers tried out both options


Using game engines was good and easy in the
beginning, but very challenging later when extending


Writing games natively was hard in the beginning, but
more extensible later


Major problem was always maintainance and tools


Started in 2009 with the Delta Engine to solve this


Delta Engine is a multiplatform engine in .NET


Idea was to port and deploy games with a single
mouse click

Delta Engine

14


The blocks game is just 40 lines of code with the Delta
Engine (no tools or features used), with comments 60 lines


Runs on all supported platforms (PC, Linux, MacOS,
Consoles: Xbox 360, Mobile Devices: iPhone, iPad,
Android, Tablets, WP7, more in the future)


Uses C# code, very similar to XNA


Resolution independant


1s compile time on Windows and for emulators, few
seconds to minutes for a full deploy on other platforms


Automatically optimized and reduced for you

Delta Engine

14

Full source code with comments for the example game: Blocks

C++ vs C# (setup graphics)

13

16

Unity Editor

Game
Code

Game
Assets

Unity Engine Modules &
Features (not customizable)

Unity3D: Closed Model

Delta Engine: Open Model

Delta Engine Framework

Game Code

Game Assets

Delta
Engine
Modules

Third Party
Engine
Modules

Custom
Modules

Black Boxes (Closed)

Customizable (Open)

Open Source vs Proprietary

Extremely Open Engine

17



Source code available for free (starting July 2011)


Develop and publish your games on Windows


No costs for you!



If you want to deploy on any other platform than Windows:


You need a Delta Engine Multiplatform license


Access to easy to use tools (Launcher, Simulators)


Which will be cheap or royalty based, no worries


One click deploy, fast and easy with the Launcher

Launcher Addin for VS

18


e.g. Start Unit Tests


Directly integrated into Visual
Studio 2010


Also available as Standalone
App for Testers


Starts programs, games, tests,
tutorials, samples on all
supported devices


Also shows lots of information
about your project (Tests,
Assemblies, Todo
-
List, etc.)

Content, Content, Content

19



Today's games are mostly content driven


Especially on Consoles and PC


You usually have a powerful engine ready to go



Sharing content between games was almost impossible in
the past, formats changed too often



The Delta Engine makes all content always available and
will always work on all supported platforms

Content, Content, Content

20


Example with XNA on Windows Phone 7


Artist saves .png image file or 3D Model


Content pipeline converts all files to .xnb


.xnb is the only format allowed for WP7



Images are best stored as DDS files


XNA’s content pipeline does the
conversion for you


3D Models or Levels often need custom
importers because of different needs

Content, Content, Content

20

Step 1
: Add Content file to Content Project





Step 2
: Load and use content in code

Content, Content, Content

20


Many content files depend on each other usually








With the Delta Engine it works very similar and on all
platforms, content is just not needed at compile time!


Things get more complex if you add more platforms

Content, Content, Content

21



When testing on Windows needs 1
-
2 files per content


Makes no sense to keep all formats for all platforms.


Converting formats takes time. For example a single
2048x2048 iPhone PVR Texture takes 30
-
40 seconds to
save on really fast PC with 3.6Ghz (we got hundreds)


So content is only converted when you actually need it
and it has been changed (cache)


Content is processed on Servers in the Cloud (currently
one server can handle everything, but this will be
expanded as more demand is needed)

Content, Content, Content

22



Content is always automatically requested and build, there
is no button to do it and a human will make too many
mistakes choosing options anyway.


Instead the build server decides all this and makes sure all
content files work together, optimized as much as possible


Unused content is removed, Atlas textures are
generated, content is optimized by the shaders used


Crazy compression rates of 100:1 and more, which is really
required for mobile games (ZombieHockey 2.8MB on WP7,
6 MB iPhone, PC version is 40MB, uncompressed >120MB)

Content, Content, Content

23


Example Atlas Textures (generated automatically, 2D & 3D)


Developed to
create
games for all AppStore
platforms at
once



High quality 3D RPG game
SoulCraft to demonstrate
the
capabilities and speed



MobileBits cooperates with
companies like NVIDIA,
EA, Chillingo, Microsoft,
Bigpoint and more

4

What is the Delta Engine?

6

What is the Delta Engine?

D
evelop with .NET for all AppStore platforms

No need to learn different and dated languages for different
platforms such as iPhone, Android and WP7


E
asy to learn and to build

Use your favorite Windows
-
tools, check out our examples
and just press the magic button to build for other platforms


L
ightweight and fast

We did the hard work to optimize performance for all
platforms
-

just include the parts you need for your game


T
eamwork made easy

With our advanced content management system, editors for
game designers and full support of all your favorite tools


A
ssets and code are Open Source

The Delta Engine and our example games are Open Source
and you are invited to participate or to integrate other libraries

Early version of the Soulcraft Tech Demo in January
2011
at the CES in Las Vegas with NVidia

7

ZombieParty runs already on many Platforms

9

October 2010

Delta Engine Release

24


Questions? I hope you liked the presentation and the Engine.


Delta Engine Release

July 2011
(v0.9)

v1.0 coming end 2011

www.DeltaEngine.net


Already working on Windows, MacOS, Linux, iPhone, iPad,
Windows Phone 7, Android, Android Tablets, Nvidia Tegra,
Xbox 360 and more soon


Multiplatform Development

Benjamin Nitschke

CTO Delta Engine &

exDream & MobileBits


Benjamin@DeltaEngine.net

MobileBits GmbH

Lerchenstrasse 28

22767 Hamburg


exDream GmbH

Hildesheimer Str. 35

30169 Hannover

MobileBits GmbH