News:

No significant change

Main Menu

Skärmisar från min 3D-motor

Started by Lupson, October 09, 2002, 00:32:50

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Lupson

Har sedan i våras suttit och pulat med en 3D-motor som jag pillat ihop mha c++ och openGl. Känner äntligen att det är snyggt nog att visa upp för er andra på forumet och jag är nyfiken på vad ni tycker om mitt första försök till 3D-grafik. Motorn i sin dagsform passar bäst till att göra något enklare aktionspel, så om någon har nån fräck idé på ett sådant så är jag idel öra.

En annan sak som skulle behövas är lite modeller i Milkshape 3D-format. Milkshape i sig råvägrar på min burk och att skriva en 3ds-importerare/renderare eller dylikt orkar jag verkligen inte. Så om någon sitter på lite MS3D-modeller (gärna med "krigsmotiv", hus, träd etc.) så är ni hjärtligt välkomna att dela med Er ifall ni känner för det.

Screenshots: http://w3.adb.gu.se/~s99luppe/openGL/screenshots
Källkod inkl. datafiler, MSVC-filer etc: http://w3.adb.gu.se/~s99luppe/openGL/3dengine.zip  (3.9 Mb)

Mvh Lupson

Mvh Lupson - kortklippt.

"Kustartilleriet fördröjer fienden i kustbandet till militär hjälp kan anlända".
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core i5 E3570K - Fractal Design Define Mini - Sapphire R290 Tri-X

TrakDah

Ser asbra ut!

Jag har en idé! Gör ett spel där man får flyga typ, riktiga plan ba! Typ Cessna eller nåt. Sen kan man landa på riktiga flygplatser, typ Meigs i Chicago!

;)

/TD

griffin

Heja!

Jag har inte tittat på nån kod men det ser ju lovande ut! Håller själv på med en spelmotor, men på en betydligt mera blygsam nivå. Jag är dessutom så skadad att jag kan inte följa branschstandarden och använda C/C++ utan måste hålla på med lite mer udda språk (Ocaml i detta fall).

Jag är nog mer intresserad av att designa en motor än att faktiskt göra den. Jag sitter ju och jobbar med en spelmotor dagligen som spelprogrammerare och det får en att tänka på hur man *egentligen* skulle vilja ha saker och ting gjorda. Fast det är ju en helt annan femma att faktiskt göra nåt och så långt har jag inte kommit, så..

Jag är hur som helst imponerad och kommer gärna med ideer om vad man skulle kunna använda den tilL!

Ser att du använder fraps :) Eller?

Griffin/Jens
snappahead

ft

Hmm... kanske ett landskap som ser ut som... säg... svensk skärgård? Och hur lätt är det att peta in instrumentpaneler? ;)

Mvh,
 /ft

Stercus accidit
---
Quando omni flunkus moritatus

Lupson

Tack för berömmet!!

Trakdah: Köp MSFS2002 :) Njae, en civil flygsimulator är jag inte så enormt sugen på. Tror det krävs alldeles för mycket seriös fysiksimulering och sånt för att det bli bra.

Griffin: Ocaml??? Har jag aldrig hört talas om...designa motorn gör jag i efterhand, dum som jag är. Nej, skämt åsido så är detta ren "learning by doing" så jag försöker mest få in nya skojiga effekter och features efterhand. Dock har detta resulterat i att jag fått skriva om landskapsrenderingen 3 ggr, partikelsystemet 2ggr och objektsystemet 2 ggr.

Just nu är landskapsrenderingen av en något optimerad "brute-force" approach som funkar bra för objekt som inte befinner sig så nära backen men terrängupplösningen blir lidande på nära håll. Ska istället försöka implementera en s.k. CLOD-algoritm där terrängmeshen är tät och fin på nära håll och glesare på längre avstånd.

ft: Svensk skärgård? Kalasidé! Har faktiskt färdig kod för att sätta havsyta så det är bara att pula tillbaks den koden ikväll. Ska försöka få till screenshots med hav snarast!

/Lupson
Mvh Lupson - kortklippt.

"Kustartilleriet fördröjer fienden i kustbandet till militär hjälp kan anlända".
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Core i5 E3570K - Fractal Design Define Mini - Sapphire R290 Tri-X

griffin

Ocaml... är ett funktionellt språk med OO features. Om funktionellt språk inte ringer i nån klocka så... tja, nevermind. Vill du veta så förklarar jag gärna.

Ja, men min approach (designa och designa) slutar sällan i nåt körbart å i andra sidan. Vad gör det för gott att designa den "perfekta spelmotorn" (nåja, långt dit) om man aldrig lyckas implementera den.

Så att testa grej efter grej är inte så dumt. Det är ju så man lär sig och får nåt konkret gjort. Så därför har jag också lite småprojekt vid sidan av men de är inte så färdiga direkt. NeHe har man ju förresten tittat på lite :D Bra sidor på gamedev.net. Tittar du in på flipcode.com och gamasutra.com med? Bra sidor hur som helst!

Men jag hittade en bra bok om OpenGL spelprogrammering! Kommer inte ihåg vad den hette men jag kan ta reda på det! Lånade den på bibban faktiskt! Den kom med en CD så det finns kod för varje kapitel och i slutändan blir det en liten motor på kanske samma nivå som din är.

Om du vill kan du ju få koden. Är på 220 MB så frågan är hur om du är intresserad.

Om nån nu skulle undra varför en "spelprogrammerare" behöver lära sig OpenGL så kan jag förklara det (jag undrar själv ibland)... Vi har en motor som kanske en 10-20 pers jobbar mot på ett gäng olika projekt. Motorn i sig är gjord av ett gäng som började på den -96 eller nåt. Sedan har den förbättrats, byggts på och om under tidens gång.

Så motorn är både stor och komplex. Beroende på vad man gör i ett projekt så kommer man i kontakt med olika delar av motorn. Jag t.ex. sitter med GUI saker för ett spel och kommer inte direkt i närheten av lågnivåpulet. Jag är helt enkelt inte den sortens programmerare (utan har andra områden som expertis). Så sedan dag ett på företaget har jag jobbat med en färdig motor. Men det hindrar mig inte från att vara nyfiken på hur det funkar, men att rota i våran motor är lite overkill då den är så förbannat stor och komplex. Då är det enklare att leka på lite simplare nivå själv...

mvh Griffin
snappahead

ft

QuoteOriginally posted by griffin


            Ocaml... är ett funktionellt språk med OO features. Om funktionellt språk inte ringer i nån klocka så...

Om "funktionellt" skall utläsas "funktionsorienterat" så ringer det en klocka... en varningsklocka! :D

Lupson,
en civil flygsimulator kräver uppenbarligen inte särskilt seriös fysiksimulering - se bara på MSFS! :D

Med ett skärgårdslandskap på plats... fattas bara en Gripen. ;) Men jag är skeptisk till att det går att komma ens en fjärdedel av vägen mot 39-funktionalitet på en PC. Den jäkla grejen kan bara göra för mycket! F4 med SP3 framstår i jämförelse som en Sopwith Camel jämfört med en Viggen. Grundfunktionerna finns där men inte mer.

Mvh,
 /ft

Stercus accidit
---
Quando omni flunkus moritatus

griffin

#7
QuoteOriginally posted by ft
Om "funktionellt" skall utläsas "funktionsorienterat" så ringer det en klocka... en varningsklocka! :D

Hehe, funktionsorienterat. Har inte hört det uttrycket förut. Det är en programmeringsparadigm som bygger, ja just det, funktioner. Men att det skulle ringa en varningsklocka? Njae, "klassiska" språk som C och C++ som många hårdnackat försvarar består ju i mångt och mycket av funktioner så jag ser inte problemet...

Det intressanta, och här har jag hållt på en hel del och funderat kring, är att det finns ytterst få profisionella programmerare som ser nyttan i ett språk som t.ex. SML (eller Ocaml). De funktionella språkens förespråkare står alla inför samma dilemma; att få ut dem utanför universitetens väggar. De brukar i sin tur falera på att de underskattar arbetsmarknadens behov av kompletta verktyg med god support och dokumentation, (edit: vad jag menar är att det är något fundamentalt olika förutsättningar i termer av "fullständighet" om man jämför t.ex. Ocaml eller SML med Visual Studio...) något som universitetsproducerade språk/kompilatorer brukar sakna.

Men det är däremot ytterst få profisionella programmerare som vet varför de ratar funktionella språk. Det skall helt enkelt vara "det gamla vanliga", eller det som alla andra använder. Man skall rata av rätt anledning i så fall...

Nej, funktionella språk är inget magiskt som ersätter alla språk - rätt verktyg för rätt sak brukar jag säga och i många fall finns inget annat vettigt än C, C++, ADA, eller assembler. Men jag har sett många skrattretande exempel på kod i ovanstående språk som skulle kunna gjorts med en bråkdel mängd kod med ett ett stabilare resultat och med motsvarande prestanda - om ett bättre lämpat  språk (för resp. problem det försökte lösa) använts.

Att de funktionella språken skulle vara svåra att förstå håller jag inte med om, vilket jag hört folk säga. Funktionella språk tvingar folk tänka i lite mer matematiska/algoritmiska termer vilket kräver att man förstår lite av programmeringens fundamentala bitar. Men gör man väl det har man oftast lättare att utrycka sig i funktionella språk. Sist men inte minst har jag inte sett nån som lärt sig funktionella språk som första språk ha några problem med att lära sig imperativa dito som t.ex. C eller C++ (annat än de problem som alla som lär sig de språken stöter på, men i gengäld kan de skilja språkspecifika problem från algoritmiska på ett bättre sätt). Däremot verkar det ofta vara skitsvårt att få en person som först lärt sig imperativa språk att förstå funktionella. Jag anser att imperativa språk utan garbagecollecting är i många fall överskattade och andra språk underskattade. Men inte alltid. Beror på som sagt.

Jaja, nu hamnade vi på ett sidospår, men det är en sak som ligger mig varmt om hjärtat.

Som ett exempel kan jag nämna att jag en gång skrev en enkel men fullt funktionsduglig raytracer i C. Den var ganska så optimerad och utnyttjade vad jag kunde hitta i termer av kompilator och språkspecifika optimeringar. Av ren nyfikenhet skrev jag om samma tracer i Ocaml, ett funktionellt språk då. Samma tracer gick visserligen lite långsammare (kanske pga garbagecollectingen). Men inte speciellt mycket snabbare... 1.2 ggr långsammare. Men tag då hänsyn till att C versionen låg på 12500 rader kod utan kommentarer, och Ocaml versionen på 2700 och de gjorde samma sak.

I fallet raytracing kanske 20% är oacceptabelt - men i många många andra fall är det en helt klart acceptabel prestandaförlust om man väger in vinsterna. Dessutom tror jag att i takt med att komplexiteten ökar på ett program blir det svårare att skriva effektiva algoritmer då kodmassan blir stor och komplex och ett funktionellt språk med mycket mindre kodmassa möjliggör mer fokus på effektiva algoritmer.

Ett lysande exempel är gamla klassikern som Ericsson gjorde. De skulle skriva telefonväxelprogramvara (om jag minns rätt) och valde C++. Efter ett par års kodande med *många* inblandade fick de ge upp. Det gick inte att koordinera ett så stort projekt med så många inblandade och ett sådant språk. Många behärskade inte C++ tillräckligt. Det gav till upphov ett helt nytt språk, Erlang, som i viss mån är funktionellt. Växeln programmerades sedan i detta språk med lyckat resultat.

Oj! Vad jag svamlar. Förlåt!
snappahead