Gridwars Inspired Game?


Mr.Confuzed said:
Monk said:
If anyone wants to improve on the basic ball/sphere model - please do!
...
Oops - and I forgot we were meant to be trimming down to only tris. Which will increase the poly count... I'll get back to it anon if no-one beats me to it.
How about this?:
http://sketchup.google.com/3dwarehouse/details?mid=5b4a13e3f88b6bf5277223f922af2930&prevstart=0

Yup, that looks pretty darned good. Another shape I like from there is this one:

http://sketchup.google.com/3dwarehouse/details?mid=511e4a7866af0036d5b6ae85c780f6fc&ct=mdrm&prevstart=0

which looks nicely funky IMHO :D
 
Last edited by a moderator:
torpor said:
Monk: Don't worry about the OBJ importer, I'll just work out how to convert the models by hand and bash out a little awk or python script to take your details and plug it into something that can easily be implemented as a GLES 1.1 model for the WakeBreaker engine .. I'd sure like to hear other programmers thoughts on this too, so have a look at the code and read this thread and send us your suggestions!

Okeydokey. It's a pity you haven't managed to get further yet, but as you can probably guess my coding skills are so rusty it's like they were seperated at birth from the Titanic :(

Actually, this is one thing that Pandora was meant to help with - help provide me with motivation and stuff for getting back into doing more coding, and doing more with Python than I have been to date (or starting with Qt). But I pretty much need a "simpleton's programming setup" to get started with, and be able to produc PC/Pandora cross-platform. That's hard to test without a Pandora.

I may tinker with a few models that will be easier to make with Quads than tris on the basis that I quite enjoy making these simplistic models. Taking a 2D idea and re-imagining it is quite fun... for example, if we take the "concentric squares" image from GridWars - the graphic that spawns loads of "pnkpinwheels" - we could easily extend that to this:

2n72x6h.jpg


which can, rather conveniently, be rotated to reveal this:

2uzt3qh.jpg


Making basic shapes like this isn't much hassle, if I stop before we get to triangulating or doing the Uv Mapping, and may cut down time on producing stuff later if you need it for this, or I use them for something else.

Which reminds me - it'd obviously be an extra step, but if another format is preferable I could export these models to something else... I've a dazzling array of conversion software somewhere, but just using my ancient copy of Cinema4D (which these were built in) I could export to:

2z9f9er.jpg


.OBJ is just my preferred format because I'm more familiar with it/tend to use it more than any other (which also means if you want one of the other formats - you're pretty much on your own if you come across "issues" caused by the format/exporting).

Ta
 

Attachments

  • 2n72x6h.jpg
    2n72x6h.jpg
    109.6 KB · Views: 75
  • 2uzt3qh.jpg
    2uzt3qh.jpg
    79.5 KB · Views: 81
  • 2z9f9er.jpg
    2z9f9er.jpg
    26 KB · Views: 73
Last edited by a moderator:
It's a pity you haven't managed to get further yet

Well, I *did* get the engine ready for PandoraOS by porting it to Touchbook, and thus it does give us a real indicator of how much performance we can expect out of our lovely little OMAP. Maybe I need to do a demo video tonight, after I've had another chance to play with integrating your models into the engine ..

BTW, I'm really not sure what is the 'best' model format to use for this project, I will try to take what you've done already, but if you feel like exporting the whole model collection to DXF it would be useful for me since I can try to write a script to automate the conversion/code-generation process. Its something I have to dig deeper into, and I'll do that during tonights hacking session .. stay tuned.

BTW, anyone else thats interested in this project got a Beagleboard/Touchbook/Pandora? How about the PowerVR SDK, so that we could build the sources and make it easier for Monk to get a realistic idea of his models by plugging them into the engine, right away?
 
torpor said:
Well, I *did* get the engine ready for PandoraOS by porting it to Touchbook, and thus it does give us a real indicator of how much performance we can expect out of our lovely little OMAP. Maybe I need to do a demo video tonight, after I've had another chance to play with integrating your models into the engine ..

Oh, don't take me too harshly - I don't mean to deminish what you HAVE done, just moan that it's not IMMEDIATELY helpful to me ;)

Talking about being helpful, is this link any use to you?

http://iphonedevelopment.blogspot.com/2009/03/wavefront-obj-loader-open-sourced-to.html

I read somewhat before getting there, and started to read that post too, but got bored as I'm not likely to crank out a compiler today anyway (don't have a modern compiler actually so I'd need to find one before I could install it - I really have coded SQUAT in the last decade).

Not going to achieve much towards this today judging by the way it's going today anyway - a couple of screen caps (posted above) might be all I get done! LOL.
 
Last edited by a moderator:
Hi folks, I'd really like to help with this but audio is all I do, if you need some extra music tracks/sound effects let me know, I like torpor have a room full of synth's so if you need any extra drop me a line, thanks Darrell :)
 
Monk said:
torpor said:
Monk: Don't worry about the OBJ importer, I'll just work out how to convert the models by hand and bash out a little awk or python script to take your details and plug it into something that can easily be implemented as a GLES 1.1 model for the WakeBreaker engine .. I'd sure like to hear other programmers thoughts on this too, so have a look at the code and read this thread and send us your suggestions!

Okeydokey. It's a pity you haven't managed to get further yet, but as you can probably guess my coding skills are so rusty it's like they were seperated at birth from the Titanic :(

Actually, this is one thing that Pandora was meant to help with - help provide me with motivation and stuff for getting back into doing more coding, and doing more with Python than I have been to date (or starting with Qt). But I pretty much need a "simpleton's programming setup" to get started with, and be able to produc PC/Pandora cross-platform. That's hard to test without a Pandora.

I may tinker with a few models that will be easier to make with Quads than tris on the basis that I quite enjoy making these simplistic models. Taking a 2D idea and re-imagining it is quite fun... for example, if we take the "concentric squares" image from GridWars - the graphic that spawns loads of "pnkpinwheels" - we could easily extend that to this:

2n72x6h.jpg


which can, rather conveniently, be rotated to reveal this:

2uzt3qh.jpg


Making basic shapes like this isn't much hassle, if I stop before we get to triangulating or doing the Uv Mapping, and may cut down time on producing stuff later if you need it for this, or I use them for something else.

Which reminds me - it'd obviously be an extra step, but if another format is preferable I could export these models to something else... I've a dazzling array of conversion software somewhere, but just using my ancient copy of Cinema4D (which these were built in) I could export to:

2z9f9er.jpg


.OBJ is just my preferred format because I'm more familiar with it/tend to use it more than any other (which also means if you want one of the other formats - you're pretty much on your own if you come across "issues" caused by the format/exporting).

Ta

Just a note. If you find yourself needing to export to a format your software can't, the sky's the limit between my home and work machines. Deep Exploration and Polytrans are just two of many packages I use on a daily basis.
 

Attachments

  • 2n72x6h.jpg
    2n72x6h.jpg
    109.6 KB · Views: 82
  • 2uzt3qh.jpg
    2uzt3qh.jpg
    79.5 KB · Views: 74
  • 2z9f9er.jpg
    2z9f9er.jpg
    26 KB · Views: 83
Last edited by a moderator:
Okay, a *little* progress to report .. I haven't had much time for hacking this weekend, Dad duties and all that, but I took an hour to do something on this project at least tonight before I have to start the mad work week tomorrow ..

So .. I have gotten two of your models integrated into the engine, worked out how to use them, so at least the process of using the models and turning them into something the engine can use has been run through, twice now:

pandoraGWProject_firstmodels.png


Some things to note:

1. The camera angle is not quite right, just wanted to get it 'up there' so I can see.

2. The texture maps are not integrated yet. Old textures in use.

3. There are three ship models and one rotor model in this picture.. all else is still WakeBreaker models.

4. The process to integrate the models started like this:

** Save the files you posted as .OBJ files

** Set up a Blender scene.

** Import each OBJ file into Blender

** Use the Blender "export to Objective-C" script to output a temporary header file, which after I hacked it up a bit with some dodgy glue code, looked like this (for the rotor model, for example):

Code:
#include <types.h>
#include <bfd.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>

typedef int int32;

//float to fixed point
#define FTOX(x) ( (int32)((x) * 65536) )


struct TexturedVertexData3D rotor02vdata[] = {
	{/*v:*/{-0.222222, -0.111111, 0.011111}, /*n:*/{0.138707, -0.194189, 0.971099}, /*t:*/{0.025000, 0.737500}},
	{/*v:*/{-0.222222, -0.222222, -0.011111}, /*n:*/{0.138707, -0.194189, 0.971099}, /*t:*/{0.025000, 0.975000}},
	{/*v:*/{-0.027778, -0.027778, 0.000000}, /*n:*/{-0.179571, -0.302622, 0.936033}, /*t:*/{0.440624, 0.559376}},
	{/*v:*/{-0.222222, 0.222222, -0.011111}, /*n:*/{-0.194189, -0.138707, 0.971099}, /*t:*/{0.025000, 0.025000}},
	{/*v:*/{-0.027778, 0.027778, 0.000000}, /*n:*/{-0.302622, 0.179571, 0.936033}, /*t:*/{0.440624, 0.440624}},
	{/*v:*/{-0.111111, 0.222222, 0.011111}, /*n:*/{-0.194189, -0.138707, 0.971099}, /*t:*/{0.262500, 0.025000}},
	{/*v:*/{0.027778, 0.027778, 0.000000}, /*n:*/{0.179571, 0.302622, 0.936033}, /*t:*/{0.559376, 0.440624}},
	{/*v:*/{0.222222, 0.111111, 0.011111}, /*n:*/{-0.138707, 0.194189, 0.971099}, /*t:*/{0.975000, 0.262500}},
	{/*v:*/{0.222222, 0.222222, -0.011111}, /*n:*/{-0.138707, 0.194189, 0.971099}, /*t:*/{0.975000, 0.025000}},
	{/*v:*/{0.027778, -0.027778, 0.000000}, /*n:*/{0.302622, -0.179571, 0.936033}, /*t:*/{0.559376, 0.559376}},
	{/*v:*/{0.111111, -0.222222, 0.011111}, /*n:*/{0.194189, 0.138707, 0.971099}, /*t:*/{0.737500, 0.975000}},
	{/*v:*/{0.222222, -0.222222, -0.011111}, /*n:*/{0.194189, 0.138707, 0.971099}, /*t:*/{0.975000, 0.975000}},
	{/*v:*/{0.000000, -0.000000, 0.022222}, /*n:*/{0.000000, 0.000000, 1.000000}, /*t:*/{0.500000, 0.500000}},
	{/*v:*/{-0.027778, -0.027778, 0.000000}, /*n:*/{-0.179571, -0.302622, 0.936033}, /*t:*/{0.440624, 0.559376}},
	{/*v:*/{0.027778, -0.027778, 0.000000}, /*n:*/{0.302622, -0.179571, 0.936033}, /*t:*/{0.559376, 0.559376}},
	{/*v:*/{-0.027778, 0.027778, 0.000000}, /*n:*/{-0.302622, 0.179571, 0.936033}, /*t:*/{0.440624, 0.440624}},
	{/*v:*/{-0.027778, -0.027778, 0.000000}, /*n:*/{-0.179571, -0.302622, 0.936033}, /*t:*/{0.440624, 0.559376}},
	{/*v:*/{0.000000, -0.000000, 0.022222}, /*n:*/{0.000000, 0.000000, 1.000000}, /*t:*/{0.500000, 0.500000}},
	{/*v:*/{-0.027778, 0.027778, 0.000000}, /*n:*/{-0.302622, 0.179571, 0.936033}, /*t:*/{0.440624, 0.440624}},
	{/*v:*/{0.000000, -0.000000, 0.022222}, /*n:*/{0.000000, 0.000000, 1.000000}, /*t:*/{0.500000, 0.500000}},
	{/*v:*/{0.027778, 0.027778, 0.000000}, /*n:*/{0.179571, 0.302622, 0.936033}, /*t:*/{0.559376, 0.440624}},
	{/*v:*/{0.000000, -0.000000, 0.022222}, /*n:*/{0.000000, 0.000000, 1.000000}, /*t:*/{0.500000, 0.500000}},
	{/*v:*/{0.027778, -0.027778, 0.000000}, /*n:*/{0.302622, -0.179571, 0.936033}, /*t:*/{0.559376, 0.559376}},
	{/*v:*/{0.027778, 0.027778, 0.000000}, /*n:*/{0.179571, 0.302622, 0.936033}, /*t:*/{0.559376, 0.440624}},
};

#define rotor02numi 24
// Drawing Code:// glEnableClientState(GL_VERTEX_ARRAY);
// glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// glEnableClientState(GL_NORMAL_ARRAY);
// glVertexPointer(3, GL_FLOAT, sizeof(TexturedVertexData3D), &rotor02vdata[0].vertex);
// glNormalPointer(GL_FLOAT, sizeof(TexturedVertexData3D), &rotor02vdata[0].normal);
// glTexCoordPointer(2, GL_FLOAT, sizeof(TexturedVertexData3D), &rotor02vdata[0].texCoord);
// glDrawArrays(GL_TRIANGLES, 0, kRotorblade001bUVNumberOfVertices);
// glDisableClientState(GL_VERTEX_ARRAY);
// glDisableClientState(GL_TEXTURE_COORD_ARRAY);
// glDisableClientState(GL_NORMAL_ARRAY);


void 	doRotor02()
{
	int i;


	printf("model->m_numVertices = %d;\n", rotor02numi);
	printf("model->m_numIndices = %d;\n", rotor02numi);
	printf("model->m_numColorData= %d;\n", 0);
	printf("model->m_numTexCoords = %d;\n", rotor02numi);

	for (i=0;i<rotor02numi;i++) {

		printf("\t//v.x: (%d) v.y: (%d) v.z: (%d)\tn.x: (%d) n.y: (%d) n.z: (%d)\tt.a: (%d) t.b: (%d)\n",
				FTOX(rotor02vdata[i].v.x),
				FTOX(rotor02vdata[i].v.y),
				FTOX(rotor02vdata[i].v.z),
				FTOX(rotor02vdata[i].n.x),
				FTOX(rotor02vdata[i].n.y),
				FTOX(rotor02vdata[i].n.z),
				FTOX(rotor02vdata[i].t.u),
				FTOX(rotor02vdata[i].t.v));

		printf("\tmodel->m_vertices[%d].x = (%d);\n\tmodel->m_vertices[%d].y = (%d);\n\tmodel->m_vertices[%d].z = (%d);\n",
				i,
				FTOX(rotor02vdata[i].v.x),
				i,
				FTOX(rotor02vdata[i].v.y),
				i,
				FTOX(rotor02vdata[i].v.z));

		printf("\tmodel->m_normals[%d].x = (%d);\n\tmodel->m_normals[%d].y = (%d);\n\tmodel->m_normals[%d].z = (%d);\n",
				i,
				FTOX(rotor02vdata[i].n.x),
				i,
				FTOX(rotor02vdata[i].n.y),
				i,
				FTOX(rotor02vdata[i].n.z));
	
}

	


	for (i=0;i<rotor02numi;i++) {


		printf("\tmodel->m_indices[%d] = %d;\n", i, i);
	}


	for (i=0;i<rotor02numi;i++) {
		printf("\tmodel->m_texCoords[%d].u = (%d);\n\tmodel->m_texCoords[%d].v = (%d);\n",
				i, 
				FTOX(rotor02vdata[i].t.u),
				i, 
				FTOX(rotor02vdata[i].t.v));


	}

}


This produced the following code that I could then easily plug into the existing sources:


Code:
model->m_numVertices = 24;
model->m_numIndices = 24;
model->m_numColorData= 0;
model->m_numTexCoords = 24;
	//v.x: (-14563) v.y: (-7281) v.z: (728)	n.x: (9090) n.y: (-12726) n.z: (63641)	t.a: (1638) t.b: (48332)
	model->m_vertices[0].x = (-14563);
	model->m_vertices[0].y = (-7281);
	model->m_vertices[0].z = (728);
	model->m_normals[0].x = (9090);
	model->m_normals[0].y = (-12726);
	model->m_normals[0].z = (63641);
	//v.x: (-14563) v.y: (-14563) v.z: (-728)	n.x: (9090) n.y: (-12726) n.z: (63641)	t.a: (1638) t.b: (63897)
	model->m_vertices[1].x = (-14563);
	model->m_vertices[1].y = (-14563);
	model->m_vertices[1].z = (-728);
	model->m_normals[1].x = (9090);
	model->m_normals[1].y = (-12726);
	model->m_normals[1].z = (63641);
	//v.x: (-1820) v.y: (-1820) v.z: (0)	n.x: (-11768) n.y: (-19832) n.z: (61343)	t.a: (28876) t.b: (36659)
	model->m_vertices[2].x = (-1820);
	model->m_vertices[2].y = (-1820);
	model->m_vertices[2].z = (0);
	model->m_normals[2].x = (-11768);
	model->m_normals[2].y = (-19832);
	model->m_normals[2].z = (61343);
	//v.x: (-14563) v.y: (14563) v.z: (-728)	n.x: (-12726) n.y: (-9090) n.z: (63641)	t.a: (1638) t.b: (1638)
	model->m_vertices[3].x = (-14563);
	model->m_vertices[3].y = (14563);
	model->m_vertices[3].z = (-728);
	model->m_normals[3].x = (-12726);
	model->m_normals[3].y = (-9090);
	model->m_normals[3].z = (63641);
	//v.x: (-1820) v.y: (1820) v.z: (0)	n.x: (-19832) n.y: (11768) n.z: (61343)	t.a: (28876) t.b: (28876)
	model->m_vertices[4].x = (-1820);
	model->m_vertices[4].y = (1820);
	model->m_vertices[4].z = (0);
	model->m_normals[4].x = (-19832);
	model->m_normals[4].y = (11768);
	model->m_normals[4].z = (61343);
	//v.x: (-7281) v.y: (14563) v.z: (728)	n.x: (-12726) n.y: (-9090) n.z: (63641)	t.a: (17203) t.b: (1638)
	model->m_vertices[5].x = (-7281);
	model->m_vertices[5].y = (14563);
	model->m_vertices[5].z = (728);
	model->m_normals[5].x = (-12726);
	model->m_normals[5].y = (-9090);
	model->m_normals[5].z = (63641);
	//v.x: (1820) v.y: (1820) v.z: (0)	n.x: (11768) n.y: (19832) n.z: (61343)	t.a: (36659) t.b: (28876)
	model->m_vertices[6].x = (1820);
	model->m_vertices[6].y = (1820);
	model->m_vertices[6].z = (0);
	model->m_normals[6].x = (11768);
	model->m_normals[6].y = (19832);
	model->m_normals[6].z = (61343);
	//v.x: (14563) v.y: (7281) v.z: (728)	n.x: (-9090) n.y: (12726) n.z: (63641)	t.a: (63897) t.b: (17203)
	model->m_vertices[7].x = (14563);
	model->m_vertices[7].y = (7281);
	model->m_vertices[7].z = (728);
	model->m_normals[7].x = (-9090);
	model->m_normals[7].y = (12726);
	model->m_normals[7].z = (63641);
	//v.x: (14563) v.y: (14563) v.z: (-728)	n.x: (-9090) n.y: (12726) n.z: (63641)	t.a: (63897) t.b: (1638)
	model->m_vertices[8].x = (14563);
	model->m_vertices[8].y = (14563);
	model->m_vertices[8].z = (-728);
	model->m_normals[8].x = (-9090);
	model->m_normals[8].y = (12726);
	model->m_normals[8].z = (63641);
	//v.x: (1820) v.y: (-1820) v.z: (0)	n.x: (19832) n.y: (-11768) n.z: (61343)	t.a: (36659) t.b: (36659)
	model->m_vertices[9].x = (1820);
	model->m_vertices[9].y = (-1820);
	model->m_vertices[9].z = (0);
	model->m_normals[9].x = (19832);
	model->m_normals[9].y = (-11768);
	model->m_normals[9].z = (61343);
	//v.x: (7281) v.y: (-14563) v.z: (728)	n.x: (12726) n.y: (9090) n.z: (63641)	t.a: (48332) t.b: (63897)
	model->m_vertices[10].x = (7281);
	model->m_vertices[10].y = (-14563);
	model->m_vertices[10].z = (728);
	model->m_normals[10].x = (12726);
	model->m_normals[10].y = (9090);
	model->m_normals[10].z = (63641);
	//v.x: (14563) v.y: (-14563) v.z: (-728)	n.x: (12726) n.y: (9090) n.z: (63641)	t.a: (63897) t.b: (63897)
	model->m_vertices[11].x = (14563);
	model->m_vertices[11].y = (-14563);
	model->m_vertices[11].z = (-728);
	model->m_normals[11].x = (12726);
	model->m_normals[11].y = (9090);
	model->m_normals[11].z = (63641);
	//v.x: (0) v.y: (0) v.z: (1456)	n.x: (0) n.y: (0) n.z: (65536)	t.a: (32768) t.b: (32768)
	model->m_vertices[12].x = (0);
	model->m_vertices[12].y = (0);
	model->m_vertices[12].z = (1456);
	model->m_normals[12].x = (0);
	model->m_normals[12].y = (0);
	model->m_normals[12].z = (65536);
	//v.x: (-1820) v.y: (-1820) v.z: (0)	n.x: (-11768) n.y: (-19832) n.z: (61343)	t.a: (28876) t.b: (36659)
	model->m_vertices[13].x = (-1820);
	model->m_vertices[13].y = (-1820);
	model->m_vertices[13].z = (0);
	model->m_normals[13].x = (-11768);
	model->m_normals[13].y = (-19832);
	model->m_normals[13].z = (61343);
	//v.x: (1820) v.y: (-1820) v.z: (0)	n.x: (19832) n.y: (-11768) n.z: (61343)	t.a: (36659) t.b: (36659)
	model->m_vertices[14].x = (1820);
	model->m_vertices[14].y = (-1820);
	model->m_vertices[14].z = (0);
	model->m_normals[14].x = (19832);
	model->m_normals[14].y = (-11768);
	model->m_normals[14].z = (61343);
	//v.x: (-1820) v.y: (1820) v.z: (0)	n.x: (-19832) n.y: (11768) n.z: (61343)	t.a: (28876) t.b: (28876)
	model->m_vertices[15].x = (-1820);
	model->m_vertices[15].y = (1820);
	model->m_vertices[15].z = (0);
	model->m_normals[15].x = (-19832);
	model->m_normals[15].y = (11768);
	model->m_normals[15].z = (61343);
	//v.x: (-1820) v.y: (-1820) v.z: (0)	n.x: (-11768) n.y: (-19832) n.z: (61343)	t.a: (28876) t.b: (36659)
	model->m_vertices[16].x = (-1820);
	model->m_vertices[16].y = (-1820);
	model->m_vertices[16].z = (0);
	model->m_normals[16].x = (-11768);
	model->m_normals[16].y = (-19832);
	model->m_normals[16].z = (61343);
	//v.x: (0) v.y: (0) v.z: (1456)	n.x: (0) n.y: (0) n.z: (65536)	t.a: (32768) t.b: (32768)
	model->m_vertices[17].x = (0);
	model->m_vertices[17].y = (0);
	model->m_vertices[17].z = (1456);
	model->m_normals[17].x = (0);
	model->m_normals[17].y = (0);
	model->m_normals[17].z = (65536);
	//v.x: (-1820) v.y: (1820) v.z: (0)	n.x: (-19832) n.y: (11768) n.z: (61343)	t.a: (28876) t.b: (28876)
	model->m_vertices[18].x = (-1820);
	model->m_vertices[18].y = (1820);
	model->m_vertices[18].z = (0);
	model->m_normals[18].x = (-19832);
	model->m_normals[18].y = (11768);
	model->m_normals[18].z = (61343);
	//v.x: (0) v.y: (0) v.z: (1456)	n.x: (0) n.y: (0) n.z: (65536)	t.a: (32768) t.b: (32768)
	model->m_vertices[19].x = (0);
	model->m_vertices[19].y = (0);
	model->m_vertices[19].z = (1456);
	model->m_normals[19].x = (0);
	model->m_normals[19].y = (0);
	model->m_normals[19].z = (65536);
	//v.x: (1820) v.y: (1820) v.z: (0)	n.x: (11768) n.y: (19832) n.z: (61343)	t.a: (36659) t.b: (28876)
	model->m_vertices[20].x = (1820);
	model->m_vertices[20].y = (1820);
	model->m_vertices[20].z = (0);
	model->m_normals[20].x = (11768);
	model->m_normals[20].y = (19832);
	model->m_normals[20].z = (61343);
	//v.x: (0) v.y: (0) v.z: (1456)	n.x: (0) n.y: (0) n.z: (65536)	t.a: (32768) t.b: (32768)
	model->m_vertices[21].x = (0);
	model->m_vertices[21].y = (0);
	model->m_vertices[21].z = (1456);
	model->m_normals[21].x = (0);
	model->m_normals[21].y = (0);
	model->m_normals[21].z = (65536);
	//v.x: (1820) v.y: (-1820) v.z: (0)	n.x: (19832) n.y: (-11768) n.z: (61343)	t.a: (36659) t.b: (36659)
	model->m_vertices[22].x = (1820);
	model->m_vertices[22].y = (-1820);
	model->m_vertices[22].z = (0);
	model->m_normals[22].x = (19832);
	model->m_normals[22].y = (-11768);
	model->m_normals[22].z = (61343);
	//v.x: (1820) v.y: (1820) v.z: (0)	n.x: (11768) n.y: (19832) n.z: (61343)	t.a: (36659) t.b: (28876)
	model->m_vertices[23].x = (1820);
	model->m_vertices[23].y = (1820);
	model->m_vertices[23].z = (0);
	model->m_normals[23].x = (11768);
	model->m_normals[23].y = (19832);
	model->m_normals[23].z = (61343);
	model->m_indices[0] = 0;
	model->m_indices[1] = 1;
	model->m_indices[2] = 2;
	model->m_indices[3] = 3;
	model->m_indices[4] = 4;
	model->m_indices[5] = 5;
	model->m_indices[6] = 6;
	model->m_indices[7] = 7;
	model->m_indices[8] = 8;
	model->m_indices[9] = 9;
	model->m_indices[10] = 10;
	model->m_indices[11] = 11;
	model->m_indices[12] = 12;
	model->m_indices[13] = 13;
	model->m_indices[14] = 14;
	model->m_indices[15] = 15;
	model->m_indices[16] = 16;
	model->m_indices[17] = 17;
	model->m_indices[18] = 18;
	model->m_indices[19] = 19;
	model->m_indices[20] = 20;
	model->m_indices[21] = 21;
	model->m_indices[22] = 22;
	model->m_indices[23] = 23;
	model->m_texCoords[0].u = (1638);
	model->m_texCoords[0].v = (48332);
	model->m_texCoords[1].u = (1638);
	model->m_texCoords[1].v = (63897);
	model->m_texCoords[2].u = (28876);
	model->m_texCoords[2].v = (36659);
	model->m_texCoords[3].u = (1638);
	model->m_texCoords[3].v = (1638);
	model->m_texCoords[4].u = (28876);
	model->m_texCoords[4].v = (28876);
	model->m_texCoords[5].u = (17203);
	model->m_texCoords[5].v = (1638);
	model->m_texCoords[6].u = (36659);
	model->m_texCoords[6].v = (28876);
	model->m_texCoords[7].u = (63897);
	model->m_texCoords[7].v = (17203);
	model->m_texCoords[8].u = (63897);
	model->m_texCoords[8].v = (1638);
	model->m_texCoords[9].u = (36659);
	model->m_texCoords[9].v = (36659);
	model->m_texCoords[10].u = (48332);
	model->m_texCoords[10].v = (63897);
	model->m_texCoords[11].u = (63897);
	model->m_texCoords[11].v = (63897);
	model->m_texCoords[12].u = (32768);
	model->m_texCoords[12].v = (32768);
	model->m_texCoords[13].u = (28876);
	model->m_texCoords[13].v = (36659);
	model->m_texCoords[14].u = (36659);
	model->m_texCoords[14].v = (36659);
	model->m_texCoords[15].u = (28876);
	model->m_texCoords[15].v = (28876);
	model->m_texCoords[16].u = (28876);
	model->m_texCoords[16].v = (36659);
	model->m_texCoords[17].u = (32768);
	model->m_texCoords[17].v = (32768);
	model->m_texCoords[18].u = (28876);
	model->m_texCoords[18].v = (28876);
	model->m_texCoords[19].u = (32768);
	model->m_texCoords[19].v = (32768);
	model->m_texCoords[20].u = (36659);
	model->m_texCoords[20].v = (28876);
	model->m_texCoords[21].u = (32768);
	model->m_texCoords[21].v = (32768);
	model->m_texCoords[22].u = (36659);
	model->m_texCoords[22].v = (36659);
	model->m_texCoords[23].u = (36659);
	model->m_texCoords[23].v = (28876);


.. so you can see, a bit of fudging around here, to get things sorted. BUT! I at least have two models integrated, tomorrow I will do the rest and we shall see how they all look on the playing field together. Then, once I've got them all integrated, I suppose we can re-wire the game engine of WakeBreaker to have ourselves a little shoot-'em-up .. :)


(BTW this screenshot is directly from the Touchbook running AIOS 2009.11a, which is the build machine as well as the test machine, so hopefully this project will be a very easy port to Pandora, too ..)
 

Attachments

  • pandoraGWProject_firstmodels.png
    pandoraGWProject_firstmodels.png
    507.5 KB · Views: 91
banjeed said:
Just a note. If you find yourself needing to export to a format your software can't, the sky's the limit between my home and work machines. Deep Exploration and Polytrans are just two of many packages I use on a daily basis.

Excellent - Cinema4D has a horrible tendency to lose the UV mapping if you change the number of vertices (at least, the old version I am using does). A program dedicated to conversion might make a better job of it... so, sorry for the lack of speed in responding but thanks even more for the offer - there may well be a more convenient intermediary file format (I shudder at the idea of using DXF.... :shudder:)

torpor said:
Okay, a *little* progress to report .. I haven't had much time for hacking this weekend, Dad duties and all that, but I took an hour to do something on this project at least tonight before I have to start the mad work week tomorrow ..

Progress is good - and NOTHING trumps dad duty IMHO! :)

torpor said:
So .. I have gotten two of your models integrated into the engine, worked out how to use them, so at least the process of using the models and turning them into something the engine can use has been run through, twice now:

Good to see them actually appearing! I don't know how the next few days are going to pan out for me, but I might be tempted to throw up some higher resolution templates, just to remove the impression that we're trying to produce a retro feel purely by using pixelated textures.

That doesn't mean good textures, just higher resolution templates (almost certainly).

torpor said:
The camera angle is not quite right, just wanted to get it 'up there' so I can see.

No worries, and a definate plus IMHO. There's nothing like a quick preview to see that stuff is happening/possible - I could render concept animations all day but it still wouldn't mean as much (to me) as seeing the actual engine knock out a couple of crude brown blobs :)


torpor said:
4. The process to integrate the models started like this:

...

.. so you can see, a bit of fudging around here, to get things sorted. BUT! I at least have two models integrated, tomorrow I will do the rest and we shall see how they all look on the playing field together.

Yikes! I'd really rather avoid .DXF as, IIRC, the very format prohibits quads (which I'd like to try and gently drag you towards supporting) but whatever format we go with, I think it'd be nice to have a fairly standard file format to make end-user customisations as easy as possible.

Not an urgent issue right now, but something to keep in mind as we go forward. The process is definately convoluted, and IMHO the resulting "codified" version of the models doesn't look as... neat? Concise? As the .OBJ versions. This may be a personal bias though, I admit.


torpor said:
Then, once I've got them all integrated, I suppose we can re-wire the game engine of WakeBreaker to have ourselves a little shoot-'em-up .. :)

Looking forward to it. Time is a bit iffy at the moment, but if I get a chance I'll at least look at the idea of higher res templates.

:D
 
Last edited by a moderator:
Quads? Possible, but until we get things sorted out so that no 'pipeline' is required to process the files, lets just forget about it for now and use tri's ..

I'll put some more into this in the evening tonight, after Dad duty, and see how far we get.. would be nice to get all of your models integrated so I can then work out some of the refactoring needed to prepare for a better shooter-style gameplay as opposed to racer.
 
torpor said:
Quads? Possible, but until we get things sorted out so that no 'pipeline' is required to process the files, lets just forget about it for now and use tri's ..

Indeed. I'm just holding back on a few models - like the chess pawn / spawn point - as I think we have enough tri-based models to get this project going without having to triangulate any other designs, for artistic reasons.

torpor said:
I'll put some more into this in the evening tonight, after Dad duty, and see how far we get.. would be nice to get all of your models integrated so I can then work out some of the refactoring needed to prepare for a better shooter-style gameplay as opposed to racer.

I can't help but think that automating the process as much as possible has to be an aim/aide. Especially if I need to "tweak" (even correct(!)?) sny of the models, for any reason. If there's a step you'd like me to take rather than faffing about with textures/templates, let me know :)
 
Last edited by a moderator:
What I'd like to do is give you a blender scene that has the models in it already, and you can just use it as a reference for further content creation if you like .. ultimately, it'd be nice to have as short a path between modelling->playing as possible, and if we use Blender with success, this makes it very easy to add new content in the future ..

Tonight I'll add the other models you've given me and then I'll put the resulting blender file up for you to see .. and maybe you could use it for future work? Its much easier to take the exported C Header (.h) file from Blender for each model than it is to find some other way to convert the files into a fixed-point tri format ..

Also, have to figure out whats up with the textures. Something to look at tonight as well ..
 
Where this the last few hours go? I've been robbed!

Sadly I don't use Blender, and that's unlikely to change in the near future, but perhaps someone else with Blender will step up to the plate?

OK, with textures still an issue I think I'll leave redoing the templates etc. as time seems to be vanishing today anyway :(
 
Here is the Blender file in case someone wants to have a hack around for future modelling:

http://w1xer.at/touchbook/tbWakeBreaker/model_collection.blend
 
Okay .. its been a week or two since we talked about this, so I thought I'd better give you an update, in case you're interested ..

This is what I've got worked out model-wise, so far:

model_collection_testrender.png


This is a test render of the models in wireframe and some texture mode .. as I've been playing with these models I started to think of some rules for gameplay.

I thought a nice game twist would be that you can pick up the 'bones' of the models after you've blasted all the solid textures out of them .. so here we see a set of models that have been blasted, ready for collection, and one two are still in fighting shape ..

Anyway, nothing playable - yet - but I have pretty much twisted the WakeBreaker sources quite a bit to get these models in and rendering, and .. well .. its not WakeBreaker no more!

Will have another bash at it this weekend when I have time, and hopefully do a playable demo video some time next week. The code is all running on the Touchbook, which is sorta nice in the meantime ..
 

Attachments

  • model_collection_testrender.png
    model_collection_testrender.png
    53.6 KB · Views: 83
Sounds fun and I'm definately interested, just have little time left over to do anything (even koo :( )
 
Wow, that's beautiful, torpor o.o way to go =]
Really looking forward for this one. It seems to be the one with most potential to get everyone addicted =P
 
anyone seen this everyday-shooter thing? I should be abled to provide some rather good guitar-samples if anyone is interested.
 
No guitars in this game. Synth-only. :)

Will update this thread in a few days time, I'd like to build something for the weekend, playable .. :)
 
torpor said:
Quads? Possible, but until we get things sorted out so that no 'pipeline' is required to process the files, lets just forget about it for now and use tri's ..


Hi Torpor!

Time for a quick update/poke around and see where we stand now.

I believe you now have a .OBJ import routine so that the pipeline has been minimised if not effectively zeroed? Could you do me a couple of favours as I try to wrap my head around what I was doing all those weeks ago...

1. Let me know if the .OBJ importer will handle quads (I like quads).

2. See if you can knock up some "Pandora resolution" images showing game pieces in place, so I can see how much room there is for texturing/detail. I'm getting the idea that these things are going to look pretty teeny tiny, so I'd be better off NOT painting (say) a tiny cockpit and lots of "engineering detail" onto the ship if it's only ever going to be 8 pixels on the scren, max. If possible I'd like to see a few models, distant and far, at Pandora Res (what's that, 8 00 * 480?) in 3 different styles - something like:

"Solid"
ritc80.gif


"Textured"
1pfrzr.gif

This actually uses THIS texture:
5b1pus.jpg

which looks slightly like Hidden Line, but rubbish.

Proper "Hidden Line and Glowy" would be nice to see too! Or failing that, any kind of "geometric special-effecty" that you can manage for now. Here's my attempt at an "interesting glowy vectorish" style:
1tse3a.gif


As I say, I hope that - in addition to being a boot up the posterior to get us actively cracking on with this project, I hope the results will help guide me on further models and any fixes the current models need, including (perhaps) some texturing.

Ta,
 

Attachments

  • ritc80.gif
    ritc80.gif
    165.4 KB · Views: 88
  • 1pfrzr.gif
    1pfrzr.gif
    86.5 KB · Views: 81
  • 5b1pus.jpg
    5b1pus.jpg
    10.8 KB · Views: 82
  • 1tse3a.gif
    1tse3a.gif
    165 KB · Views: 90
Last edited by a moderator:
Back
Top