Marmalade: bittersweet experience

39
Marmalade Bittersweet experience

description

 

Transcript of Marmalade: bittersweet experience

Page 1: Marmalade: bittersweet experience

Marmalade Bittersweet experience

Page 2: Marmalade: bittersweet experience

Max Klyga

@neku42

[email protected]

Page 3: Marmalade: bittersweet experience
Page 4: Marmalade: bittersweet experience

Mad Hat Games

•  We develop mobile free2play games

Page 5: Marmalade: bittersweet experience

Mad Hat Games

•  We develop mobile free2play games •  Programmers have strong C++

background

Page 6: Marmalade: bittersweet experience

Mad Hat Games

•  We develop mobile free2play games •  Programmers have strong C++

background •  Artists have strong Flash background

Page 7: Marmalade: bittersweet experience

Asset Pipeline

•  Everything is done in Adobe Flash

Page 8: Marmalade: bittersweet experience

Asset Pipeline

•  Everything is done in Adobe Flash •  Flash files are used as bundles

Page 9: Marmalade: bittersweet experience

Asset Pipeline

•  Everything is done in Adobe Flash •  Flash files are used as bundles •  Images are extracted from flash,

packed into atlases and compressed

Page 10: Marmalade: bittersweet experience

Engine

Page 11: Marmalade: bittersweet experience

Engine Framework

Page 12: Marmalade: bittersweet experience

Engine Framework

•  Written in C++

Page 13: Marmalade: bittersweet experience
Page 14: Marmalade: bittersweet experience

Engine Framework

•  Written in C++ •  Built on top of Marmalade SDK

Page 15: Marmalade: bittersweet experience
Page 16: Marmalade: bittersweet experience

Write once Debug everywhere

Page 17: Marmalade: bittersweet experience

Sweet

•  Develop on Windows (Visual Studio) or Mac (XCode)

Page 18: Marmalade: bittersweet experience

Sweet

•  Develop on Windows (Visual Studio) or Mac (XCode)

•  One click deploy to iOS, Android, BADA, Blackberry, Simbian, Win Phone 8, LG TV, Desktop (Mac, Windows)

Page 19: Marmalade: bittersweet experience

Sweet

•  Develop on Windows (Visual Studio) or Mac (XCode)

•  One click deploy to iOS, Android, BADA, Blackberry, Simbian, Win Phone 8, LG TV, Desktop (Mac, Windows)

•  Simulator (!)

Page 20: Marmalade: bittersweet experience

Bitter

TOO MANY THINGS TO FIT

ONE SLIDE

Page 21: Marmalade: bittersweet experience

Bitter

TOO MANY THINGS TO FIT

ONE SLIDE

Page 22: Marmalade: bittersweet experience

Bitter

Build system doesn’t play

well with JDK 7 (Android SDK issue)

Page 23: Marmalade: bittersweet experience

Bitter

Build system doesn’t play

well with JDK 7 (Android SDK issue)

Can be sort of fixed though

decompiling build system and

manual patching

Page 24: Marmalade: bittersweet experience

Bitter

Bundles OLD stlport

No Visual Studio debug visualizers

support

Page 25: Marmalade: bittersweet experience

Bitter

Multithreading problems:

Memory can be freed only from thread it was allocated

in.

Enjoy!

Page 26: Marmalade: bittersweet experience

Bitter

Network problems:

One failed request can hang your

application

Page 27: Marmalade: bittersweet experience

Bitter

Network problems:

One failed request can hang your

application

Workaround:

Have no more then one request at a

time

Page 28: Marmalade: bittersweet experience

Bitter

Network problems:

One failed request can hang your

application

Workaround:

Turn off some optimisations for

Marmalade internal multitasking features

Page 29: Marmalade: bittersweet experience

Bitter

Extensions problems:

(missing features, bugs)

Page 30: Marmalade: bittersweet experience

Bitter

Dependencies:

You need IwUtil for tracing and it depends on a whole lot of stuff

(libjpg, libpng, zlib, etc.)

Page 31: Marmalade: bittersweet experience

Bitter

Sometimes updates randomly break stuff:

•  Problems with ATI cards on Simulator •  Appending ‘\n’ to HTTP request body •  Regressions •  etc.

Page 32: Marmalade: bittersweet experience

Bitter

Virtually no support

Bugs can be ignored for months

Page 33: Marmalade: bittersweet experience

Bitter

• Video playback problems • Native UI and Input problems •  Things I don’t remember

Page 34: Marmalade: bittersweet experience

Sour

Memory management:

Marmalade allocates one continuous chunk of memory from system.

Replaces malloc/new.

Have to write your own memory allocator on top of one provided by marmalade.

Page 35: Marmalade: bittersweet experience
Page 36: Marmalade: bittersweet experience

Sour

No debugging on device

Logging is your friend

Page 37: Marmalade: bittersweet experience

Conclusion

Was it worth it?

Page 38: Marmalade: bittersweet experience

Conclusion

Be ready to reimplement stuff

(we reimplemented facebook, music, sound and filesystem

extensions, heavily modified others)

Page 39: Marmalade: bittersweet experience

Max Klyga

@neku42

[email protected]

QUESTIONS?