Mobile Apps
Cub3D is one of the biggest projects I’ve ever completed. It is a fully programmable, mobile, 3D (and 2D) development environment, one of the most powerful mobile apps available on the Android Play Store, and, at the moment, literally a one-of-a-kind with what it offers.
Here are some screenshots of it. It has been updated since they were taken, so I advise you give it a try! You can also view the technical Cub3D feature list here.
Download links:
- ARMv7a — fast, native support for almost all tablets, phones, watches and TVs
- x86 — optimised for devices of this architecture
- File checksums
Adding, editing and running user applets
Cub3D was originally based on Disney’s Panda3D engine for desktop PCs, but of course contains a huge collection of additions and alterations designed to make it suitable as a mobile game engine. The new features were written with a combination of my own C, C++, Java, Python, Makefiles, Bash and Ksh scripts, along with a few other scripting languages, and the entire development process was done with a selection of Google’s SDK and NDK tools, using Linux and KDE.
Cub3D contains lots of unique features. For example, you can inspect and alter almost all running programs, without stopping them. You can easily enter a Python command to reposition the second hand on a clock, even whilst your main program is rotating it each frame.
Cub3D’s live, in-applet, pull-down console, and stack trace
The live console also features Python autocompletion, to make typing on a mobile device easier.
There are various major software packages which make Cub3D a ‘complete’ development environment, and these were ported for almost all ARMv7a and x86 Android devices on the planet. This gives you the kind of speed and creative power normally only seen on a PC. It isn’t just a programming language with a basic text editor, it’s an entire engine with models, physics, sound, programmable shaders (special effects), multitouch, on-screen controls, and more. It weighs in at just about 60MB for everything, including the programming languages and samples, and doesn’t even need an Internet connection to work.
Add multitouch overlays with code ‘one liners’
A friendly front-end was written to allow you to edit and share applets you create with friends, as well to showcase your creations.
Cub3D has the ability to digitally sign applets using the X.509 standard. This is so you when you deploy updates, they can be validated against the original author who gave you the first version. Here is one of the X.509 certificates that an early version generated:
An X.509 certificate generated by Cub3D, shown in Linux
You can also benchmark the OpenGL ES 1.1 or 2.0 engines over Wi-Fi, and view various performance graphs and charts in realtime on a PC screen. The statistics measurements display on either a Linux, Windows or Mac OS machine using Panda3D’s ‘pstats’ tool:
A ‘Piano Roll’ of Cub3D running an OpenGL ES applet
Cub3D can play .ogg files using OpenAL (a common audio engine). This has been enhanced to use Android ‘FastTrack’, which reduces audio latency to nearly zero, and also calibrates its output to your individual device, for the crispest sound. In 1980′s BASIC days, you could produce sound effects you created yourself using commands. Cub3D can also generate real-time sound effects that are played directly to the internal sound driver as ‘PCM’ data. Here are ADSR (Attack, Decay, Sustain and Release) audio ramps and several waveform types (sine wave, sawtooth, square wave, and random noise; not shown), which Cub3D supports:
ADSR ramps calculated and used in Cub3D
Sine, sawtooth and square waves
SciPy, MatPlotLib and other scientific tools were also built for Cub3D, and successfully ran, but they aren’t available from the Play Store. To build SciPy, Fortran compilers for both Android ARMv7a and x86 were built:
Android/ARM Fortran compilers built on Linux
The Play Store’s textual content and pricing strategy has been changed since my initial setup.
Cub3D was designed for a previous employer. Please contact them via the Android Play Store for enquiries.