We are sharing our experiences on porting Mount&Blade:Warband game to Android platfom.
Turkish presentation video from Android Developer Days 2014:
http://www.paylas.com/video/mount-and-blade-ve-android
Play Store link:
https://play.google.com/store/apps/details?id=com.taleworlds.mbwarband
Feel free to ask any questions: https://twitter.com/stromaster
https://twitter.com/MustafaKorkmazD
4. Android
● Growing market
● Smart phones
● Mobile devices
● Microconsoles
○ Shield, OUYA, GameStick, MadCatz MOJO etc.
○ Amazon Fire TV
● Increasing performance
● Changing the video game industry
5. NVIDIA Shield
● Pure Android, no crapware
● Full Gamepad!
● Tegra 4
○ 1.9 GHz ARM Cortex A15 x 4
○ 2 GB RAM
○ GeForce ULP GPU
● 5” touchscreen
● Long battery life
6. NVIDIA Shield
● Very powerful CPU
● PC standard GPU
● Video Streaming
● Developer friendly
○ nSight Tegra, Visual Studio Edition
○ Tegra Profiler
○ PerfHUD ES
○ NVPACK
7. Porting Steps
● DirectX port; OpenGL Rendering on Windows with SDL
● MSVC port; MinGW on Windows
● WinAPI port; GCC compile on Linux
● Android port started after functional Linux version completed
● #ifdef is your friend!
○ First goal: get it compiling
○ You can disable features until big issues are solved
○ NotImplementedYet() messages
8. Porting Process
● Operating system differences
● Filesystem differences
○ Case sensitivity on Unix
○ Backslash-Forwardslash
○ Virtual drives
● Compiler differences
○ GCC is closer to the standard
○ MSVC is more tolerable (Problem for porting)
○ CLANG is a good alternative
■ Shorter compile times
○ Runtime differences on multithreading
9. Compiler Differences
● -fms-extensions
○ MSVC compiler compatibility
○ Can work well for the beginning
● Removed inline assembly
● C++ non-standard issues
○ rand() implementations differ
○ Function argument initialization order
14. Android Development
● Eclipse ☹
● Tegra Visual Studio Edition
○ Fully configured environment
○ C++ and Java Debugging support
● NativeActivity ‘Subclassing’
● OBB system
● License Control
○ Managed policy at launch
○ Strict policy for multiplayer
○ Extra game server based user ID control
● Video player
17. Controls
● Playing a keyboard&mouse game with a gamepad
● XBOX 360 gamepad used as reference
18. User Interface
● Resizing text
● Coloring and better highlighting
● Widget positions
● Helper icons
● Cursor control system on campaign map
● Neighbor user interface element system
● Moddable interfaces
○ Automatic neighbor mapping system
● Touchscreen support
○ Multiple, floating mouse areas
23. ● First full Windows game port on Android
● Cross platform multiplayer
● NDK works (most of the time)
● nVidia investing in Android
○ Good developer tools
○ Microconsoles are becoming widespread
○ China opened up video game console market
● Linux/Mac port of Warband will be released soon
Summary