for free! 9th Aug'09, v1.7.1 now available on the AppStore.
multiplayer: “different protocol”, no servers - this port is intended as a technology demo, and v1.7 is incompatible with the standard server. We hope to eventually release the server as a desktop application or as built-in to the next iPhone version
I'm one of the part-time developers of the Sauerbraten (Cube 2) fps, and while I sorely wanted to port Sauerbraten, I've decided to compromise and instead port the original Cube.
The features of this port are that everything has been ported to the iphone (including networking and editing - though there is no practical interface to use it) and that all the content of the desktop version (Cube 'final' of August 2005) is available.
The objective of this little project are:
To make Cube available to more people (which hopefully will make them look at Sauerbraten)
Making some of the code modifications open and available for other projects to build upon
For me to gain more experience with iphone porting and performance issues
-
Multiplayer support requires downloading and compiling the standard Cube source, and then running a server from the desktop
fixed so can select rifle
fixed bug so /lightmap actually works
added /screenflip command to rotate the screen 180 degrees
Overlay indicators for touch areas
Indicator for current tilt amount (/showtilt 0 - to disable)
Menu to change music/sound levels
Finally have decided on a working (i.e. more usable) control scheme
Can now just touch menu items
Performance tweaks to model rendering
Located fatal error when using gamespeed command
Experimental changes sometimes give a respectable performance increase (18fps up from 12fps)
Located fatal error in server code that caused lockup behavior
Implemented 3 different control schemes - but proving very hard to get something playable
Compressed majority of textures so that they load faster and take far less memory (approx 1/8th)
Eliminated low memory warning?
Smaller overall size for download
Fixed minor bug in text rendering
Tweaked performance a little
Fixed issues with keyboard and console orientation
Added wireframe/lightmap modes to aid performance debugging
Pause during phone calls
Finally found a workaround for the Apple accelerometer bug
Fixed issue with all the debug messages coming from Apple music lib
Disabled stdout so console messages won't flood the system log
Decoupled touch handling from frame update to improve usability
Fixed crash when missing texture
Added UITextField popup so can enter console commands
Added UIAlertView for fatal messages
Discovered iphone file system is case sensitive - renamed all assets to lowercase
Loading screen shows where/how to touch on the screen
Fixed touch area placement
Added mesh optimization for models
Added openAL support so as to replace SDL_mixer (but no ogg support for music)
Removed 'quit' button from menu
Minor 'mod' so that can open
URL from menu for Aard's homepage
Saves config when quit app via iphone button
Converted title track ogg files into mp3 (to work around lack of ogg support)
Fixed bug where couldn't run and jump at same time
Good performance boosts by using VBOs for models (as we don't have display lists)
Improved “Loading…” messages
Fixed iphone specific hacks regarding file access and saving
Designed suitable icon
Re-enabled all of editing code - no one will ever use it on the iphone, but it works
Implemented SDL thread code enough to make server browser work
Fixed issues with screen rotation aspect ratio
Eliminated image loading bugs so it now stretches npot textures to fit and limits texture size
Tweaked accelerometer behaviour so that 'mouse-look' feels more natural
Optimised model rendering code for static frames/models
Added 'mod' code that builds the font texture using CoreGraphics instead of using an image, i.e. use Apple fonts
Utilised Carbon runloops and and added hooks to monitor when loading textures/models, then shows a “Loading…” text label on top of the opengl context
Modify desktop codebase to remove all intermediate openGL calls
Disabled editcursor rendering - not needed at the moment
Remove SDL_mixer dependencies (replaced with stubs for now - so no sound in short term)
Remove SDL_image dependencies, replaced with CoreImage code
Replaced SDL thread code with stubs - only used for networking anyway
Add #ifdef IPPHONE so as to have dual compilation paths - remove remaining SDL dependencies within iphone path
Added to basic iphone project
Gave a brief demo at local Mac developer meeting this evening.
Cube is open source, and while the engine could be used in a paying game, all the content is with different licenses and is care of members of the Cube community. The idea of making people pay for this port was never considered, and I certainly don't want to detract from or disgruntle fellow members of the Cube community either. I do admit to considering putting a donate button on this web page - but that is against the spirit too. (I'VE GOT ENOUGH FAN MAIL ABOUT IT BEING FREE - THANK YOU…)
Hopefully v1.5 will make people happier. It's a big change, and some people will complain about change, but we believe the new controls are easier - plus we now provide strafe and backward movement, more consistent weapon changing, and an easier to use menu.
v1.5 provides a new menu 'sound..' off the main menu, alternatively you can use the /soundvol, or /musicvol commands.
This is a port and so the objective is to preserve the original Cube gameplay and content as much as possible.