Hjälp med Spelutveckling i c++

Permalänk

Hjälp med Spelutveckling i c++

Hej!

Jag har planerat att göra ett 3D-spel baserat på openGL. Använder mig av C++ och vill gärna skriva spelmotorn själv då jag anser att jag lär mig mest på det viset. Kör med Code::Blocks. Jag har försökt ta tag i det länge men möter alltid problem med saker som inte fungerar och utdaterade guider. Har ni några tips på hur jag ska göra? Bra tutorials eller något dylikt?

Jag kan de mesta av grunderna i c++.

Detta är något jag verkligen vill göra och även jobba med i framtiden, all hjälp uppskattas.

Permalänk
Medlem

Jag tror du lär dig bäst om du börjar med ett litet spel och jobbar dig uppåt. Ta det enklaste spelet du kan komma på och bygg det. Sen gör du ett lite mer avancerat spel osv. Tack vare att omfattningen är liten blir det mindre risk att du stöter på svåra problem, och i slutändan får du något du kan visa upp vilket är mycket värt. Det är oxå enklare att förstå saker bit för bit, gör du en asteroids-klon behöver du bara kunna rita linjer och kan skippa texturer, objekt-inladdning, 3d, kameran osv. Sen när du kan det kanske en tetris-variant är lagom, eller utöka asteroids-spelet till att använda texturerade objekt.

Som exempel skrev jag en pong-klon i lördags, 300-400 rader, inget avancerat alls. Men trots sin enkelhet och korta kod använde den OpenGL för uppritning, en fysikmotor för att flytta runt på saker o ting osv. Och jag fick lite bättre koll på hur alltihop funkar och ska göras på bästa sätt. Tack vare att pong är så enkelt hann det bli något spelbart. En dag till med lite polering (ljud, musik, start/endgame och eventuellt ai) och jag hade kunnat "släppa" det.

(Nu har jag tagit kända spel som exempel, men givetvis kan man hitta på enkla spel som är unika om man tycker det är skojigare än att klona klassiker så länge det är enkelt)

För OpenGL verkar http://www.opengl-tutorial.org hyfsat modern och enkel att följa, har du kollat på den?

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk

Jo det har du helt rätt i. Det ska jag göra. Ang. opengl sidan, hur gör jag ett sådant projekt i code::blocks? Vilket väljer man så att man kan skriva in det bra. Varje gång jag försöker för jag antingen massa onödiga filer eller så läggs filerna inte in i projektet.

Permalänk
Medlem

Som tidigare talar har sagt, börja med nåt mindre/lättare.
Att sätta sig in och göra en spelmotor är inget man gör på en helg, det är grymt komplext.

Använd nåt färdigt API som typ SDL eller dylikt och kör nåt lätt 2D spel till att börja med.

Jag antar att du redan har bra koll språket typ OOP etc etc..

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk

Aa jo jag har koll på språket samt oop. Men jag skulle gärna uppskatta fler länkar där man kan lära sig openGL, vare sig det är 2D eller 3D.

Hur får man in SDL i Code::Blocks?

Permalänk
Hedersmedlem

Testkör lite med
http://www.glfw.org/
eller
http://freeglut.sourceforge.net/

- Fönsterhantering (och mkt mer) som är enkel att komma igång med (i princip några headers och något lib)

Visa signatur

Every time you create an iterator: God kills a kitten.

Permalänk
Medlem

Vill du ha en tutorial som mest ger dig klistra-och-klippa kod så kör på http://www.opengl-tutorial.org.

Jag anser däremot att den sidan inte är bra alls om man vill lära sig OpenGL, genomgången är ganska straightforward men du lär dig knappast OpenGL genom att följa den då författaren inte förklarar vare sig stegen eller koden ordentligt.

En bättre hemsida att följa anser jag vara http://www.arcsynthesis.org/gltut/index.html. Författaren går igenom viktig teori som man bör känna till angående 3D-renderingar samt logiken bakom grafik och OpenGL.

Jag följer själv denna hemsida och tycker den är väldigt bra jämfört med den tidigare ovannämnda hemsidan.

Permalänk

Aa tack för bra tips!

Tänkte börja testköra med glfw för att få koll på fönsterhanteringen. Jag laddade ner glfw från deras hemsida och hittar nu inget bra sätt att lägga in den/ includea den i mitt projekt. Använder Code::Blocks, hur gör jag?

Permalänk
Medlem
Skrivet av Einarsson:

Aa tack för bra tips!

Tänkte börja testköra med glfw för att få koll på fönsterhanteringen. Jag laddade ner glfw från deras hemsida och hittar nu inget bra sätt att lägga in den/ includea den i mitt projekt. Använder Code::Blocks, hur gör jag?

Du borde börja med att lära dig hur ditt IDE fungerar innan du vill göra ett 3d-spel i opengl..
Du kommer stöta på så mycket du kommer ha frågor om, så det är bäst du lär dig lösa dina problem med google.

[edit] Om det är något du vill jobba med borde du kolla om du kanske kan ta någon kurs, eller läsa lite böcker.

Visa signatur

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Permalänk

Jo jag vet kan den hyffsat, det är bara just hela grejen med att linka till saker och lite compiler settings jag inte är helt hundra på. Jag brukar lösa problem med google med har tyckt att det varit väldigt svårt med OpenGl då man inte är säker på vad som är förlegat och vad som faktiskt gäller.

Tänker ta kurser framöver, går än bara på gymnasiet och har inte haft programmeringskurser än. Mitt problem har blivit att jag bara går och väntar på att tiden ska gå så att jag kan få gå dessa och andra kurser. Därför har jag börjat försöka ta saken i egen hand och lära mig själv. Kan du tipsa om någon bra OpenGl bok?

Permalänk
Medlem
Skrivet av Einarsson:

Jo jag vet kan den hyffsat, det är bara just hela grejen med att linka till saker och lite compiler settings jag inte är helt hundra på. Jag brukar lösa problem med google med har tyckt att det varit väldigt svårt med OpenGl då man inte är säker på vad som är förlegat och vad som faktiskt gäller.

Tänker ta kurser framöver, går än bara på gymnasiet och har inte haft programmeringskurser än. Mitt problem har blivit att jag bara går och väntar på att tiden ska gå så att jag kan få gå dessa och andra kurser. Därför har jag börjat försöka ta saken i egen hand och lära mig själv. Kan du tipsa om någon bra OpenGl bok?

Jag förstår, var i samma sits själv, mestadels självlärd.
Är inte insatt i OpenGL, mest på grund av att det är ett rätt onödigt jobbigt bibliotek (enligt mig).
Det är ett bibliotek jag tror man går miste om en hel del om man inte får professionell vägledning under tiden man lär sig det.
Om detta är ditt första försök till att skriva ett eget grafiskt spel skulle jag rekommendera att du börjar med något annat, enklare bibliotek, och ett spel i 2d.
Personligen tycker jag om SFML. Det finns guider på deras sida hur det installeras och används.

Visa signatur

Chassi: DAN A4 | MB: ASUS VI Impact | GPU: Titan X | CPU: 4770K | RAM: 2x8GB Corsair Vengeance | SSD: Samsung 830 512GB | Skärm: ASUS Swift IPS

Permalänk

Okej jag tänker definitivt att testa mindre 2D-spel SFML. Vet du vart man kan få professionell vägledning i OpenGL biblioteket? Tänker inför framtiden när jag lärt mig mer.

Btw vad är det man har missat om man får kompileringsfelet undefined reference to "blabla" och hur lösar man det?

Permalänk
Inaktiv
Skrivet av Einarsson:

Okej jag tänker definitivt att testa mindre 2D-spel SFML. Vet du vart man kan få professionell vägledning i OpenGL biblioteket? Tänker inför framtiden när jag lärt mig mer.

Btw vad är det man har missat om man får kompileringsfelet undefined reference to "blabla" och hur lösar man det?

Du har troligtvis glömt länka bibliotek, glömt defines, eller glömt deklarera en funktion du definierat (som du också försöker använda). Linkern hittar ingen implementation av metoden/funktionen "blabla".

OpenGL's manpages är perfekta! Läs på om shaders/vertex array objects & vertex buffer objects bland annat. Men börja med SFML som sagt.

Permalänk

Har följt denna guide (http://www.sfml-dev.org/tutorials/2.0/start-cb.php) och får ändå samma error som innan. Vad gör jag fel? Kan man läsa någonstans exakt hur allt med länka bibliotek och använda defines?

Permalänk
Hedersmedlem
Skrivet av Einarsson:

Btw vad är det man har missat om man får kompileringsfelet undefined reference to "blabla" och hur lösar man det?

Det beror på vad "blabla" är. Vad är "blabla"? Ser det ut att höra till sfml eller är det något annat?

Permalänk
Inaktiv
Skrivet av Einarsson:

Har följt denna guide (http://www.sfml-dev.org/tutorials/2.0/start-cb.php) och får ändå samma error som innan. Vad gör jag fel? Kan man läsa någonstans exakt hur allt med länka bibliotek och använda defines?

Posta din kompilatorversion, om du kompilerade källkoden från scratch eller om du tog ett förkompilerat paket, och det exakta felmeddelandet.

Innehåller felmeddelandet något i stil med glib glibc gcc eller liknande är det troligtvis för att du använt ett förkompilerat paket som inte stödjs av din kompilatorversion, du löser detta skitenkelt med cmake och sfml-källkoden.

Permalänk
Medlem

Ett tips kan vara att försöka ta en titt på algebra, kanske även finns nån kurs i det som du kan ta på gymnasiet.
Även fysik, gärna inriktat på spelfysik skulle jag också kunna rekommendera.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Inaktiv
Skrivet av NoPaiN^:

Ett tips kan vara att försöka ta en titt på algebra, kanske även finns nån kurs i det som du kan ta på gymnasiet.
Även fysik, gärna inriktat på spelfysik skulle jag också kunna rekommendera.

Definitivt, bra nybörjargrejjer om du ändå tänkt börja med SFML och 2D är grejjer som att räkna ut vinkeln mellan 2st 2d-vektors/positioner (en beräkning du behöver göra om du till exempel vill att någonting i ditt spel ska "titta mot" något annat. Räkna ut vinkeln mellan deras positioner och sätt den vinkeln på betraktaren). Eller att flytta en 2d-vektor i en speciell vinkel.

Permalänk

Använder standard compilatorn i Code::Blocks, GNU GCC.

http://imageshack.us/f/855/namals.png/

Tog en screensot, vet inte hur mycket som syns!

Permalänk
Inaktiv
Skrivet av Einarsson:

Använder standard compilatorn i Code::Blocks, GNU GCC.

http://imageshack.us/f/855/namals.png/

Tog en screensot, vet inte hur mycket som syns!

hur har du linkat sfml ?

Permalänk

Som sagt har följt guiden på deras egen hemsida exakt!

Permalänk
Inaktiv
Skrivet av Einarsson:

Som sagt har följt guiden på deras egen hemsida exakt!

Ingen ide att följa guider om man inte lär sig något av dom. Har du länkat dynamist eller statiskt?

Permalänk

Hur vet man om man länkar dynamiskt eller statiskt?

Permalänk
Inaktiv
Skrivet av Einarsson:

Hur vet man om man länkar dynamiskt eller statiskt?

Googla. Länkar du statiskt så länkas biblioteken och packas in i .exe'n du kompilerar. Länkar du dynamiskt så länkas biblioteken via .DLL-filer som du måste ha på datorer du vill köra exen på.

under linker options (till höger) vill du ha:

-lsfml-graphics-s -lsfml-network-s -lsfml-audio-s -lsfml-window-s -lsfml-system-s -lsfml-main

om du sitter på windows och vill länka statiskt (rekommenderar detta om du kör windows). Länkar du statiskt (som i detta fallet) så måste du även sätta definen:

SFML_STATIC

under defines i build options.

Följ nu för i helvete inte mina råd till punkt och pricka utan lär dig att googla! Kan tillägga att funkar detta inte och de inte är fel på din länkning så är det troligtvis fel på biblioteken/kompilator-kombinationen. Kompilera SFML från scratch då eller byt kompilator.