0 registered members (),
1,094
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Voxel fürs 3d Gamestudio
#428986
09/06/13 13:21
09/06/13 13:21
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
Hallo mein Kollege hat mich gestern auf seiner X-box 360 das Spiel "Minecraft" zocken lassen ... ich war begeistert von der umsetzung und habe immer gedacht, dass es ein ganz einfaches Kinderspiel were __________________________ nun möchte ich diese Technick gerne ins 3D gamestudio umsetzen , nach langen googlen bin ich auf folgede große Namen gestoßen: CUBE_X und VOXEL nach weiterem googlen hab ich das jetzt so verstanden: ein Voxel ist ein Pixel mit Volumen welches in die 3te dimension positioniert und gezeichnet wird.. beim CubeX handelt es sich anscheind um ein Sammel-begrif und ist ein bereits umgesetztes projeckt fürs 3d-GS über edliche links bin ich dann auf ein Download gestoßen und habe mir das project mal angeuckt ... im verzeichnis "Code/cubeX.c" habe ich dann folgendes gefunden:
BLOCK* block_create(VECTOR* pos, BLOCK_MATERIAL* material)
{
...
// GANZ VIEL CODE !!!!
...
}
und dann plötzlich: weiter unten die zusammensetzung:
function block_createTop(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->top)
return;
block->top = ent_create(material->top,vector(pos->x,pos->y,pos->z + BLOCK_SIZE_HALF),NULL);
set(block->top,DECAL | NOFILTER);
reset(block->top,DYNAMIC);
block->top->tilt = 90;
block->top->skill[0] = block;
}
function block_createBottom(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->bottom)
return;
block->bottom = ent_create(material->bottom,vector(pos->x,pos->y,pos->z - BLOCK_SIZE_HALF),NULL);
set(block->bottom,DECAL | NOFILTER);
reset(block->bottom,DYNAMIC);
block->bottom->tilt = -90;
block->bottom->skill[0] = block;
}
function block_createRight(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->right)
return;
block->right = ent_create(material->right,vector(pos->x,pos->y - BLOCK_SIZE_HALF,pos->z),NULL);
set(block->right,DECAL | NOFILTER);
reset(block->right,DYNAMIC);
block->right->pan = -90;
block->right->skill[0] = block;
}
function block_createLeft(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->left)
return;
block->left = ent_create(material->left,vector(pos->x,pos->y + BLOCK_SIZE_HALF,pos->z),NULL);
set(block->left,DECAL | NOFILTER);
reset(block->left,DYNAMIC);
block->left->pan = 90;
block->left->skill[0] = block;
}
function block_createFront(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->front)
return;
block->front = ent_create(material->front,vector(pos->x + BLOCK_SIZE_HALF,pos->y,pos->z),NULL);
set(block->front,DECAL | NOFILTER);
reset(block->front,DYNAMIC);
block->front->skill[0] = block;
}
function block_createBack(BLOCK* block,BLOCK_MATERIAL* material,VECTOR* pos)
{
if(block->back)
return;
block->back = ent_create(material->back,vector(pos->x - BLOCK_SIZE_HALF,pos->y,pos->z),NULL);
set(block->back,DECAL | NOFILTER);
reset(block->back,DYNAMIC);
block->back->pan = 180;
block->back->skill[0] = block;
}
usw ... usw ... usw... FRAGE: wie bekomme ich das ganze denn jetzt in die 3te Dimension ???????? immer wieder erscheint der befehl: - ent_create lässt aber eigendlich nur 1000 entits zu (ich benutze die A8 Gratis version) ich möchte gerne wissen wie man das ganze ohne den ganzen material-kram verwirklicht so das einfach nur weisse blöcke zu sehn sind ... Warum das ganze ??? -> erstelle ich 3 Cubes (.mdl) die nebeneinander liegen hat jeder Cube schatten , licht ect. Sprich: Man sieht einfach das, das erstellte object aus 3 cubes gemacht worden ist hier: sind also in 3d-gs erstelle voxels auch nur Entitys ?? ich will das wissen weil ich da was bestimmtes vor habe ...
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: ratz]
#428989
09/06/13 13:48
09/06/13 13:48
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
für jedes voxel eine ENTITY* zu verwenden ist EXTREM ineffizient und wenn du etwas minecraft ähnliches hinbekommen willst leider viel zu langsam.
Du könntest also für z.B. 16³ blöcke eine ENTITY* verwenden, dabei musst du aber auch das meshen per direct-x machen.
Außerdem musst du auch block-seiten, die nicht sichtbar sind erst garnicht erstellen, weil das wieder extrem viel leistung für garnichts verbrauchen würde.
...und mit dem lighting will ich erst garnicht anfangen.
Also meiner Meinung nach ist es relativ schwer ein voxelsystem wie das in minecraft verwendete zu coden, vor Allem, wenn man noch keine Ahnung hat, wie man mit vertex / index buffern arbeitet.
POTATO-MAN saves the day! - Random
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: Kartoffel]
#428995
09/06/13 14:24
09/06/13 14:24
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
beim CubeX handelt es sich anscheind um ein Sammel-begrif und ist ein bereits umgesetztes projeckt fürs 3d-GS Autor meldet sich: Ja, CubeX ist ein (altes) Voxel-System, welches eigentlich auch mit der Free-Version gehen sollte. Ich habe den Ansatz von Kartoffel auf einfache Weise verfolgt, in dem ich Sprites anstelle von Würfeln verwende und nur die sichtbaren Würfelseiten darstelle. max_entities kann übrigens vor dem Level-Laden erhöht werden (sollte auch irgendwo ein Beispiel dabei sein). Ich habe das System nochmal überarbeitet und in TUST veröffentlich: Kubus VoxelizerEs kann aber sein, dass Kubus eine Extra- oder Commercial-Version benötigt. Es ist auf jeden Fall nicht einfach, so ein System optimal mit Gamestudio umzusetzen. Gruß Felix
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: MasterQ32]
#429121
09/09/13 11:12
09/09/13 11:12
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
jaaa .. ersteinmal danke für so viel information ich war lange nicht mehr hier on @ MasterQ32: an sprites habe ich auch schon gedacht , nur drehen diese sich halt zur camera mit -> Gestern lass ich im buch: "Computerspiele - Programmierung und Design" (hab ich schon ganz lange ) das es in Gamestudio A4 ein Flag gab namens: My.ORIENTED = ON; gab gibt es in lite C ein solches flag ? .. bestimmt finde ich es gleich
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: MasterQ32]
#429123
09/09/13 11:26
09/09/13 11:26
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
okey , jetzt muss ich gucken wie ich das mache ^^ benutze ich ent_create kann ich dann auch flags benuzen ?
function create_test()
{
var i;
for (i=0; i<2; i++) // repeat 2 times
{
ent_create("texture.bmp",vector(10+i,0,0),NULL);
set(my,DECAL);
}
}
so kommt die fehlermeldung: "Script-Crah in create test" mit der for-schleife experimentiere ich nur rum
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: ratz]
#429126
09/09/13 11:41
09/09/13 11:41
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
you sollte auch gehen, da musst du keinen zusätzlichen pointer erstellen.
POTATO-MAN saves the day! - Random
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: Kartoffel]
#429138
09/09/13 12:33
09/09/13 12:33
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
Boa damit kann man ja richtig geile sachen machen sieht aus wie ein Direct X oder Open_GL beispiel ich hab jetzt mal 32x32 texturen gemacht
///////////////////////////////
ENTITY* b1;
ENTITY* b2;
ENTITY* b3;
ENTITY* b4;
ENTITY* b5;
ENTITY* b6;
function create_cube()
{
b1 = ent_create("test1.bmp",vector(42,0,0),NULL);
b1.pan = 0;
b2 = ent_create("test2.bmp",vector(10,0,0),NULL);
b2.pan = -180;
b3 = ent_create("test3.bmp",vector(26,16,0),NULL);
b3.pan = 90;
b4 = ent_create("test1.bmp",vector(26,-16,0),NULL);
b4.pan = -90;
b5 = ent_create("test2.bmp",vector(26,0,16),NULL);
b5.tilt = 90;
set(b1,DECAL);
set(b2,DECAL);
set(b3,DECAL);
set(b4,DECAL);
set(b5,DECAL);
}
|
|
|
Re: Voxel fürs 3d Gamestudio
[Re: ratz]
#429145
09/09/13 12:47
09/09/13 12:47
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
was ich mit meinem letzten post meinte:
you = ent_create("test1.bmp",vector(42,0,0),NULL);
you.pan = 0;
set(you,DECAL);
und ich wiederhol mich nochmal, 1 entity = 1 block ist VIEL zu ineffizient. 1 entity = 1 block-seite ist da noch schlimmer.
POTATO-MAN saves the day! - Random
|
|
|
|