wwx2015 speech: sven otto & rui campos "cross-platform game development with the gameduell...

36
© GameDuell 2015 Cross-Platform Game Development with the GameDuell DuellTool This is a presentation by Rui Campos and Sven Otto

Upload: silex-labs

Post on 18-Aug-2015

342 views

Category:

Software


1 download

TRANSCRIPT

© GameDuell 2015

Cross-Platform Game Development with the GameDuell DuellTool

This is a presentation by Rui Campos and Sven Otto

© GameDuell 2015

© GameDuell 2014 | Confidential

The Haxe Story at GameDuell

© GameDuell 2014 | Confidential

© GameDuell 2015

© GameDuell 2014 | Confidential

© 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

Card Game

Arcade Game

© GameDuell 2015

© GameDuell 2015

Can Haxe libraries go beyond Haxe code?

© 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

© GameDuell 2015

HAXE really saved my

day!

© GameDuell 2014 | Confidential

The Duell Environment

© 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

HockeyAppAtlasPacker

Facebook

GameServer

PurchaseKit

Library Examples

© GameDuell 2015

Completion on intellij

Validation when building

XML Completion and Validation!

© GameDuell 2014 | Confidential

Let’s see some code

© GameDuell 2015

missing ;

© 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

© GameDuell 2015

Answers

Questions

and

© GameDuell 2015

inside.GameDuell.com

Team Video Tech Jobs!

[email protected] [email protected]

© 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

© GameDuell 2015