Future of Oolite what do you think?

General discussion for players of Oolite.

Moderators: winston, another_commander

User avatar
Geraldine
Deadly
Deadly
Posts: 203
Joined: Tue May 08, 2012 8:39 pm
Location: Sunny Scotland. Anarchy System Tech Level 0 No Police Presence. Enter At Own Risk!

Re: Future of Oolite what do you think?

Post by Geraldine »

No matter how good "ED" is or might be, I will never give up Oolite, Pioneer or FFE3D. I love them all! :D Heck, I still play Amiga Elite and Frontier quite regularly too :wink:

One thing though (hate to mention it truth be told) say......the kickstarter fails, yes, yes I know heresy especially from me with my bright green signature and all :oops: . What are we left with? What we started with! :wink:
Geraldine
Elite IV Is Released. Now Keeping The Faith in Oolite, Pioneer & FFE3D :D
User avatar
drew
---- E L I T E ----
---- E L I T E ----
Posts: 2190
Joined: Fri May 19, 2006 9:29 am
Location: In front of a laptop writing a book.
Contact:

Re: Future of Oolite what do you think?

Post by drew »

Geraldine wrote:
No matter how good "ED" is or might be, I will never give up Oolite, Pioneer or FFE3D. I love them all! :D Heck, I still play Amiga Elite and Frontier quite regularly too :wink:

One thing though (hate to mention it truth be told) say......the kickstarter fails, yes, yes I know heresy especially from me with my bright green signature and all :oops: . What are we left with? What we started with! :wink:
I agree. Elite gave me a lot back in the day, escapism for a geeky misfit kid primarily. Frontier appealed to my Astronomically accurate side and the sense of space and exploration. Oolite give me an outlet for my books and a fabulous retro-esque game to boot, not to mention this wonderful community from which I've made some actual real life friends too. Pioneer and FFE3D feed the old sense of scale with pretty graphics. If E:D comes to fruition I will definitely buy and play, but I won't forget parts of the journey. The only way is up... :)

Cheers,

Drew.
Drew is an author of SF and Fantasy Novels
WebsiteFacebookTwitter
User avatar
Cody
Sharp Shooter Spam Assassin
Sharp Shooter Spam Assassin
Posts: 16081
Joined: Sat Jul 04, 2009 9:31 pm
Location: The Lizard's Claw
Contact:

Re: Future of Oolite what do you think?

Post by Cody »

drew wrote:
Elite gave me a lot back in the day
Oh yes indeed!
Coyote wrote:
Elite is not a kill-count! Elite is a state of mind!
I would advise stilts for the quagmires, and camels for the snowy hills
And any survivors, their debts I will certainly pay. There's always a way!
User avatar
ClymAngus
---- E L I T E ----
---- E L I T E ----
Posts: 2514
Joined: Tue Jul 08, 2008 12:31 am
Location: London England
Contact:

Re: Future of Oolite what do you think?

Post by ClymAngus »

DaddyHoggy wrote:
Gimbal Locke wrote:
pagroove wrote:
So anyone who pledges jus ask on David that he plays Oolite (with OXP's) for a bit of inspiration. :wink:
Sometimes I wonder if David Braben or Ian Bell are not here already, hiding behind some innocuous alias.

We are, after all, their "fan base". :wink:
Ian Bell has been on the site for almost two years - and yes it's the real him given the joining email address - I suspect he lurks though, if he visits at all, given he wandered around the site for an hour after joining but hasn't logged on since.
We you know gents if a load of christmas presents get delivered to your door from "no one in particular" one year. (kind of like a charitable flash mob event) the least you can do is pop along and not even say hello but have a look around.

He strikes me as a man who has PLENTY to occupy his considerable mind. He said hello (in spirit if not in form) and considering how heated the legal side of all this got back in the day. I find his response to heartfelt thanks to be completely apt. At least one of the gods is a benevolent one, I'm still not so sure about the other. :D
User avatar
Selezen
---- E L I T E ----
---- E L I T E ----
Posts: 2530
Joined: Tue Mar 29, 2005 9:14 am
Location: Tionisla
Contact:

Re: Future of Oolite what do you think?

Post by Selezen »

drew wrote:
I won't forget parts of the journey.
I think that sums up my thoughts on Elite quite concisely. Elite started off as a game for me, a way to get away from the "play until you die" method of things like Space Invaders. It was my first real exposure to roleplaying as I took on the role of that Cobra pilot.

Given that I went through University as a roleplayer then carried that on to my adult working life (my current job is the only one I haven't started some sort of roleplay group in) then it could be said that Elite opened my mind to something that has affected my entire life and made it that little bit happier.

Oolite is the extension of that, bringing the Elite journey full circle - back to its roots as it were. E:D may be a hot or it may be a miss - if it's more in the Frontier area then it will be a miss for me and Oolite will still be firmly number one. If E:D is more like Elite then it might (might) get some attention but it'll never, even with the multiplayer aspects, duplicate the sense of being part of something that Oolite and its forum have.

I'm going nowhere. Sorry. ;-)
User avatar
Davespice
Above Average
Above Average
Posts: 23
Joined: Tue May 01, 2012 3:45 pm

Re: Future of Oolite what do you think?

Post by Davespice »

ClymAngus wrote:
I leave you with this thought. David created the raspberry PI to make access to computers affordable so there is a possibility of a second Renascence in programming. Give the children the toys and they WILL play. We have a game, but that's just there to get people interested. The REAL game is the sand box.
ClymAngus, I am glad someone else feels the same as I. Some of you here may not agree but the Raspberry Pi computer has been regarded as the IT equivalent of Glastonbury tickets over the past 12 months. I have read that there is an estimated 700,000 of them in the wild now. So they are probably going to be turning up in the stockings of many a child up and down the country this Christmas. James May from Top Gear even has one! =)

A lot of the kids receiving these things are likely to be coming from the background of Windows PCs and games consoles. I would suggest a priority is that they become educated in the entire ethos of the open source mind set. I think Oolite is tremendously well equipped to do exactly this. An open source game, where they can modify and create the content.
spara wrote:
By profession, I see a huge potential in using Oolite as an educational programming tool. Stepping into a world of programming can't be much easier. And you almost instantly see the effects in game. Amazing. Currently my mind is racing to find a way to use Oolite in my day job. I think it's safe to say that it's much more appealing to start modding a REAL 3D space game that trying to print "Hello World!" in a command prompt.
I couldn’t agree with spara more. This lends weight to my points above about the Raspberry Pi. I think the kids would probably start off by just playing it, but then tentatively dipping their toes into the world of OXPs and what have you. Along the way they will accumulate a huge amount of general IT experience and knowledge which is actually quite a good road to go down where they will eventually arrive at programming. They’ll hit some kind of limitation of what they want to do with the editing tools and realise that they only way to create what they want is to open the code and program it.

I have always found that you can easily learn a new programming language if you have to use it “in anger” for something. I don’t mean programming while angry, I mean that you have some kind of real word necessity that you’re trying to fulfil. That gives you the motivation and the desire to push on and keep learning. If the kids have that... they’re going to become great programmers.
Smivs wrote:
Many a good player has abandoned any pretence to play the game in favour of the seduction of making OXPs, myself included. I probably haven't actually played for several months now. :D
Interesting to learn this. I myself might have to dip my toe in at some point, but first I might try out some of the content you have all made.

So... there is one fatal flaw in what I have been saying above. Oolite will not run on the Raspberry Pi. Two reasons, one is probably memory footprint (although not sure). The other is that an Open GL to Open GL ES graphics library conversion would be required. So we have to ask ourselves if the community is actually interested in doing this or not. If not, I’ll go away and be quiet, otherwise I’m going to carry on banging this drum. I feel very strongly about this. In essence I think Oolite on the Raspberry Pi = more programmers in the future available for industry (which is one of the core goals of the Raspberry Pi project).

Just note about the code base for Oolite. In all seriousness doing a Open GL ES port would also open it up to other platforms besides the Pi (i.e. Android and or iOS). It may be necessary to create a branch of the main Trunk for the Pi though. Model conversion would also be required as Open GL ES only allows triangles (you can convert the model data when reading it from the file programmatically though, so that would prevent branching the data). Memory footprint might be a bit of a problem though, as the Pi only has 256 MB of ram that is split between system and gpu. In terms of graphics performance the Pi is actually quite powerful, the gpu it has is not in any commercial devices yet, so I would imagine that it could easily cope with Oolite in 1920x1080.

What do people think? If I’m becoming annoying just let me know and I’ll shut up :)

Edit:
By the way I just thought I would add... I am willing to help port the code. I haven’t got any experience with the Oolite code base but I have done a bit of stuff with Open GL ES on the Pi. I have also done some work with model conversion. If, perhaps, someone could provide me a cut down version of the code where there is just one, textured, model spinning on the screen or something – I am fairly confident I could convert that to work properly on the Pi. You could maybe then do a diff on it to see how much stuff I changed and then you can get an idea of how much work it would be?
Image
User avatar
Tricky
---- E L I T E ----
---- E L I T E ----
Posts: 821
Joined: Sun May 13, 2012 11:12 pm
Location: Bradford, UK. (Anarchic)

Re: Future of Oolite what do you think?

Post by Tricky »

Am I missing something? I thought all models for Oolite had to be triangulated.
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Future of Oolite what do you think?

Post by JensAyton »

Tricky wrote:
Am I missing something? I thought all models for Oolite had to be triangulated.
Yes. There are significant issues with porting to OpenGL ES (and the RAM issue), but triangles are not among them.
User avatar
Tricky
---- E L I T E ----
---- E L I T E ----
Posts: 821
Joined: Sun May 13, 2012 11:12 pm
Location: Bradford, UK. (Anarchic)

Re: Future of Oolite what do you think?

Post by Tricky »

JensAyton wrote:
Tricky wrote:
Am I missing something? I thought all models for Oolite had to be triangulated.
Yes. There are significant issues with porting to OpenGL ES (and the RAM issue), but triangles are not among them.
It's just everyone keeps quoting triangulation as one of the main problems. Obviously RAM on the RPi is a big issue. Also having done a quick search, one of the major problems seems to be a rewrite of the vertex/fragment shader pipeline.
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: Future of Oolite what do you think?

Post by JensAyton »

And the way we submit vertices. And the way we manage state. Basically everything except triangles. :-) (Actually, there are thirty different places where we use quads, for text and stars and special effects and stuff, and those would have to be turned into triangle pairs. But that’s still no big deal.)
Duggan
---- E L I T E ----
---- E L I T E ----
Posts: 496
Joined: Sat Dec 31, 2011 2:58 pm

Re: Future of Oolite what do you think?

Post by Duggan »

The very reason that I was delighted to discover Oolite is because I was majorly influenced by the game Elite that came out sometime in the last century. It was wire framed graphic dependent, loaded up on a cassette on what was a ZX Spectrum hooked up to a portable TV.. Unutterably primitive..but back then..as cutting edge and immersive as you like.

Then it went... Gone caput, no more.

Stuff happened, Italian Plumbers, Speeding Hedgehogs,Machine Gun Heiress Archeologists..None of them were Elite... Elite drifted into the mists and myths of computer gaming..

I googled Elite, with a limply held hope that I might be able to get such a simple , primitive , wire framed game to play on my PC. I noted that there had been some evolutions(which I have not played) Frontier Elite, Elite 2.

Non seemed to be available for down load, but I sort of got pointed to a playable game for PC called Oolite, which in it's core seems the self same as Elite.. Oh the wire frames have gone and all the oxp's to better add realism do not detract from the core principle and objective of the game Elite.. So what I am saying is..

I wanted a brilliant game that I used to have.. Thanks to Oolite I have achieved that goal. I now have better looking and more realistic graphics. Any progression in this already wonderfully addictive game can only really benefit(in my opinion) from further improved graphics..Any change to the game play would make it a different game . :)
Flying Python Class Cruiser, Chapter & Verse IV
User avatar
Davespice
Above Average
Above Average
Posts: 23
Joined: Tue May 01, 2012 3:45 pm

Re: Future of Oolite what do you think?

Post by Davespice »

Tricky wrote:
It's just everyone keeps quoting triangulation as one of the main problems. Obviously RAM on the RPi is a big issue. Also having done a quick search, one of the major problems seems to be a rewrite of the vertex/fragment shader pipeline.
Sorry I just assumed all the models would have loads of quads and stuff in them. It’s not a big issue anyway as model conversion can be done in code quite easily on the fly. I may be getting a bit out of my depth here but does Oolite have its own shader pipeline or does it just use the default Open GL one? If it does just use the Open GL one then it could be possible to port it to Open GL ES 1.2 as this has a fixed standard pipeline similar to that of Open GL. Open GL ES 2 though has the programmable pipeline that I believe you do need to implement yourself.

Below is a really simple Raspberry Pi Open GL ES 1.2 program that just displays a spinning icosahedron so you can see how the vertices / colours etc are submitted to ogl. No textures involved here. Not sure if this is helpful? See the drawView method.

And about memory foot print... I’m getting ready to dodge rotten tomatoes but, what if we went without any textures to start with? Would that reduce the memory footprint a lot or no?

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include <unistd.h>

#include "bcm_host.h"

#include "GLES/gl.h"
#include "EGL/egl.h"
#include "EGL/eglext.h"
#include "OpenGLCommon.h"

#define PATH "./"

#define IMAGE_SIZE 128

#ifndef M_PI
   #define M_PI 3.141592654
#endif

typedef struct
{
	uint32_t screen_width;
	uint32_t screen_height;
	// OpenGL|ES objects
	EGLDisplay display;
	EGLSurface surface;
	EGLContext context;
} STATE_T;

static float DegreesToRadians(float degrees);
static void setupView(STATE_T *state);
static void drawView(STATE_T *state);
static void exit_func(void);
static volatile int terminate;
static STATE_T _state, *state=&_state;
    
static const Vertex3D vertices[]= {
	{0, -0.525731, 0.850651},             // vertices[0]
	{0.850651, 0, 0.525731},              // vertices[1]
	{0.850651, 0, -0.525731},             // vertices[2]
	{-0.850651, 0, -0.525731},            // vertices[3]
	{-0.850651, 0, 0.525731},             // vertices[4]
	{-0.525731, 0.850651, 0},             // vertices[5]
	{0.525731, 0.850651, 0},              // vertices[6]
	{0.525731, -0.850651, 0},             // vertices[7]
	{-0.525731, -0.850651, 0},            // vertices[8]
	{0, -0.525731, -0.850651},            // vertices[9]
	{0, 0.525731, -0.850651},             // vertices[10]
	{0, 0.525731, 0.850651}               // vertices[11]
};
    
static const Color3D colors[] = {
	 {1.0, 0.0, 0.0, 1.0},
	 {1.0, 0.5, 0.0, 1.0},
	 {1.0, 1.0, 0.0, 1.0},
	 {0.5, 1.0, 0.0, 1.0},
	 {0.0, 1.0, 0.0, 1.0},
	 {0.0, 1.0, 0.5, 1.0},
	 {0.0, 1.0, 1.0, 1.0},
	 {0.0, 0.5, 1.0, 1.0},
	 {0.0, 0.0, 1.0, 1.0},
	 {0.5, 0.0, 1.0, 1.0},
	 {1.0, 0.0, 1.0, 1.0},
	 {1.0, 0.0, 0.5, 1.0}
};
    
static const GLubyte icosahedronFaces[] = {
	1, 2, 6,
	1, 7, 2,
	3, 4, 5,
	4, 3, 8,
	6, 5, 11,
	5, 6, 10,
	9, 10, 2,
	10, 9, 3,
	7, 8, 9,
	8, 7, 0,
	11, 0, 1,
	0, 11, 4,
	6, 2, 10,
	1, 6, 11,
	3, 5, 10,
	5, 4, 11,
	2, 7, 9,
	7, 1, 0,
	3, 9, 8,
	4, 8, 0,
};

//==============================================================================

static void init_ogl(STATE_T *state)
{
	int32_t success = 0;
	EGLBoolean result;
	EGLint num_config;

	static EGL_DISPMANX_WINDOW_T nativewindow;

	DISPMANX_ELEMENT_HANDLE_T dispman_element;
	DISPMANX_DISPLAY_HANDLE_T dispman_display;
	DISPMANX_UPDATE_HANDLE_T dispman_update;
	VC_RECT_T dst_rect;
	VC_RECT_T src_rect;

	static const EGLint attribute_list[] =
	{
		EGL_RED_SIZE, 8,
		EGL_GREEN_SIZE, 8,
		EGL_BLUE_SIZE, 8,
		EGL_ALPHA_SIZE, 8,
		EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
		EGL_NONE
	};

	EGLConfig config;

	// get an EGL display connection
	state->display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
	assert(state->display!=EGL_NO_DISPLAY);

	// initialize the EGL display connection
	result = eglInitialize(state->display, NULL, NULL);
	assert(EGL_FALSE != result);

	// get an appropriate EGL frame buffer configuration
	result = eglChooseConfig(state->display, attribute_list, &config, 1, &num_config);
	assert(EGL_FALSE != result);

	// create an EGL rendering context
	state->context = eglCreateContext(state->display, config, EGL_NO_CONTEXT, NULL);
	assert(state->context!=EGL_NO_CONTEXT);

	// create an EGL window surface
	success = graphics_get_display_size(0 /* LCD */, &state->screen_width, &state->screen_height);
	assert( success >= 0 );

	dst_rect.x = 0;
	dst_rect.y = 0;
	dst_rect.width = state->screen_width;
	dst_rect.height = state->screen_height;

	src_rect.x = 0;
	src_rect.y = 0;
	src_rect.width = state->screen_width << 16;
	src_rect.height = state->screen_height << 16;

	dispman_display = vc_dispmanx_display_open( 0 /* LCD */);
	dispman_update = vc_dispmanx_update_start( 0 );

	dispman_element = vc_dispmanx_element_add ( dispman_update, dispman_display,
	0/*layer*/, &dst_rect, 0/*src*/,
	&src_rect, DISPMANX_PROTECTION_NONE, 0 /*alpha*/, 0/*clamp*/, 0/*transform*/);

	nativewindow.element = dispman_element;
	nativewindow.width = state->screen_width;
	nativewindow.height = state->screen_height;
	vc_dispmanx_update_submit_sync( dispman_update );

	state->surface = eglCreateWindowSurface( state->display, config, &nativewindow, NULL );
	assert(state->surface != EGL_NO_SURFACE);

	// connect the context to the surface
	result = eglMakeCurrent(state->display, state->surface, state->surface, state->context);
	assert(EGL_FALSE != result);
}

//==============================================================================

static float DegreesToRadians(float degrees)
{
	return degrees * M_PI / 180;
}

//==============================================================================

const float zNear = 0.01f, zFar = 1000.0f, fieldOfView = 45.0f;

static void setupView(STATE_T *state)
{
	glEnable(GL_DEPTH_TEST);
	glMatrixMode(GL_PROJECTION);
	
	float aspectRatio = (float)state->screen_width / (float)state->screen_height;
/*	
	glOrthof(-1.0f, // Left
              1.0f, // Right
             -1.0f / aspectRatio, // Bottom
              1.0f / aspectRatio, // Top
              zNear, // Near
              zFar); // Far
*/
	float size = zNear * tanf(DegreesToRadians(fieldOfView) / 2.0);
/*
	//Use size for left and right but make the top and bottom smaller by dividing by the aspect ratio
	glFrustumf(-size, // Left
              size, // Right
             -size / aspectRatio, // Bottom
              size / aspectRatio, // Top
              zNear, // Near
              zFar); // Far
*/
	//Use size for top and bottom but make the left and right larger by multiplying by the aspect ratio - I like this more, gives a bigger frustum
	glFrustumf(-size * aspectRatio, // Left
              size * aspectRatio, // Right
             -size, // Bottom
              size, // Top
              zNear, // Near
              zFar); // Far
	glViewport(0, 0, (GLsizei)state->screen_width, (GLsizei)state->screen_height);

	glMatrixMode(GL_MODELVIEW);
	glEnable(GL_CULL_FACE);
	
	glLoadIdentity();
	glTranslatef(0.0f, 0.0f, -3.0f);
}
//==============================================================================

static GLfloat rot = 0.5;

static void drawView(STATE_T *state)
{    
	glRotatef(rot,1.0f,1.0f,1.0f);
	glClearColor(0.7, 0.7, 0.7, 1.0);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_COLOR_ARRAY);

	glVertexPointer(3, GL_FLOAT, 0, vertices);
	glColorPointer(4, GL_FLOAT, 0, colors);

	glDrawElements(GL_TRIANGLES, 60, GL_UNSIGNED_BYTE, icosahedronFaces);

	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_COLOR_ARRAY);

	eglSwapBuffers(state->display, state->surface);
}

//==============================================================================

static void exit_func(void)
{
	// clear screen
	glClear( GL_COLOR_BUFFER_BIT );
	eglSwapBuffers(state->display, state->surface);

	// Release OpenGL resources
	eglMakeCurrent( state->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
	eglDestroySurface( state->display, state->surface );
	eglDestroyContext( state->display, state->context );
	eglTerminate( state->display );

	printf("closed\n");
}

//==============================================================================

int main ()
{
	bcm_host_init();

	// Clear application state
	memset( state, 0, sizeof( *state ) );

	// Start OGLES
	init_ogl(state);
	setupView(state);
	
	while (!terminate)
	{
		//usleep(5*1000);
		drawView(state);
	}
	
	exit_func();
	return 0;
}
Image
User avatar
Commander McLane
---- E L I T E ----
---- E L I T E ----
Posts: 9520
Joined: Thu Dec 14, 2006 9:08 am
Location: a Hacker Outpost in a moderately remote area
Contact:

Re: Future of Oolite what do you think?

Post by Commander McLane »

Davespice wrote:
And about memory foot print... I’m getting ready to dodge rotten tomatoes but, what if we went without any textures to start with? Would that reduce the memory footprint a lot or no?
Back to wireframe?

If the assumption is correct that the kids today are mainly attracted by eye-candy, this might not be the way forward.

Part of Elite's attraction back in the day was that it was graphically ground-breaking (smooth vector graphics, hidden-line-removal!). I think that if you want to lure young people into programming by using Oolite, you have to give them candy, not take it away.
User avatar
Davespice
Above Average
Above Average
Posts: 23
Joined: Tue May 01, 2012 3:45 pm

Re: Future of Oolite what do you think?

Post by Davespice »

Commander McLane wrote:
Back to wireframe?
Coloured / shaded polygons I meant (like Arc Elite). I’m not looking to damage the game, I’m just trying to think of ways that we could fit the game inside the limited memory footprint that the Raspberry Pi has :?
The other option is to reduce the texture resolution maybe? I don’t know if I am barking up the wrong tree here anyway as it could be that the memory requirement isn’t just for textures but for other game engine stuff in which case we can’t get away without it.

Image

Of course they could just play Arc Elite on the Pi using an emulator. But the Pi has a lot of pixel pushing power that would never be used then.
Image
NigelJK
Deadly
Deadly
Posts: 208
Joined: Tue Feb 16, 2010 5:07 pm
Location: Stockport, England

Re: Future of Oolite what do you think?

Post by NigelJK »

Didn't see this thread until now (tad busy).
When I found oolite it was like finding an old friend, who'd grown wise in old age. Oolite is everything I ever wanted Elite to be. One of the reasons I still run a risc pc is because for many years it was the only kit that would run a decent version. If the uber-guru's here can get it running on the Raspberry It'll take that platform and this 'game' to new heights, without losing any membership to the new game (it's unlikely to be ported to that platform for quiet a while).

The new game is an unknown. I do think we might be in a 'Lennon and McCartney' situation. Both Bell and Brabham are good at what they do, but was the partnership more than the 'sum of it parts', time will tell. Whatever happens it should be viewed as a new game which will either hold up on it's own or disappear into obscurity.
Post Reply