Porting Novashell Game Creation System


Pleng

Well-Known Member
Joined
Dec 28, 2006
Messages
3,030
(edit)
New readers in a bit of a hurry might want to jump straight to the last post to get straight to my latest issue! :)


OK with reference to this thread, I've decided to try and compile Novashell, the game engine/creation system, for the ARM-Based handheld, Pandora.

Having never compiled something from source before, this isn't going to be an easy task. It's made all the more difficult due to the fact it's based on Clanlib which requires a full OpenGL implementation. While the Pandora's chipset is capable of full OpenGL, a driver does not exist. Only an OpenGLEX2.0 driver.

I am hoping to be able to circumvent this problem by using Adventus' GL/GLES wrapper.

So I am going to need the source code to Novashell, which I gather is available here. Additionally, I am going to need the wrapper, which is available here.

Once I have those two, I need to plug them together somehow, and then compile the thing for Pandora.

So, id anybody willing to help me out with what I'm going to need to do in order to bind the wrapper and then compile for the correct target (I guess I'll need a complier at some point?.. :D )

I have also posted this on the Novashell forums.

Would be amazing if we can get this going :)
 
Sounds like a pretty adventurous project for a first-timer but that needn't stop you from having a go. I would however suggest starting with the basics before jumping straight in. Maybe compile Novashell on a regular Linux PC first to get familiar with the process. Once that's working, get your Pandora toolchain sorted and build a "hello world" program and/or some simple app from source. Then put the two together and see how it goes. Be aware that the chance of it Just Working is very low - you are almost certainly going to have to tweak stuff.

I'm not familiar with the GL/GLES wrapper but I would assume it's basically a case of compiling the wrapper and linking to the resulting library instead of a real OpenGL one.
 
SteveM said:
Sounds like a pretty adventurous project for a first-timer but that needn't stop you from having a go.

Adventurous maybe, but it's he only thing I really want to see on the Pandora desperately enough to give it a go myself, so that's the (selfish) motivation behind it. As I've said, though, I really don't know what I'm doing so I'll be hoping there's plenty of good people here to help decipher error messages along the way :)

I would however suggest starting with the basics before jumping straight in. Maybe compile Novashell on a regular Linux PC first to get familiar with the process.

OK. Well I've been thinking of setting up my laptop ad dual boot anyway. Can you recommend a decent distribution for developing on? Is there a desktop version of Angstrom available? Would using that make any sense?

Compiling (hopefully!) should be simple enough. Source is available and a x86 Linux version is already supported. Build instructions are available on the RTSoft website so all is good.

Once that's working, get your Pandora toolchain sorted and build a "hello world" program and/or some simple app from source. Then put the two together and see how it goes. Be aware that the chance of it Just Working is very low - you are almost certainly going to have to tweak stuff.

OK I guess it's a case of crossing that bridge when we get there. I presume a Pandora toolchain is easy enough to come by?

I'm not familiar with the GL/GLES wrapper but I would assume it's basically a case of compiling the wrapper and linking to the resulting library instead of a real OpenGL one.

Right. I'll have to do a bit more research about that. This will be the big stumbling block; if Clanlib can't be compiled with this wrapper then it's pretty much a lost cause.
 
Last edited by a moderator:
Just about any distribution should handle development just fine. There may be a few tools you have to install, but nothing too onerous.

Usually if there's trouble it's getting something on your machine to work properly, or the way a particular distribution handles your desktop of choice.

If you have the luxury of a fat pipe, download the live images of Ubuntu, Gentoo, Fedora, OpenSuse, and/or any distro that interests you. Burn it - or now many of distributions offer the option of running on a thumb drive fairly easily! - run it on your hardware, and see how you like it. (It will run slower than when you've installed it.)

Also, check out their forums. I've had a ton of help from both the Ubuntu and Gentoo forums.

Cheers!
 
OK I'm not going to spend hours trying out various distributions to find out which one I like. If they'll all do the job of compiling as well as each other I'll just find one that's relatively small and go with that.
 
Fair enough. If you want small, Gentoo can be fairly small, has all the build tools already built in, and can be installed with binaries rather than compiling everything. Ubuntu or a similar distro if you'd like something a bit more stable with a windows/mac like desktop.
 
The Debian-based distributions (like Ubuntu) have the added advantage of simplified SDK installation using Cpasjuste's or Hitnrun's scripts.
 
Ok thanks.

Well Ubuntu was the name that instantly spung to mind (and had a very healthy torrent - downloads are virtually impossible where I am). I booted the live CD and tried installing the dev tools and tried quickly compiling straight from the live CD. I didn't have much luck, but I wasn't really expecting it - Clanlib 2 gets installed with apt-get from Ubuntu and Novashell needs 1.0, so I'm going to need to build that from source, too.

Today's task then will be to tidy up my hard drive and install Ubuntu, then try and build clanlib & novashell.
 
Before you start trying to build anything run: sudo apt-get install build-essential

from a command prompt. If you like Vim instead of Vi: sudo apt-get install vim - just something I like to do.

Good luck!
 
Thanks for the tips.

(I won't be using any command-line text editors though, that's for sure!)

(regarding sticky keyboard keys - not relevant to the project!)
I've come across a pretty major snag at the moment.

My laptop has a pretty sticky W key. In fact it was so bad I had to take the key completely off. Even then though it likes to hammer itself, happily pasting Ws all over my screen. I have no idea what's causing it. In windows I've managed to disable the key in the registry, and re-assign it to another key.

Is the a way of disabling it in Ubuntu? Preferably a shell script, as I when my keyboard is in W mode clicking on menus isn't really a possibility (I could probably manage a double click on a shell script though).

I'm planning on getting a USB keyboard but that's not really gonna solve the issue as the built in one can't be disabled in the BIOS. :(
 
(regarding sticky keyboard keys - not relevant to the project)
Ok thanks that's worked a treat. I've made a script to do that. Now, I'm going to have to call that script at startup, ideally as early as possible. So where should I call it from?
 
Pleng,
I'm honestly not sure. I'm actually surprised that if you used the GUI way of doing things it didn't remember it. You'll either need to make your script an init script, bleh, or lookup what Gnome uses as the equivalent of its startup folder or .rc file. (I use KDE.) Of find a way to make the GUI reload your preferences.
 
(regarding sticky keyboard keys - not relevant to the project)
I didn't use the GUI. I made a shellscript.

Nevermind I can run it from the desktop each time I start up. Ideally I'd run it before GNOME loads so I'd be able to set Ubuntu to log in with a password (if I try and do that now I have the W problem).

But as I'm probably only going to be using Linux to try and compile Novashell it's no big issue.

Thanks for all your help so far. Now, on to trying to compile!
 
The game creator is part of the game engine itself so, yes, games would be able to run on the Pandora. In fact, the game creator itself won't be much use on the Pandora as the interface wont be useable on the Pandora's resolution.

The idea behind the port is to enable Novashell created games to run on the Pandora. They will need to be created on a bigger computer.
 
OK good but please dont get your hopes up - this is a massive task being undertaken by somebody with no experience in porting! :D

Anyway won't be able to work on it for next couple of days. Will update with progress when I have some.
 
Pleng said:
OK good but please dont get your hopes up - this is a massive task being undertaken by somebody with no experience in porting! :D

Anyway won't be able to work on it for next couple of days. Will update with progress when I have some.

Not to dampen your enthusiasm or anything, but for interests sake I had a look at this last night and it is horrifying.
Taking the approach of "compile it under Linux on my desktop and then try a port", I found:

  • The compile instructions refer to Clanlib 1.0 and the source refers to ClanLib 0.8 (you have to hack on Makefile.am to get this working at all)
  • None of the included dependencies compile for several reasons

Box2d and linearparticle have issues with missing headers.
luabind can't find boost
etc. etc.

Here is a patch for the box2d stuff: http://pastebin.com/ZG529b87
And for linearparticle: http://pastebin.com/THkhD0hF

Lua is missing config.h.in, copying the one from the luabind dir seems to work

And I can't get luabind to seem to work.

In essence the source tree is a load of crap.

I would suggest possibly getting the dependencies (apart from box2d and linearparticle) compiled from their original source (this did work for me) and hacking the appropriate bits to refer to these 'clean' builds.

You have a long, hard and interesting road ahead of you... :)
-(e)
 
Last edited by a moderator:
More info:

Download and compile boost, lua and luabind separately.

Luabind can be compiled with the command "bjam install link=static variant=release". Obviously you will need bjam.
lua with "sudo make install"

Apply this patch: http://pastebin.com/pHiWDjvs
to the novashell/clanlibstuff/novashell/source dir.

I can't spend too much more on this, but if you apply the patches you will at least get to a compile,
-(e)
 
Back
Top