Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Serdar Koçdemir
@stromaster
Mount&Blade
&
Android
Mustafa Korkmaz
@MustafaKorkmazD
Outline
● TaleWorlds Entertainment
● Mount and Blade: Warband
○ Medieval Action RPG
○ Moddable
● Windows-based
○ Win32 API...
Video
https://play.google.com/store/apps/details?id=com.taleworlds.mbwarband
Android
● Growing market
● Smart phones
● Mobile devices
● Microconsoles
○ Shield, OUYA, GameStick, MadCatz MOJO etc.
○ Am...
NVIDIA Shield
● Pure Android, no crapware
● Full Gamepad!
● Tegra 4
○ 1.9 GHz ARM Cortex A15 x 4
○ 2 GB RAM
○ GeForce ULP ...
NVIDIA Shield
● Very powerful CPU
● PC standard GPU
● Video Streaming
● Developer friendly
○ nSight Tegra, Visual Studio E...
Porting Steps
● DirectX port; OpenGL Rendering on Windows with SDL
● MSVC port; MinGW on Windows
● WinAPI port; GCC compil...
Porting Process
● Operating system differences
● Filesystem differences
○ Case sensitivity on Unix
○ Backslash-Forwardslas...
Compiler Differences
● -fms-extensions
○ MSVC compiler compatibility
○ Can work well for the beginning
● Removed inline as...
Compiler Differences
Compiler Differences
D3D vs OpenGL
● Visual debugging is crucial
● Differences in resource processing logic
○ OpenGL: bind-to-edit
● GLSL-HLSL ...
XML based FX Framework
Android Development
● Eclipse ☹
● Tegra Visual Studio Edition
○ Fully configured environment
○ C++ and Java Debugging supp...
Nsight Tegra VSE
● Easy to start
Nsight Tegra VSE
Controls
● Playing a keyboard&mouse game with a gamepad
● XBOX 360 gamepad used as reference
User Interface
● Resizing text
● Coloring and better highlighting
● Widget positions
● Helper icons
● Cursor control syste...
User Interface
User Interface
Optimization
● Reduced texture detail
● Simplified shaders
○ Gamma 2.0
○ Lighting optimizations
● Removed real time full-r...
● Multiplayer support
○ BSD sockets
○ libcurl for http
● Multithreading
○ POSIX, wrapper objects
● Sounds
○ FMOD
● Physics...
● First full Windows game port on Android
● Cross platform multiplayer
● NDK works (most of the time)
● nVidia investing i...
Thank you
Upcoming SlideShare
Loading in …5
×

Mount & Blade & Android - En

1,289 views

Published on

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

Published in: Software, Technology, Art & Photos
  • Be the first to comment

  • Be the first to like this

Mount & Blade & Android - En

  1. 1. Serdar Koçdemir @stromaster Mount&Blade & Android Mustafa Korkmaz @MustafaKorkmazD
  2. 2. Outline ● TaleWorlds Entertainment ● Mount and Blade: Warband ○ Medieval Action RPG ○ Moddable ● Windows-based ○ Win32 API, DirectX, HLSL ○ Microsoft C++ Compiler ○ Multithreaded ○ Keyboard&Mouse controls
  3. 3. Video https://play.google.com/store/apps/details?id=com.taleworlds.mbwarband
  4. 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. 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. 6. NVIDIA Shield ● Very powerful CPU ● PC standard GPU ● Video Streaming ● Developer friendly ○ nSight Tegra, Visual Studio Edition ○ Tegra Profiler ○ PerfHUD ES ○ NVPACK
  7. 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. 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. 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
  10. 10. Compiler Differences
  11. 11. Compiler Differences
  12. 12. D3D vs OpenGL ● Visual debugging is crucial ● Differences in resource processing logic ○ OpenGL: bind-to-edit ● GLSL-HLSL differences ○ FX Framework ○ XML based shader definition system ○ Preprocessor definitions (eg. lerp -> mix) ○ GLSL Optimizer ● Multithreaded renderer ○ Single thread for all GL Context operations
  13. 13. XML based FX Framework
  14. 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
  15. 15. Nsight Tegra VSE ● Easy to start
  16. 16. Nsight Tegra VSE
  17. 17. Controls ● Playing a keyboard&mouse game with a gamepad ● XBOX 360 gamepad used as reference
  18. 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
  19. 19. User Interface
  20. 20. User Interface
  21. 21. Optimization ● Reduced texture detail ● Simplified shaders ○ Gamma 2.0 ○ Lighting optimizations ● Removed real time full-render reflections ● glGet… avoidance ● Multithreaded rendering system ● Removed graphics options
  22. 22. ● Multiplayer support ○ BSD sockets ○ libcurl for http ● Multithreading ○ POSIX, wrapper objects ● Sounds ○ FMOD ● Physics ○ Removed Havok on ragdolls ● Murphy’s Law... Others
  23. 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
  24. 24. Thank you

×