Skip to main content

How it all started

· 6 min read

Before this blog existed, the projects lived on a small HTML page. That page is no longer existing, so this post records what is left and how my programming journey started. The projects are from around 2009 and started on nokia's long gone Symbian mobile OS.

gif

The team and the start​

The first project started on www.symbian-freak.com, where two additional enthusiasts joined:

  • AJ___92, programmer, author of this blog
  • Arvis, close to the project from day one, but contact was lost over the years
  • Jimmy94, model designer, still in contact till this day

symbian-freak screenshot

That website is dead for years now, but the wayback machine still hold on to a few captures.

My first decent phone was the nokia N73 music edition, and with that device my first programming experiments began. The emulator shows the "homescreen" captured and rendered on a cube. Later the same is shown on the actual device. Amazing that the pictures where not lost over the time. Thx for data hoarding @Jimmy94.

emulator

emulator emulator emulator

3D PyEngine for S60​

This is the ancestor of every later 3D project. The engine is written in Python and uses only standard Python modules. No additional module is needed. OpenGL renders the 3D objects through PyS60.

Requirements and tested runtimes:

  • devices with more than about 30 MB free RAM run simple graphics without problems
  • simple graphics means over 5 textures at 512x512 pixels and a few thousand triangles
  • devices without hardware acceleration are slow for advanced graphics
  • Python 1.4.5, 1.9.6 and 1.9.7 work perfectly, 2.0.0 works, but needs more RAM

Features of version 0.04:

  • customizable fps value to lock the maximum framerate
  • customizable frustum settings to configure the camera
  • fog, not working on some devices
  • camera position and rotation
  • import of *.obj and *.mtl files with textures in any supported image format
  • masks for transparency, so textures can have invisible parts
  • position, orientation and scale per mesh, plus texture scaling and movement
  • console that shows important values and can be switched off
  • keyboard class to recognize key presses
  • touch events were expected but not tested, because no 5th edition device was available
  • bluetooth connection for possible multiplayer games
  • WLAN connection between PC and phone that acts as a console (wlan console.py)
  • version 0.04 uses less RAM for textures

Installation:

Before you download

The original domain is gone, so remove the updating part in the sources.

  • engine_Lib.zip is the last available version
  • create a folder called Lib in e:\Python\, where e:\ is the card slot
  • copy e_imp.py and e_core.py into it
  • e_imp.py imports and updates the main engine, and e_core.py is the engine itself (url is dead)
  • a script then starts with from e_imp import *. See pong tutorial for usage

demo scene screenshot terrain screenshot shooter screenshot city demo 1 screenshot city demo 2 screenshot taskman concept screenshot textured hand model screenshot demo scene 2 screenshot

Pong tutorial​

The only tutorial that survived from the old page is the super simple Pong example project. Everything else got lost over the time, like a few youtube videos.

Pong tutorial on the device.

Racing game concept​

We started to develop a racing game on that platform, but the project never went over the level design and rendering bug fix stage.

Here are some actual screenshots from a nokia N82:

racing game development screenshot 1 racing game development screenshot 2 racing game development screenshot 3 racing scene screenshot 1 racing scene screenshot 2 racing scene screenshot 3

Some concept renders (non-engine):

racing concept render 1 racing concept render 3 racing concept render 5 racing concept render 4 racing concept render 2

Additional rendering features​

During the later stage of the engine additional features where added. These included fog, particles effects, lights and model loading.

engine development screenshot 2 engine development screenshot 3 engine development screenshot 4 engine development screenshot 5 engine development screenshot 6 engine development screenshot 7

Switcher​

Switcher announcement promised it for all S60 devices from S60 3rd edition to S60 5th edition. The control scheme was simple: left and right switches between tasks, up opens a task, down kills a task. The 3D model of the task manager itself is in the download area, so the engine could display a task icon.

WLAN file transfer​

WLAN file transfer sends files from one S60 device to another one over a WLAN connection. It came from two scripts by Marcelo Barros de Almeida (marcelobarrosalmeida@gmail.com) under the GPL 3 license. I merged both scripts into one file and packed it into an application. The package contains the application for 3rd and 5th edition devices plus the source. The application was packed with Python 2.0, so Python 2.0 is needed to run it, and the source script runs on other versions through a shell script.

source lost

WLANFT.rar is unfortunately corrupted and lost forever

WLAN file transfer screenshot 1 WLAN file transfer screenshot 2 WLAN file transfer screenshot 3 WLAN file transfer screenshot 4 WLAN file transfer screenshot 5 WLAN file transfer screenshot 6

Where the projects went after that​

The Python engine project stopped in january 2011. The C++ rewrite took its place, and that engine is covered in the 2012 engine post. The task manager continued on this blog and is covered in the Switcher post.