Programmering av spel för nybörjare

Permalänk
Medlem

Programmering av spel för nybörjare

Tjenare alla clockers

Nu är det så att jag har tänkt att börja programmera (är typ inriktad åt det hållet redan i gymnasiet). Jag har ju tänkt mig att programera spel men då vet jag ju att man måste lära sisjälv att gg. Jag har försökt å igenom lite tutorials på C sharp och gjort ett eget snake dock så skrev jag i princip ingenting själv.

Så då är frågan eftersom jag inte kan nånting om programering i princip (även fast min kompis är pro på det) så har det aldrig gått att lära mig. Då är frågorna:

1. Har ni några bra tutorials som är alldeles basic för noobs som jag ?
2. Vilket språk ? (java , c++ , c sharp etc)
3. Ska man börja med typ små grejer och sedan fortsätta mot större ?
4. Ska man använda sig av Unity /Udk eller liknande ?

Nu undrar ni men för f*N kan du inte googla eller liknande. Jo det är exact det jag gjort men jag har aldrig hittat ngt som passar just mig. Då jag inte fattar ett skit vad framework o det är så behöver jag lite hjälp
Skulle även nämna att jag ska gå programering 1 nästa år men jag vill redan nu börja lite och flippra med koder

Så alla sorters svar uppskattas

/Fille

Permalänk
Medlem

Till att börja med bör du kolla upp det mesta grundläggande inom språket du vill använda. Vet ju inte hur långt du har kommit redan men börja med att försöka lära dig grundkomandom som "if" och att du kollar upp vilka typer av loopar det finns i det språk och hur du skall använda dom. Alltså sådana standardkommandon som kommer då och då i guider som ingen förklarar för att man väntar sig att alla redan kan dom.

Framework är delvis en samling av bibliotek som kan innehålla en drös med färdiga classer och metoder som kan göra det lättare för dig att skriva din kod. Sedan kan även vissa frameworks vara byggda för en viss mappstruktur som även påverkar hur man förväntar sig att du ska spara dina filer. Det tyckte jag var klurigt i början när jag inte använde frameworks och sparade mina filer huller om buller för att jag själv inte vissta vart jag ville ha dom och ändrade mig gång på gång.

Visa signatur
Permalänk
Medlem

www.csharpskolan.se

Där finns många tutorials för att göra spel i C#, går även igenom grunderna i språket. Är ett år yngre än dig och mitt mål är också att göra spel, men i java

Permalänk
Medlem
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
Medlem

http://thenewboston.org/ - http://www.youtube.com/user/thenewboston

http://www.youtube.com/user/Mr1Buying - Allt är på svenska väldigt basic och har bland annat c++, java och c#.

Själv så föredrar jag c++

Permalänk
Medlem

ett tips kan vara att skapa något enklare. Ex skapa något med windows forms i C# om du har visual studio, så du lär dig grunderna först och hur saker å ting fungerar ihop. se kan du gå lite mer avancerat när du kan basic grundera. de flesta programmerings språk har samma princip, så försåt du hur koden fungerar så kan du sen lära dig de flesta språken utan större problem.

Permalänk
Medlem

Ok tack för alla svar men kan ni säga vad som används mest ute på marknaden när det gåller programerings språk ? Äre C++ ? för ska då börja med typ Csharp och sedan gå till C++ eller är det enklare att börja med c++ dirr ?

Permalänk
Medlem

Bemästra ett språk, så är andra språk lätt att lära sig. Lär du dig bara grunderna i lite olika språk så kommer du ingenvart. Jag tycker C# är det bästa språket men jag programmerar å andra sidan inte spel. Jag började med Pascal men det rekommenderar jag inte.

Vad du än väljer, satsa på det 100% och lär dig det bra, använd google om du stöter på problem, lär dig debugga tidigt. Lycka till

Visa signatur

AMD 7700X (EK 240mm AIO) | ROG Strix B650E-F Gaming | Gigabyte RX 6800 XT 16GB OC | Kingston Fury 32GB DDR5 5600mhz | Kingston Fury Renegade M2 2TB | Alienware AW2723DF 280hz

Permalänk
Medlem

C# så får du mycket på köpet, de vill säga massa färdiga funktioner och "garbage collector" dvs, tar bort allokerat minne som inte använts automatiskt. C# kan man nästan säga är en blandning mellan C/C++ och java. I C/C++ måste du skapa allt själv även allokera minne själv och sen ta bort det när det inte används längre. Om du vill optimera dina program mer så är det C/C++, om det inte är så viktigt så kan du köra C#. Sen används Java en hel del i spelprogrammering också.
Något som är viktigt när du ska skapa saker i C/C++ är att använda objekt orienterad programmering, även viktigt i C# å alla andra språk, men i C# behövs det inte lika mycket.

Permalänk
Medlem
Skrivet av fille959:

Ok tack för alla svar men kan ni säga vad som används mest ute på marknaden när det gåller programerings språk ? Äre C++ ? för ska då börja med typ Csharp och sedan gå till C++ eller är det enklare att börja med c++ dirr ?

Vad som används ute på marknaden beror lite på vilken del av programmering du är intresserad av. Ska du göra mobil-applikationer eller mindre spel funkar C#/Java riktigt bra. Ska du jobba med riktigt 3D-programmering och göra en egen grafik-motor är C++ det ända alternativet nästan. C# går också, men med mycket mindre frihet och prestanda. Vill du istället göra spel-logik så kan du göra det nästan i vilket språk du vill, jag tror Battlefield använder Python för sin spel-logik tex.

C++ är det svåraste språket, men också det mest effektivaste (performance) om man gör det rätt. Jag lärde mig C++ först, och det var en rätt kraftig inlärnings-kurva. Men efter C++ var alla andra språk busenkla. Jag är glad att jag lärde mig C++ först eftersom det är så mycket man måste tänka på med minnes-allokering av avallokering, jag tror att det kan vara svårt att lära sig i efterhand om man inte är van vid det.

Visa signatur

Intel i7-7700k @ 4.9Ghz - Noctua NH-U12P SE2 - MSI GTX 1070 Armor OC - AsRock Z270 Extreme4 - G.Skill Ripjaws V DDR4 3200MHz CL16 2x8GB - Corsair RM750x 750W - Samsung 970 EVO 500GB - Acer Predator X34 - Silverstone RV02-E - Asus Xonar Essence STX II 7.1 - Mionix Naos 8200 - Corsair Gaming MM400 - Das Keyboard 4 Ultimate MX Brown - Beyerdynamic DT990 Pro 250 Ohm - Antlion ModMic 4.0 Unidirectional

Permalänk
Datavetare
Skrivet av MaloW:

C++ är det svåraste språket, men också det mest effektivaste (performance) om man gör det rätt. Jag lärde mig C++ först, och det var en rätt kraftig inlärnings-kurva. Men efter C++ var alla andra språk busenkla. Jag är glad att jag lärde mig C++ först eftersom det är så mycket man måste tänka på med minnes-allokering av avallokering, jag tror att det kan vara svårt att lära sig i efterhand om man inte är van vid det.

C++ år 2012 är inte alls samma språk som det du en gång i tiden lärde dig. Rätt använt så kan du idag skriva ett helt C++ program utan att aldrig anropa "new" eller "delete", så att hantera minne i C++ är inte svårare än att hantera det i t.ex. C# eller Java.

C++ innan C++11

// Jobba med dynamiskt allokerade objekt obj_t *obj = new obj_t(...); obj->method1(); obj->method2(); ... delete obj; // Jobba med vektorer vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) cout << *it << endl;

Samma sak i C++11

// Jobba med dynamiskt allokerade objekt auto obj = make_shared<obj_t>(...); obj->method1(); obj->method2(); ... // inget delete behöver (eller får) användas // Jobba med vektorer vector<int> v{1, 2, 3}; for (int i: v) cout << i << endl;

Så modern C++ kan användas på mer eller mindre exakt samma sätt som C#. C++11 har även saker som lambda-uttryck och closures.

Däremot kan jag hålla med om att C++ kanske inte är det bästa språket att starta med, men det är knappast Java eller C# heller. Vill man verkligen förstå grundläggande koncept i programmering så är ett relativt enkelt språk att föredra, C# och C++ är väldigt stora språk med väldigt många finesser. Java är ett något mindre språk (sätt till finesser som finns i själva språket) med är ändå relativt komplicerat.

Python är av många ansett som en av de bästa språket att lära sig programmera i, men personligen skulle jag även rekommendera Clojure (som är ett VÄLDIGT simpelt språk i grunden, precis som alla LISP dialekter). Ingen av dessa är dock något man skriver spel i. För spel är och förblir C++ överlägset bäst.

Lärde mig själv programmera just p.g.a. att jag ville skriva spel till min C=64. De första spelen gjorde jag i BASIC och senare blev den en blandning av BASIC och Assembler. Kanske inte något att rekommendera idag

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

Du kan använda dig av Visual Studio, det är gratis och är det enklaste när man ska börja. Finns massor med videor där du lär dig alla kod-språk! http://thenewboston.org/tutorials.php

Permalänk
Medlem
Skrivet av Yoshman:

Det var intressant att läsa om C++11, hade jag inte en aning om. Men jag ser inte riktigt fördelen med det över vanliga C++? C++11 låter ju mer som C# fast med annan syntax? Anledningen till att man använder C++ är ju just för att det är så effektivt att allokera och avallokera minne själv, och slippa ha en garbage-collector som gör detta åt en, men jag antar att C++11 har en garbage collector inbyggd om man inte behöver avallokera minne själv?
Och som "jag lärde mig en gång i tiden" var faktiskt inte särskillt länge sen, jag går på en högskole-spelprogrammerings-utbildning och C++11 har aldrig nämnts under våra kurser.

Visa signatur

Intel i7-7700k @ 4.9Ghz - Noctua NH-U12P SE2 - MSI GTX 1070 Armor OC - AsRock Z270 Extreme4 - G.Skill Ripjaws V DDR4 3200MHz CL16 2x8GB - Corsair RM750x 750W - Samsung 970 EVO 500GB - Acer Predator X34 - Silverstone RV02-E - Asus Xonar Essence STX II 7.1 - Mionix Naos 8200 - Corsair Gaming MM400 - Das Keyboard 4 Ultimate MX Brown - Beyerdynamic DT990 Pro 250 Ohm - Antlion ModMic 4.0 Unidirectional

Permalänk
Medlem
Skrivet av MaloW:

Det var intressant att läsa om C++11, hade jag inte en aning om. Men jag ser inte riktigt fördelen med det över vanliga C++? C++11 låter ju mer som C# fast med annan syntax? Anledningen till att man använder C++ är ju just för att det är så effektivt att allokera och avallokera minne själv, och slippa ha en garbage-collector som gör detta åt en, men jag antar att C++11 har en garbage collector inbyggd om man inte behöver avallokera minne själv?
Och som "jag lärde mig en gång i tiden" var faktiskt inte särskillt länge sen, jag går på en högskole-spelprogrammerings-utbildning och C++11 har aldrig nämnts under våra kurser.

C++11 är minst lika effektivt som ett likvärdigt program skrivet i gammal C++stil, och det är ingen garbage collector inblandad. Vidare ljuger virtual void lite om att det på något vis skulle ha blivit enklare att hantera minne, om något så har det väl blivit mer komplicerat. Visst, man skyddas från en del problem som vilda pekare och minnesläckor, men med C++11 måste man ha minst lika stor koll på var ens minne befinner sig och vem det ägs/hanteras av.

Att säga att C++ används för att det är effektivt att hantera sitt eget minne är väl också något av en lögn, men visst, det kan effektivisera en hel del. Just därför är det minst lika viktigt nu som då att man faktiskt vet vad som händer med ens minne, inte minst när man börjar slänga runt sina objekt som diverse referenser eller pekare via funktions-anrop, simpel tilldelelse, copy-konstruktorer etc.

Anledningen till att använda C++11 över gammel-C++ är just för att det skyddar en från dryga lågnivå-problem, även om man fortfarande bör ha ett visst lågnivå-tänk (nu med mer kompletterande högnivå-tänk) när man skriver sin kod. Vidare blir det ofta färre, kortare rader med mer själv-dokumenterande kod. Sen har de även en del nya features som låter en göra simpla saker effektivare än förr, framför allt då menar jag rvalue-referenser. Det är ett nytt språk som virtual void säger.

Visa signatur

"Some poor, phoneless fool is probably sitting next to a waterfall somewhere, totally unaware of how angry and scared he's supposed to be." - Duncan Trussell

Permalänk
Datavetare
Skrivet av gibbon_:

Visst, man skyddas från en del problem som vilda pekare och minnesläckor, men med C++11 måste man ha minst lika stor koll på var ens minne befinner sig och vem det ägs/hanteras av.

Varför skulle du någonsin behöva veta vart minne finns, om vi nu antar att du inte försöker implementara en drivrutin för en enhet som använder sig av minnesmappad I/O?
Och hela poängen med shared_ptr<> är att du INTE behöver veta vem som äger minnet. shared_ptr<> kommer se till att minnet frias när den sista referensen till denna pekare inte lägre gå att nå, vilket skyddar dig både från att jobba med "stale pointers" och skyddar dig från minnesläckor. Och precis som du säger, detta är implementerat helt utan GC. Man använder sig av det faktum att C++ garanterar att alla objekt som ligger på stacken får sin destruktor exikverad när stackramen försvinner (funktionen där variablen skapades retunerar).

Skrivet av gibbon_:

Att säga att C++ används för att det är effektivt att hantera sitt eget minne är väl också något av en lögn, men visst, det kan effektivisera en hel del. Just därför är det minst lika viktigt nu som då att man faktiskt vet vad som händer med ens minne, inte minst när man börjar slänga runt sina objekt som diverse referenser eller pekare via funktions-anrop, simpel tilldelelse, copy-konstruktorer etc.

Säger inte emot här, men också här har C++11 förenklat en hel del. Du kan, och ska, numera alltid returnera saker "by-value" oavsett hur stora de är. Att göra detta i tidigare versioner av C++ kunde (berodde på kompilator) vara extremt ineffektivt

vector<T> returns_a_million_Ts() { vector<T> v; // lägg till milliontals element till 'v' return v; } ... auto my_v = returns_a_million_Ts();

I C++11 är detta garanterat att vara effektivt p.g.a av att man endast kopierar innanmäte i form av pekare av v[ och man kopierar inte alla element. Rent tekniskt är detta implementerat som att innehållet i my_v (som initialt är tomt) byts mot innehållet i my_v när returns_a_million_Ts retunerar. Denna implementeras av två nya koncept i C++, move-constructor och rvalue-references.

Så detta + shared_ptr<> gör definitivt minneshantering i C++11 enklare än tidigare och det trots att det är mer eller mindre lika effektivt som tidigare. shared_ptr<> har i.o.f.s en liten overhead, men move-ctor och rvalue-references gör saker effektivare, så det är nog ungefär hugget som stucket.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Datavetare
Skrivet av MaloW:

Det var intressant att läsa om C++11, hade jag inte en aning om. Men jag ser inte riktigt fördelen med det över vanliga C++? C++11 låter ju mer som C# fast med annan syntax? Anledningen till att man använder C++ är ju just för att det är så effektivt att allokera och avallokera minne själv, och slippa ha en garbage-collector som gör detta åt en, men jag antar att C++11 har en garbage collector inbyggd om man inte behöver avallokera minne själv?
Och som "jag lärde mig en gång i tiden" var faktiskt inte särskillt länge sen, jag går på en högskole-spelprogrammerings-utbildning och C++11 har aldrig nämnts under våra kurser.

C++11 är egentligen fel namn, det jag visade ovan är helt enkelt hur C++ ser ut sedan ett par månader tillbaka när den senaste ISO-standarden för språket blev klar. Och det kan också vara förklaringen till att du inte läste om det, det är en väldigt färsk standard.

C++11 har absolut inget att göra med C++/CLR som Microsoft skapade att göra C++ till ett .Net språk. Personligen förstod jag aldrig poängen med C++/CLR då jag inte ser värdet i att använda C++ på .Net när C# dels är skapat för .Net och dels så fanns den en del saker i C++ som inte passade i .Net så C++/CLR är inte kompatibelt med "riktig" C++. Och det är definitivt inget fel med språket C#. Om jag förstått Microsoft presentationer rätt kring WinRT, Win8 etc. så kommer man inte jobba vidare med C++/CLR i framtiden.

Framtiden för Microsoft är C++11 (i.e. C++ utan .Net) då dels DirectX alltid varit ett C++ API (fast det finns wrappers till t.ex. C#) och WinRT (det nya Windows API:et) är också ett C++ (C++11) API (med wrappers för bl.a. C#/.Net och JavaScript).

Är också därför C++ även i fortsättningen kommer vara spelprogrammerarens förstahands val. C++ används för spelutveckling på Windows (DirectX), C++ kan användas (och används till väldigt stor del) för spelutveckling på iOS och Android då dessa använder sig av OpenGLES, som är ett C-API. Visst kan andra språk användas, men då kommer man alltid använda något där underliggande API:er endast är en wrapper kring det "riktiga" API:et för grafik, ljud etc.

Mycket tyder också på att WP8 kommer få stöd för "native" programmering med C++ och Win8 kommer som sagt definitivt få detta. Så även om man riktar in sig på att skriva spel för Microsoft mobilplattformar så kommer C++ vara förstahandsvalet inom en snar framtid.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Skulle vilja testa dig om blitz basic som är väldigt enkelt programmeringsspråk att lära sig grunderna i. Det är speciellt utformat för de som vill utveckla spel och finns mängder med exempel på nätet. Efter det kan du gå vidare till andra programmeringsspråk som Java eller c++.