Permalänk

3D Motor

Har precis påbörjat min 3D Motor som ja skriver i Visual C++ och som använder DirectX 8.1. Är ingen "Ûber hardcore" programmerare men inte heller någon noob utan inser vad jag ger mig in på (tror ja)

Men i alla fall, lite tips, goda råd och länkar med mera vore trevligt.

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

Berätta mer, hur avancerat hade du tänkt dig?
Skriver själv på en, quake-a-like.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Citat:

Ursprungligen inskrivet av Sunray
Berätta mer, hur avancerat hade du tänkt dig?
Skriver själv på en, quake-a-like.

Spelade det nya Zelda på Gamecube för några veckor sedan och blev överraskad av hur den relativt enkla, tecknade grafiken på något sätt var så tilltalande. Dessutom passar det mig bra då jag inte orkar lägga för mycket tid på texturer och modeller. Nu påstår jag inte att jag ska göra ett nytt Zelda, men målet är att göra ett sorts framtids rpg med lite "barnslig" grafik i tredjeperson.

Funderar på att viga mitt projektarbete åt detta nu när jag börjar trean vilket gör att jag får mer tid till det.

Än så länge börjat lite på en leveleditor i MFC. Den är dock mycket simpel. kan rita lite verticer o skit....

Hur som helst så har jag delat upp motorn i två huvuddelar. En kärna och ett skal. Kärnan ska kunna återanvändas till andra projekt medan skalet ska vara anpassat till just detta spelet. Ni förstår nog....

Än så länge antar jag att ja är på rätt väg eller?

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

Visst är du på rätt väg. Något att tänka på:
* En Map-Editor för att modellera i är _inte_ lätt att göra, kanske ska du använda ett 3D-program för att modellera i och sen importera objekt i editorn?
* Fysik (kollision & respons) är inte direkt lätta saker.
* Ljus, vertex lighting duger inte. Så antingen lightmaps eller per-pixel ligthing.. inget av dom är speciellt lätt att göra.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem
Permalänk
Medlem

Nja, du har ju dom stora sidorna:
www.gamedev.net
www.flipcode.com

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk

en grej som slog mig är att jag vill utveckla någon sorts språk för att skripta "uppdrag" typ placera ut cameror, triggers mm. Det är detta jag ser fram mest emot men frågan är hur jag ska gå tillväga. Man måste ju i så fall kunna allokera minne för variabler som man sedan skall kunna referara till senare under spelet.

Exempel: man vill skapa en camera som man sedan skall kunna använda senare i spelet:

I skriptfilen:

CreateCamera("enkamera", kordinater bla bla bla........)
...
...
...

SetActiveCamera(enkamera);

//end

I scriptmotorn tolkas raden men CreateCamera och en variabel för kameran skapas.
Hur skall jag sedan kunna referera till denna variabel då raden med SetActiveCamera kommer?

Hoppas ni fårstår vad jag menar. Vet inte riktigt om jag är ute o cyklar men men.....

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

Sätt upp en tabell med strängvärden och pekare till allokerad data. Så att du söker upp datan(koordinater, vinklar etc.) mha. strängen "enkamera" t.ex.

Visa signatur

[size="1"]Coder, Absynth Interactive
~ En köpt mod är knappt en mod alls ~ One software - one function(undvik bloat) ~[/size]

Permalänk
Medlem

Du kan ju använda Lua som scriptspråk..

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem

Eller
enkamera = CreateCamera(...);

ActivateCamera(enkamera);

så är det upp till scriptspråket, och du behöver bara en vektor (std::vector) med pekare till alla kameror, men om du vill identifiera de med strängar funkar nog en hashmap (std::map) bra.

Visa signatur

"`F' is group reply. This is because `G' is for sort and `g' is for get new mail. And `G' is for sort because `sort' used be called `group', and anyway `S' is for save mailbox and `s' is for file message in folder, because `f' is group reply and `F' is group reply including original text."

Permalänk
Medlem

Varför kör du inte dx9 när du ändå håller på?

Visa signatur

Sentient Hyper-Optimised Data Access Network

Permalänk
Medlem

När det kommer till script så tycker jag du skall använda Lua. Lite anorlunda men väldigt robust. Jag har peronligen använt det till Teewars men det hade en såndär infernalisk sopsamlare som jag inte gillar, plus att dom snuvar massa CPU kraft för en. Jag kom på en egen approch som jag just nu sitter och skall testa helt ut.

Sedan som Sunray säger, fysik är en jävla bitch, ännu värre om du blandar in nätverk i det hela och helt åt helvete om du blandar in platformsoberoende också. Men jag antar att du endast siktar på windows efter som du kör MFC och DX.

Att skriva egna editorer och sånt kan ta en jävla massa tid. Finns oftast något som "duger" åt en. Lättaste brukar vara att ta något format som redan finns och använda sig av det. Problemet blir att man inte kan lägga till mer funktioner och sånt i det.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

(jag vet inget, jag bara skriver )

Vad du kan göra ang editors och sådant, ge bara motorn möjlighet att läsa nuvarande format av .bsp från Q3 eller Q2 eller HL, då har du löst problemet med map editering eftersom du då kan använda editorer och compile-tools till dom spelen, även om du inte stödjer några av dess ents. eller andra funktioner.

Visa signatur

gotta go fast

Permalänk

Eftersom att du vill göra sån grafik som i Wind waker så borde du använda cel-shader (inget måste men ändå). Är det svårt att programmera in cel-shader?

Permalänk

Det där med att använda sig av en nuvarande leveleditor har jag tänkt lite på tidigare, men jag kanske borde ge det ett försök i alla fall. Nu är det ju så att det finns en och annan där ute, så är det någon som har någon erfarenhet av dessa och kan rekomendera någon?

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

Nja, var länge sedan jag mappade något. När jag dock gjorde det så var det Qoole som jag körde. Enda mappningen jag gör nu förtiden är massa test banor på jobbet och då använder vi en intern editor som vi gjort själv.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Alltså, du kan använda vilket program som helst som stödjer vanligt textbaserat .map format, använd quark, wc/vhe eller radiant, finns många andra med, fast det är dom största och enligt mig bästa. Jag skulle välja quark, fast det är bara för att jag har använt det så länge och texturstödet och sorteringen klart är överlägsen dom andra.

Visa signatur

gotta go fast

Permalänk
Citat:

Ursprungligen inskrivet av Hipshot
Alltså, du kan använda vilket program som helst som stödjer vanligt textbaserat .map format, använd quark, wc/vhe eller radiant, finns många andra med, fast det är dom största och enligt mig bästa. Jag skulle välja quark, fast det är bara för att jag har använt det så länge och texturstödet och sorteringen klart är överlägsen dom andra.

OK, Quark verkar vara precis vad jag letar efter. *.map-formatet ser ju ganska så enkelt ut att tolka dessutom. Men bara för att jag är så lat så undrar jag endå om det finns någon guide/tutorial som förklarar hur man tolkar en map-fil?

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

hittade det här: http://www.gamers.org/dEngine/quake/spec/quake-spec34/index0....

Beskrivning på map-formatet finns där, iofs för q1 men jag skulle tro att map-formatet är i stort sett oförändrat from q1.

Sen kan du ju alltid använda dig av q3 bsp-filer direkt. De är ganska enkelt uppbyggda om man vill få in data snabbt i motorn.

finns en beksrivning här:
http://www.cs.brown.edu/research/graphics/games/quake/quake3....

q3-banor gör du med GtkRadiant: http://www.qeradiant.com/

Visa signatur

Sentient Hyper-Optimised Data Access Network

Permalänk
Medlem

http://www.tokamakphysics.com/
Gratis Fysik SDK, alltid trevligt om man inte har råd med typ Havok

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem

Ett tips är att inte sätta upp för stora mål så att du halvvägs in i projektet tröttnar på det. Bättre att ta ett steg i taget än att göra allt på en gång.

Visa signatur

Väskan: Apple PowerBook 12" 1,33GHz 768Mb RAM 80GB HDD
Skrivbordet: P4 2,4GHz, 768 Mb RAM, 120GB HDD, Radeon 9600
Jeansfickan: iPod Mini - SonyEricsson T68i

Permalänk
Citat:

Ursprungligen inskrivet av yOhaneZ
hittade det här: http://www.gamers.org/dEngine/quake/spec/quake-spec34/index0....

Beskrivning på map-formatet finns där, iofs för q1 men jag skulle tro att map-formatet är i stort sett oförändrat from q1.

Bestämde mig för att använda map-formatet för q1 och har skrivit en liten kompilator för att lättare kunna läsa filerna i min motor. När jag skulle testa att rita upp exempelvis en kub som jag gjort i Quark så visade det sig att jag missförstått systemet.

( 0 0 -32 ) ( 128 0 -32 ) ( 0 128 -32 ) bricka2_2 0 0 0 1 1 //TX2
( 0 0 32 ) ( 0 128 32 ) ( 128 0 32 ) bricka2_2 0 0 0 1 1 //TX1
( 0 -32 0 ) ( 0 -32 128 ) ( 128 -32 0 ) bricka2_2 0 0 0 1 1 //TX1
( 0 32 0 ) ( 128 32 0 ) ( 0 32 128 ) bricka2_2 0 0 0 1 1 //TX2
( -32 0 0 ) ( -32 128 0 ) ( -32 0 128 ) bricka2_2 0 0 0 1 1 //TX2
( 32 0 0 ) ( 32 0 128 ) ( 32 128 0 ) bricka2_2 0 0 0 1 1 //TX1

Detta är en kub som för enkelhetens skull har sin mittpunkt i 0 i samtliga led. Sedan är varje sida 32 enheter åt vardera håll utifrån mittpunkten.

Från början tänkte jag att första raden gav tre punkter p1(x, y, z), p2(x, y, z), p3(x, y, z) som i sin tur ritade upp en triangel. Det finns dock bara 6 rader och det krävs 12 tringlar för att rita upp en kub. Då tänkte jag att det var uppbyggt så att varje sida får en triangel då den resterande triangeln är given i vilket fall.

Men så verkar det inte fungera heller. Kan dessutom inte förstå var 128 kommer ifrån.
Någon som förstår systemet? ser så enkelt ut så jag undrar nästan om jag e trög eller nåt

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

De 3 punkterna på varje rad definierar upp ett plan. De sex planen motsvarar sedan varje sida på kuben. För att generar en kub skapar du först en kub med väldigt stora mått, sedan klipper du varje sida mot varje plan. När du har gjort detta får du en kub med rätt mått.
Lite småkrångligt, kan va bra att plocka fram sin gamla trigonometri-bok om man har en.

Har sett en tutorial nånstans om det, kan återkomma om jag hittar det.

Visa signatur

Sentient Hyper-Optimised Data Access Network

Permalänk
Citat:

Ursprungligen inskrivet av yOhaneZ
De 3 punkterna på varje rad definierar upp ett plan. De sex planen motsvarar sedan varje sida på kuben. För att generar en kub skapar du först en kub med väldigt stora mått, sedan klipper du varje sida mot varje plan. När du har gjort detta får du en kub med rätt mått.
Lite småkrångligt, kan va bra att plocka fram sin gamla trigonometri-bok om man har en.

Har sett en tutorial nånstans om det, kan återkomma om jag hittar det.

Har klurat ett tag på det du skrev och har nu jäklar börjar jag fatta det hela. Ska viga morgondagen till att anpassa min kompilator.

Man tackar, nu kan jag hålla mig sysselsatt imorn med

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk

Har suttit mer eller mindre hela dagen idag och klurat på hur jag ska bära mig åt för att få ihop en kub. Det där med att klippa planen såg enkelt ut först men nu när man har i åtanke att kuben inte nödvändligtvis måste vara vinkelrätt och kan vara skruvad lite hur som helst så känns det genast svårare. Var nästan övertygad om att jag skulle bli färdig med min kompilator idag men nu sitter jag här och min kompilator är lika oanvändbar som igår.

Letar tutorials mm som en galning. Vore nice om någon hade lite synpunkter och tips.

Visa signatur

And on the seventh day, god stepped back and said: "There is my creation, perfect in every way... oh, dammit I left pot all over the place. Now they'll think I want them to smoke it... Now I have to create republicans." - Bill Hicks

Permalänk
Medlem

Skit i .map, använd något annat format(.bsp t.ex.) och konvertera till ditt eget(.lvl, whatever). Eller skriv en exporter till 3dsmax/maya.

Alternativet är att du tar qbsp-koden och modifierar kraftigt. Om du inte har den vektor-/matrismatte som krävs dvs..

Visa signatur

[size="1"]Coder, Absynth Interactive
~ En köpt mod är knappt en mod alls ~ One software - one function(undvik bloat) ~[/size]

Permalänk
Medlem

vissa förstår visst inte att en .bsp är en kompilerad .map.

.bsp är en binär version av en .map

Visa signatur

gotta go fast

Permalänk
Medlem

"Kompileringen" går ut på att bygga ett BSP (Binary Space Partitioning) tree av banan, bygga ett PVS av det och generera lightmaps.

Går fint att läsa in och expotera till valfritt format, om man nu vill det.

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Hipshot
vissa förstår visst inte att en .bsp är en kompilerad .map.

.bsp är en binär version av en .map

Eh, nej.

.map = brushes
.bsp = verts, trianglar, binärträdet etc.

Vidare så använder HL inte lightmaps IIRC. De använder vertex lights. Det är därför stora ytor drar upp r_speeds så djävulskt.

"Men för all del, jag kan ha fel..."

Visa signatur

[size="1"]Coder, Absynth Interactive
~ En köpt mod är knappt en mod alls ~ One software - one function(undvik bloat) ~[/size]

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Tjoppen
Eh, nej.

.map = brushes
.bsp = verts, trianglar, binärträdet etc.

Vidare så använder HL inte lightmaps IIRC. De använder vertex lights. Det är därför stora ytor drar upp r_speeds så djävulskt.

"Men för all del, jag kan ha fel..."

Fel! HL använder _inte_ vertex lighting (kanske går att enabla som i Q3 dock), det är lightmaps för hela slanten. Hur lätt som helst att se om man vet hur det funkar

Testa "gl_monolights 1" för att slå av lightmapsen..

Visa signatur

Perl - Made by Idiots, Java - Made for Idiots, C++ - Envied by Idiots