handdator

Visa fullständig version : [Nybörjare] Hur ska jag göra?



ESCPE
2012-12-16, 01:29
Tja!
Har kodat lite hit och dit och varit intresserad av att göra och spela spel sen när jag var väldigt liten.
Jag har lite grundkunskaper inom Java och C++.
Men nu när jag har glidit runt här lite och spanat in några trådar så undrar jag om denna tråd : http://www.indiegamedev.se/showthread.php?153-ROGUELIKE-Invincible-Blade

Det är precis ett sådant spel jag vill göra, den grafiken och vinkeln, problemet är hur ska jag ta mig från nybörjare till färdig produkt?
Vilket språk är det? Någon program? Behöver all info som går om detta för att jag ska kunna komma från trappsteg 1 till 2.

Problem 1:
Jag tappar motivation snabbt så jag måste jobba i ett projekt samtidigt som jag lär mig annars så kommer jag sluta innan jag är färdig med att lära mig.
Problem 2:
Jag är nybörjare och vet knappt mer än hur man gör "Int X=10" osv.

Tack så mycket, jag tar gärna emot KONSTRUKTIV KRITIK hur jag ska kunna arbeta, men tänk på om ni ska säga att jag måste lära mig grunderna först, länka en tutorial där man inte tappar tråden och inte orkar kolla på 118 tutorials :)

pponmm
2012-12-16, 02:25
Ett snabbt sätt att lära sig C++ på måste nog vara att följa denna tutorial:
http://cplusplus.com/doc/tutorial/program_structure/

Den är inte så jätte lång och om du läser tre kapitel varje dag så är du färdig på 8 dagar! Sen så måste ju allt fastna såklart, men det gör det av sig självt ifall du skriver några småprogram samtidigt som lär dig!

Själv så började jag lära mig C++ för ca. 4 år sedan nu, jag började faktiskt kolla på Youtube-videos! Här är filmerna jag kollade på:
http://www.youtube.com/watch?v=tyVhn0FWWB4

Det tog mig ungefär tre veckor att kolla igenom alla filmer och skriva ned anteckningar om allt jag lärde mig (jag har kvar anteckningarna, och det är två text-dokument på ca. 1500 rader tillsammans). Under tiden jag lärde mig från alla videos så gjorde jag också massor av små-program och lite experiment.

Efter att ha lärt mig lite C++ så försökte jag få in lite grafik i mitt spel, jag började med OpenGL.. Vilket var allt för tidigt för mig! Det slutade med att jag blev förbannad på skiten och fortsatte med konsoll-applikationer istället. Efter ungefär ett halvår så började jag lära mig SDL från denna sida:
http://lazyfoo.net/SDL_tutorials/index.php

Jag sysslade med SDL i strax över ett år innan jag ännu en gång försökte mig på OpenGL. Denna gång så gick det bättre och jag började lära mig OpenGL från denna sida:
http://nehe.gamedev.net/

Dock så körde jag med både SDL och OpenGL till en början för att det var för krångligt för mig att göra egna fönster och hantera input osv. Ett år efter det så började jag köra endast med OpenGL då jag fick ett rätt så stort intresse utav Windows API vilket gjorde det rätt så enkelt för mig att göra egna fönster och hantera input.

Lazyfoo där du kan lära dig om SDL är en super bra sida att lära sig lite spelprogrammering på! Du lär dig om kollisions-detektion och lite andra händiga saker som du kommer att behöva inför ditt första spel! Det var också någon gång under tiden jag lärde mig SDL som jag gjorde mitt första grafiska spel! Såhär såg mitt första grafiska "spel" ut:
http://www.youtube.com/watch?v=uCJ7UAlOCZE

Sedan efter att ha kollat igenom och lekt med alla tutorials på Lazyfoo.net så gjorde jag mitt första plattformer spel! Notera att jag hade försökt mig på att göra plattforms-spel innan, men jag kom aldrig längre än att man hade en gubbe som man kunde hoppa med!
http://www.youtube.com/watch?v=0DbIZ7Wesi0

--------------------------------------------

Hade jag kunnat gå tillbaka i tiden så hade jag nog läst tutorials på cplusplus.com när jag skulle börja lära mig, inte för att filmerna på Youtube var dåliga, men det hade gått så otroligt mycket snabbare och jag hade lärt mig så mycket mer!

Många av de viktigare sakerna jag har lärt mig har jag läst mig till när jag fastnar på ett problem till ett spel eller annat program som jag programmerar på. För du kommer antagligen att komma till en punkt där du inte vet vad som finns att lära sig, då är det bara att sätta igång att programmera något tills du fastnar och inte vet vad du ska göra. Du kommer antagligen att hitta någon bra lösning online som du måste lära dig något nytt för att kunna använda!

En lista på hur jag skulle rekommendera någon som vill lära sig C++ att göra:
1. Läs igenom alla tutorials på http://cplusplus.com/doc/tutorial/program_structure/
2. Gör massor av test-program där du sätter allt du har lärt dig på prov!
3. Lär dig SDL från http://lazyfoo.net/SDL_tutorials/index.php
4. Lär dig om state-managers! http://gamedevgeek.com/tutorials/managing-game-states-in-c/ (jag har haft hur stor nytta av detta som helst!)
5. Använd http://cplusplus.com/doc/ för att lära dig nya saker.

Under tiden är det viktigt att du försöker göra många olika småspel och andra testprogram som du kommer att lära dig massor utav att göra! Ett simpelt program som bara målar ut en bild i SDL kan ge hur mycket som helst, även om du tror att du förstår allt efter att ha läst en tutorial om det!

--------------------------------------------

Nu ska du dock veta att jag är en hobby-programmerare (jag planerar dock att läsa mig till en utbildning inom programmering så fort jag är färdig med gymnasiet!).

Det kanske känns tungt till en början, jag hade stora planer på vilka spel jag ville göra, det har jag fortfarande. Saken är den att så fort man kommer igång med något, eller lär sig något nytt, så kommer man snabbt att glömma bort vad det var man till en början ville skapa. Jag fastnar i alla fall totalt i vissa saker och skulle ibland kunna spendera flera år av mitt liv på att lära mig mer om just det ämnet! (överdriver lite smått..) Någon gång kanske jag kan göra alla dessa saker jag har drömt om, men med tanke på hur kul jag har haft det när jag lärt mig så känns det inte lika viktigt längre! Dock är det i alla fall för mig viktigt att ha ett mål!

Innan du tar mina ord på för stort allvar så vill jag bara påminna dig om att jag fortfarande, efter ungefär fyra år, upptäcker att jag har missat vissa grunder i språket och ibland fastnar i flera dagar på vissa problem. Jag är självlärd, antagligen rätt så dåligt dessutom, men jag älskar det jag gör och strävar alltid efter att bli bättre och göra rätt.

Det finns många erfarna programmerare på detta forum, lyssna på dem och ställ många frågor så kommer du förhoppningsvis att befinna dig långt före mig i kunskap om fyra år!

Lycka till!

zabsv
2012-12-16, 13:49
Vill man lära sig C++ kan jag tipsa om learncpp.com (http://www.learncpp.com/). Många rekommenderar SDL, själv fastnade jag för SFML (http://www.sfml-dev.org/) som har varit väldigt enkelt att komma in i för mig som nybörjare.

Om du är mer intresserad av att göra spel än av att programmera är det kanske bättre att kolla på t.ex. Unity (http://unity3d.com/) eller GameMaker (http://www.yoyogames.com/gamemaker/studio).

ESCPE
2012-12-16, 15:18
Hej! Tack för sånna snabba svar!
Enligt det jag har läst av er så menar ni att C++ är det bästa språket att lära sig för att göra spel? Har jag fel eller rätt?
Ska börja kika genast om det är c++ jag borde satsa på .
Zabsv: Jag har alltid varit intresserad av programmera, men då jag inte är jätte bra på matte så har det inte varit jätte enkelt att förstå, men det är ju en dröm att kunna programmera och kunna språket lika bra man kan svenska!
Jag har använt unity också, men problemet är att jag vill göra båda.
Men då jag inte har några kontakter eller polare som håller på med samma grej så kan jag inte bara satsa på programmerare för jag måste ha någon som designar också :(
Så jag är lite 50 /50!

Pallenuh
2012-12-17, 07:25
Vet inte om C++ är det bästa språket att börja med.
C++ är standard språket på alla stora spelstudios runt om i världen men det gör inte språket det enklaste att lära sig.
Bland många forum så klassas det som ett av dom tyngre att lära sig med en hög inlärningskurva. Men det är absolut värt att kunna C++.

Med det sagt så skulle jag säga om du väljer C++ men känner att det blev för tungt, testa något annat språk.
I det stora hela så fungerar de flesta språk på samma sätt men dom skrivs bara med olika regler och syntax.

zabsv
2012-12-17, 09:34
Jag håller med Pallenuh. C++ är nog det svåraste alternativet. Det kan vara bättre att börja med ett enklare språk, som t.ex. java om du hade kikat på det.

Jag är ju själv nybörjare och använder C++, men det viktigaste jag lär mig inom spelprogrammering just nu är egentligen inte språket, det är principerna. Hur bygger man upp ett spel? Hur designar man levels? Hur får man saker att röra sig och animeras.? Hur vet man om objekt kolliderar, osv? Principerna för hur det fungerar är samma för alla språk. Så det kan vara smart att börja med ett enkelt språk så du kan fokusera på det du egentligen vill göra.

PeterWelzien
2012-12-17, 16:12
Själv använder jag just Java. Det finns ett antal spelbibliotek som kan användas för att enkelt kunna rita ut grafik (och spela upp ljud och läsa av tangentbord/mus/gamepad) tex. Slick2D och libGDX. Så jag tycker att du skall använda det språk som du känner att du behärskar bäst.

Sedan kan det vara lämpligt att börja med något enkelt, som tex. Pong, Breakout eller ett shoot'em up, för att öva lite på grunderna i hur man strukturerar ett spel och hur man gör för att läsa av tangentbord, får saker att röra på sig och uppdaterar skärmen.

Det här forumet är en utmärkt plats att ställa frågor på varteftersom de dyker upp.

ESCPE
2012-12-17, 16:20
Just nu velar jag mellan C++ och Java.. Java tror jag kommer bli enklare för mig att starta med men det känns som man går fel väg om man inte har C++ först.
Java är ju enklare eller?
Om ni skulle vara i min sits och ville göra Fez/Realm of the mad god liknande spel, hur skulle ni börjat?
Vilka böcker bör jag köpa? Vilka guider? Allt!
Jag ska nämligen börja ikväll så vill vara säker :)

Pallenuh
2012-12-17, 19:31
Tycker inte riktigt att man kan tänka så, att det finns en fel väg att gå som du ser det.
Då skulle du behöva kolla på alla språk föregående C++ http://en.wikipedia.org/wiki/History_of_programming_languages för att slutligen ta dig ner till språken som vi jobbar med idag,
som C#, java osv. Självklart är C++ ett kraftfullt språk men det är inte lösningen på allt, det är därför alla de olika språken finns, för att alla fungerar olika och vill få ut olika saker ur sin programmering.
Nu blev det så att mitt modersspråk är C++ men vet inte om jag skulle ha hoppat från den högsta trampolinen om jag inte hade behövt göra det.
Det kan vara värt att titta på saker som Python med pygame, C# med Xna/ Unity, eller som peter nämde Java med spelbibliotek om du vill ha en enklare väg in i spelvärlden med ett modernare språk.

SolarStrings
2012-12-17, 19:38
Just nu velar jag mellan C++ och Java.. Java tror jag kommer bli enklare för mig att starta med men det känns som man går fel väg om man inte har C++ först.
Java är ju enklare eller?
Om ni skulle vara i min sits och ville göra Fez/Realm of the mad god liknande spel, hur skulle ni börjat?
Vilka böcker bör jag köpa? Vilka guider? Allt!
Jag ska nämligen börja ikväll så vill vara säker :)

Du har några saker att bestämma dig för:

1. Språk: C++ eller Java
2. Lär dig grunderna för språken.

Java och C++ är ganska så lika, men skiljer sig på vissa punkter, java har en garbage collector som tar hand om att fria minne, medans du i c++ måste göra det manuellt. Se http://javarevisited.blogspot.se/2011/04/garbage-collection-in-java.html, samt att du i Java inte behöver bry dig om pekare.

Lär dig hur du använder språken: classer, for, if, while, struct, switch & case, int, float, double, pekare (C++), new delete (c++) etc.
3. Hoppa inte på att göra ett stort spel på en gång, gör ett mindre!

Ett problem många nya programmerare har är: "Nu ska jag göra mitt drömspel!" eller mardröms scenariot: "Ett eget MMO!"
Av egen erfarenhet så vet jag: Det kommer inte att funka! Jag var ca 16 bast och resonerade lika dant, beställde böcker och trodde att allt skulle lösa sig automagiskt, och det slutade med ett projekt som knappt han börja, många buggar som trillade in tidigt, och jag fick inse: Jag fixar inte det här just nu!

Då poletten trillade ned och jag fattade att jag inte var någon "guru" på programmering efter att ha läst i böckerna och copy paste:at kod från cd-skivan, så började jag med mindre projekt. Kollade på andras kod, lärde mig bit för bit hur saker och ting funkade, och satte sedan ihop den nya kunskapen till ett enklare mindre masken spel.

Så, precis som Peter sa: gör en pong klon eller liknande mindre spel som inte kräver lika mycket tid och kunskaper.

4. Hitta en bra kodstruktur

När man programmerar är det viktigt att ha en bra kodstruktur. Har man det, kan man enklare lägga till saker och ta bort saker utan att det pajjar något av den kod du redan skrivit.

Jag har just nu inte tid att leta fram länkar åt dig (ska och se the hobbit strax), men det finns en annan bra källa du kan använda som heter Google ;)

5. Arbeta mot målet!
Du vill göra ett liknande spel som Realm of the mad God. Kolla upp vilka olika element spelet består av:

* Isometrisk vy : svårare att hantera kollisionsdetektering, prova köra tile based istället. Finns många tutorials om det på nätet.

* Sikta med musen: Börja exprimentera dig fram till hur du kan sikta med musen och skika projektiler i en riktning när du klickar. Bara detta skulle kunna vara ett litet projekt du gör. Sen kan du slänga in lite fiender som går mot dig som du måste döda innan de når dig, så vipps har du ett litet spel.

* Kollisionsdetektering mellan spelare och objekt: Det finns olika metoder hur man hanterar kollisioner: kollisionsrektanglar, kollisionscirklar, pixel perfect kollisions mm. Detta kan också vara ett separat projekt du gör, för att se när 2st objekt kolliderar.

* Healbar: Lär dig rita ut en healhbar och kalkylera hur många % den har och rita ut mängden liv som finns kvar.

* Gå omkring: Programmera en gubbe som går omkring på skärmen med wsad. Utveckla sedan detta till en tile värld där spelaren inte kan gå igenom väggar.

Listan går att göra lång. Så mitt tips är: Gör en liten del av spelet först, och arbeta dig sedan vidare därifrån.

ESCPE
2012-12-17, 21:06
Hej!
Tack så hemskt mycket för alla svaren, jag har nu bestämt mig för att välja Java!
Ska spana in lite internet nu och leta efter böcker / tutorials, återkommer när jag har kommit en bit på resan !

Fyfan vilket bra forum jag har hittat !

Tack och hej! <3

PeterWelzien
2012-12-18, 17:24
Java är ju dessutom inte på något sätt ett dåligt språk för spel. Det kanske inte är så lämpligt för Crysis, men tex. Minecraft är ju gjort med Java. Så det duger jättebra för spel.