Upload
silex-labs
View
344
Download
1
Embed Size (px)
Citation preview
© GameDuell 2015
Cross-Platform Game Development with the GameDuell DuellTool
This is a presentation by Rui Campos and Sven Otto
© GameDuell 2015
- Code once, build everywhere
- Control tool stack
- Scalable workflows
Requirements
© GameDuell 2015
Games
Game EngineWorkflow Accelerations
DuellKitPlatform Abstractions
DuellToolEnvironment, Versioning, Build System
26 Libs
10 Libs
15 Libs
1
YearDevelopment
/(Playing Ping
Pong)
Development Stack
© GameDuell 2015
- Libraries do not have a standard way of integrating natively
- Engines are too Monolithic
- Native code is not easily shared between engines
Current library ecosystem
© GameDuell 2015
- Sharing native libraries between engines
- Less work for engine developers
- Simpler and more maintainable engines
Standard native interface
© GameDuell 2015
class Example
doSomething()C++ActionScriptJavaScript
doGreatThings()C++ActionScriptJavaScript
extern class Example
doSomething()
doGreatThings()
class Example
doSomething()
doGreatThings()
Javascript
Javascript
class Example
doSomething()
doGreatThings()
ActionScript
ActionScript
class Example
doSomething()
doGreatThings()
C++
C++
© GameDuell 2015
Duell Environment
DuellTool
iOS plugin
Android plugin
HTML5 plugin
Flash plugin
OpenGLInput
A New Engine
Environment
Libraries
AtlasPacker
Webp Encoder
.
.
.
OpenGL FilesystemInput
DuellKit
Runloop
TypesUnittest
SDL
© GameDuell 2015
DuellTool
iOS plugin
Android plugin
HTML5 plugin
Flash plugin
Build plugins
mac setup
...
flash setup
android setup
Setup plugins
unitTestProj
...
emptyProject
libraryProject
Create plugins
© GameDuell 2015
Plugin selection
duell build ios
DuellTool
HTML5 plugin
Flash plugin
Android plugin
Library UpdateiOS plugin
git tags
Configuration parsing
iOS plugin
DuellTool
Library Plugins Library
PluginsLibrary Plugins
Building iOS pluginLibrary Plugins Library
PluginsLibrary Plugins
© GameDuell 2015
- Parse XML
- Integrate with the target platform
- Run code when building
Duell Libraries
OpenGL
FilesystemInput
Types
© GameDuell 2015
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="duell">
<app title="Test Project"
file="testproj"
package="de.gameduell.testproj"
version="1.0" />
<main name="Main" />
<source path="Source" />
<duelllib name="duellkit" version="1.0.0+" />
<...>
</project>
DuellTool
© GameDuell 2015
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="duell">
<...>
<platform-config>
<flash>
<win-size width="320" height ="568"/>
</flash>
<ios>
<orientation value="UIInterfaceOrientationPortrait" />
</ios>
<android>
<activity-parameter name="screenOrientation"
value="portrait" />
</android>
</platform-config>
<...>
</project>iOS pluginHTML5 plugin
Flash plugin Android plugin
© GameDuell 2015
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="duell">
<...>
<library-config>
<filesystem>
<static-assets path="Assets" />
</filesystem>
<atlaspacker>
<atlas path="Assets/mainmenu" />
<atlas path="Assets/settings" />
</atlaspacker>
<facebook>
<app-id value="1234567890" />
</facebook>
<...>
</library-config>
</project>
OpenGL
Input
Network
Filesystem
...
AtlasPackerFacebook
© GameDuell 2015
Games
Game EngineWorkflow Accelerations
DuellKitPlatform Abstractions
DuellToolEnvironment, Versioning, Build System
Development Stack
© GameDuell 2015
Games
Game EngineWorkflow Accelerations
DuellKitPlatform Abstractions
DuellToolEnvironment, Versioning, Build System
OpenSource
© GameDuell 2014 | Confidential
The Haxe Story at GameDuell
Modularity
The Duell Environment
Open Source
Summary
© GameDuell 2015
inside.GameDuell.com
Team Video Tech Jobs!
© GameDuell 2015
How to install the duell tool?
Y-Mchn:~ you$ haxelib install duellY-Mchn:~ you$ haxelib run duell self_setupY-Mchn:~ you$ ...Y-Mchn:~ you$ duell -helpY-Mchn:~ you$ duell create emptyProjectY-Mchn:~ you$ duell updateY-Mchn:~ you$ duell build html5Y-Mchn:~ you$ duell build iosY-Mchn:~ you$ duell build androidY-Mchn:~ you$ duell build flash