Vilket språk börja med vid spelprogramering?

Permalänk
Medlem

Vilket språk börja med vid spelprogramering?

Hej swec!
Har hållt på en del med html och css och har börjat bli sugen på testa programmera spel.
Har kollat lite på c++ som man verkar ha ganska många möjligheter i... Har även kollat in java då jag har en kompis som håller på med java, han påstår att java är bättre att lära sig än c++.
Undrar då vad ni tycker man bör lära sig?
Har kollat runt lite och verkar vara folk son både är för och emot dessa språk.
Eller finns det något annat språk jag borde kika närmare på?
Tack på förhand!

/spang420

Skickades från m.sweclockers.com

Permalänk

Den här fråga har behandlats i hur många trådar som helst i det här forumet. Så vitt jag kan avgöra så finns ingenting nytt att tillägga, så jag föreslår att du letar upp dessa trådar och ser vad som har skrivits.

Permalänk
Medlem
Skrivet av VirtualIntent:

Den här fråga har behandlats i hur många trådar som helst i det här forumet. Så vitt jag kan avgöra så finns ingenting nytt att tillägga, så jag föreslår att du letar upp dessa trådar och ser vad som har skrivits.

Det är de jag har, har även läst samlingstråden men dessa gav för det mesta lite indirekta svar som bestod av en salig blandning...

Permalänk
Medlem
Skrivet av spang420:

Hej swec!
Har hållt på en del med html och css och har börjat bli sugen på testa programmera spel.
Har kollat lite på c++ som man verkar ha ganska många möjligheter i... Har även kollat in java då jag har en kompis som håller på med java, han påstår att java är bättre att lära sig än c++.
Undrar då vad ni tycker man bör lära sig?
Har kollat runt lite och verkar vara folk son både är för och emot dessa språk.
Eller finns det något annat språk jag borde kika närmare på?
Tack på förhand!

/spang420

Skickades från m.sweclockers.com

Lärde mig C# på en högskole utbildning, har även testat lite java och c++, men C# är mitt favoritspråk än så länge, tycker att det är ett effektivt språk, jag bli i alla fall väldig produktiv när jag kodar i C#.

Sedan beror väl mycket på att Visual Studio är ett riktigt bra program för att utveckla i C#, man får väldigt mycket hjälp på vägen och det finns massor med hjälp på MSDN och andra sajter såsom Stackoverflow med flera.

HTML och CSS är ju inga direkta programmeringsspråk. (Diskuterades i en tråd för någon vecka sedan, men kommer i alla fall inte ihåg vad dem kallades)

Men som de flesta trådar har sammafattats till så spelar det ingen roll vilket språk man börjar med. I början gäller det att hitta logiken i kodandet.

Självklart finns det språk som är lättare att lära sig. Tex C# har automatisk garbage collector och det lägger automatiskt in pointers till minnet. Något som man i c++ måste gör själv. (Ute på djupt vatten nu, har aldrig kodat med pointers i c++)

Också hört att phyton skall vara lätt att börja med, men aldrig testat så uttalar mig inte om det.

Men jag rekomenderar att du laddar ner Visual Studio 2012 express (Gratis version) och kör igång smått med C#. Lär du dig syntaxen för C# så kan du nästan syntaxen för Java också.

För C# finns ju även XNA vilket vad jag har hört är en riktig bra.

Lycka till!

Permalänk

beror väll lite på vad för spel du vill göra också.
om du vill göra tex ett 3d spel med bra grafik och sådant måste du ju ha någon engine som tex blender där jag har för mig att man använder python men om du ska göra något lite simplare spel så skulle du ju kunna använda java (som mig ) eller varför inte c# xna.

Visa signatur

Att programmera eller att inte programmera, det är frågan?

Permalänk
Datavetare

Varför föreslår folk C#/XNA när det är en plattform som blir EOL 1:a april 2014.

Microsoft pushar numera C++ som det självklara valet för "högpresterande interaktiva program" (vilket inkluderar spel), och det på alla sina plattformar. Man skriva spel i andra språk, men C++ är industristandaren för spelutveckling.

Visst är C++ stort och komplicerat, finns dock inget som säger att man måste använda varenda finess som existerar. Använda bara templates från STL (undvik att skrivna egna som nybörjare) och använda grundläggande OOP-teknik så kommer man ändå väldigt långt. Och det är i alla fall lättare än assembler som man fick använda för spelutveckling på C=64 och Amiga/Atari ST tiden

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

När det gäller AAA-produktioner så finns det inte så mycket att välja på. Där är det C++ som gäller, precis som virtual void sa. Däremot ska du inte bry dig om vad han skriver om C#/XNA då det endast gäller XNA som API och inte språket C#. Det finns mycket språkreligion och fanatiker som envist ska trycka ner andra språk än det de själva föredrar. Är man en duktig programmerare vet man vilka verktyg man ska använda för olika uppgifter.

Ska du göra egna spel som indie så finns det mycket större valmöjligheter. Jag kodar C++ på jobbet men mycket C# privat, mest för att jag gillar språket och det påminner lite om C++ vilket jag egentligen tycker om. Java för Android är bra att kunna, också.

Ska du jobba med detta så är det alltid bra att kunna fler språk, och när du väl kan själva tänkandet så är det inget svårt att lära sig nya språk.

Permalänk
Medlem

För just spelutveckling så är C++ kraftigt överrepresenterat. Visst, sitter man med kanske spelmekaniken så görs sådant, AI osv ibland i diverse script språk. Men om man vill ge sig in i spelutveckling ordentligt och med det menar PC/XBOX/PS etc så är C++ att rekommendera.
XNA/Java/etc kan du självklart göra spel i. Men i första hand kanske för andra typer av enheter. De ekosystem som finns idag kring spelutveckling på de lite större spelplatformarna är i princip uppbygda runt C++.

Visa signatur

Gigabyte Aorus Master | 32gb DDR4 3466MHZ CL14 | Ryzen 3950X | 3080Ti
En lång rad Intel system som barnen fått som speldatorer, VR-dator, massa bärbara, servrar, RPi's och andra boxar :P

Permalänk
Datavetare
Skrivet av Curik:

När det gäller AAA-produktioner så finns det inte så mycket att välja på. Där är det C++ som gäller, precis som virtual void sa. Däremot ska du inte bry dig om vad han skriver om C#/XNA då det endast gäller XNA som API och inte språket C#. Det finns mycket språkreligion och fanatiker som envist ska trycka ner andra språk än det de själva föredrar. Är man en duktig programmerare vet man vilka verktyg man ska använda för olika uppgifter.

Ska du göra egna spel som indie så finns det mycket större valmöjligheter. Jag kodar C++ på jobbet men mycket C# privat, mest för att jag gillar språket och det påminner lite om C++ vilket jag egentligen tycker om. Java för Android är bra att kunna, också.

Ska du jobba med detta så är det alltid bra att kunna fler språk, och när du väl kan själva tänkandet så är det inget svårt att lära sig nya språk.

Dold text

Var kanske otydlig, menade att XNA blir EOL, vilket står klart och tydligt i den länk jag gav. Med tanke på hur mycket MS pushat för C#/.Net de senaste 10 åren skulle det vara företagssjälvmord att lägga ner C#. Är definitivt ingen stor förespråkare för C++, skulle snarare säga att alla områden förutom spel och icke-triviala desktop-applikationer så finns bättre val än C++. Har skrivit massor med C++ kod i mina dagar, även spel och även undervisat i C++ programmering, så är inte heller någon C++-hatare, mest bara tiden som sprungit ifrån språket inom de flesta andra områden.

Men just för spel-programmering är C++ lika totalt dominerande som Java och C# är på webb-server-backend och C är för inbyggda-system. Väljer man en rimligt delmängd av C++ så är det inte speciellt mycket svårare än t.ex. Java, både Google och Microsoft använder väldigt mycket C++ internt men läser man deras respektive kod-standard så är det mer C-with-classes man kör än "modern" C++ template-meta-programming som ingen vettig själ fixar att debugga där det går åt €#%".

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

Börja med något enkelt för att se om du tycker att det är roligt. Kika på t ex FlashPunk, HaxePunk eller Löve.

Det du vill lära dig i början är generella koncept för att strukturera program och grundläggande principer hur man visar och behandlar saker på skärmen.

Strunta i språk, välj något bara, det har ingen betydelse i början. Det du lär dig med de där biblioteken går att tillämpa på liknande sätt i C++, Java, C# och alla andra språk.

Permalänk
Medlem
Skrivet av Jonte:

Börja med något enkelt för att se om du tycker att det är roligt. Kika på t ex FlashPunk, HaxePunk eller Löve.

Det du vill lära dig i början är generella koncept för att strukturera program och grundläggande principer hur man visar och behandlar saker på skärmen.

Strunta i språk, välj något bara, det har ingen betydelse i början. Det du lär dig med de där biblioteken går att tillämpa på liknande sätt i C++, Java, C# och alla andra språk.

Alla andra språk? Det skulle alltså kvitta om man börjar med Java eller ASM?

Permalänk
Medlem
Skrivet av spang420:

Det är de jag har, har även läst samlingstråden men dessa gav för det mesta lite indirekta svar som bestod av en salig blandning...

Vilket betyder att du högst sannolikt kommer få en salig blandning även här.
Min åsikt är: C++ om du är väldigt seriös och har mycket tid och driv då det är komplext i förhållande till andra.
Skulle rekommendera C# då det är enklare, samt att du har t.ex. XNA till det. Även ta en titt på Unity samt kolla in LUA vilket används en hel del inom spel.

*** raderat ***

On Topic: Sätt igång och testa så du kommer igång och känner dig för. Se om du hittar nå bra tutorials att följa som känns vettiga för dig så spelar språk och ramverk mindre roll. Sen i framtiden får du anpassa språk och verktyg efter vad du tänkt utveckla till/för.

Redigerat
Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Curik:

Alla andra språk? Det skulle alltså kvitta om man börjar med Java eller ASM?

Ptja, båda använder procedurer, flödeskontroll och data i olika former. Språkval beror på målsystem och ens egen ambition.

Visst finns det undantag, men jag tror inte att trådskaparen av misstag skulle försöka skriva ett spel i något esoteriskt programmeringsspråk.

Jag syftade på att det är värt att börja med någonting som är enkelt, för att se om man får mersmak.

Permalänk
Medlem

Det viktigaste i början är att lära sig "programmerings tänket" IMO. Därför tycker jag att "Python" är ett utmärkt språk för en nybörjare.

Visa signatur

Asus P8P67 Deluxe B3 | Intel i7-2600k@3,4GHz | 16 GB Corsair Vengeance LP 1600Mhz CL9 | Asus GTX 580 Matrix@900Mhz | Corsair Force GT 120GB | WD Caviar Black 1TB | Corsair 850 AX | Fractal Design R4 | Dell u2410 | Qpad MK-80 | QPad 5K

CITERA FÖR SVAR!

Permalänk
Medlem

Det är lättare att lära sig koncepten i ett språk som inte trampar dig på fötterna hela tiden. Detta har avhandlats många gånger på bl.a. www.gamedev.net och alla är rörande överens om att lågnivå-språk är fel väg att börja om du inte har någon bakgrund.

Redigerat
Permalänk
Medlem
Skrivet av Curik:

Det är lättare att lära sig koncepten i ett språk som inte trampar dig på fötterna hela tiden. Detta har avhandlats många gånger på bl.a. www.gamedev.net och alla är rörande överens om att lågnivå-språk är fel väg att börja om du inte har någon bakgrund.

*** raderat ***

Om du läser det jag skrev så rekommenderade jag C#, om du vill kalla det för lågnivå språk eller om du tror att jag är någon annan som svarat i tråden vet jag inte

Redigerat
Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Personligen tycker jag mer om C++ än java, men det är nog för att vi hade java i skolan och C++ på fritiden!
(Vår lärare framställde alla som idioter )

Men jag har hört att java ska vara bra att lära sig, det har gemenskaper med många andra språk!

Visa signatur

GPU: Sapphire 5700 XT CPU: i9 10850K @ 5 GHz med NH-D15 RAM: 32 GB Vengeance @ 3600 MHz PSU: eVGA Supernova 750 G3 Chassi: Define R5 Moderkort: Asus Strix Z490-F Lagring: 970 EVO 500 GB och 840 EVO 250 GB Skärm: Asus TUF VG259Q, PHILIPS Brilliance 230C, Samsung U28E590
Äldre grejer: 4790K, i7 920, Athlon 3800+ X2, 290X Crossfire, 560 Ti Sli, 560 Ti 448 cores, 8800 GT Sli.
Laptop:  MacBook Pro 13" mid 2014 

Permalänk
Datavetare
Skrivet av Gnejs:

1) Jag är inte arg, tycker bara det är onödigt att märka ord varpå det enda du skriver i ditt svar är just detta vilket i sin tur inte tillför något alls i diskussionen.
2) Det var inte jag som skrev inlägget du svarade på dvs jag har inte gjort några breda påståenden, du får ta ansvar för att läsa rätt.

Om du läser det jag skrev så rekommenderade jag C#, om du vill kalla det för lågnivå språk eller om du tror att jag är någon annan som svarat i tråden vet jag inte

Puss å trevlig helg

Dold text

Fast frågan är på vilket sätt C# är enklare än C++ för spelprogrammering. Tycker denna artikel på gamedev.net är ganska illustrativ, ingen av de buggar som gjort här hade varit mindre sannolika att göra i C# än de är i C++.

Överhuvudtaget är skillnaden i komplexitet mellan C# och C++ (som språk) minimal. C#/.Net innehåller ett medföljande bibliotek som gör det mycket mer lämpat för "back-end" utveckling än C++ men för spel är det irrelevant. OpenGL/DirectX är i stället C/C++ APIer där det i finns en del "bindings" till Java(OpenGL) och DirextX(XNA).

Och varför då använda ett språk där man kommer behöva "fight the plattform" om spelet man jobbar på växer så prestanda/effektivitetsaspekten inte lägre blir helt irrelevant (givet modern HW). Någon har redan nämn att GC skulle vara en fördel med C#/Java, det är en fördel när man bygger back-end-system på multicore maskiner då det möjliggör en rad "lock-less" algoritmer som inte fungerar utan GC. Men för interaktiva applikationer kan GC bli din värsta mardröm då den kan introducera pauser som är utanför din kontroll, enda sättet att undvika detta är att hela tiden tänka på att skriva kod som minimerar antalet kortlivade objekt (läs rekommendationerna för hur man ska utveckla Android-program som inte "laggar", väldigt mycket krut läggs just på att inte trigga GC...).

Skriver man C++11 på det rekommenderade sättet (VC++, g++ och clang++ har alla stöd för de viktigaste sakerna i C++11) så behöver man i princip aldrig ett enda "delete" i sin kod utan det kommer sköta sig själv + punkten där destrueringen av objektet sker är deterministiskt == inga oförutsägbara pauser.

Man ska däremot inte göra något allt för svårt till att börja med, då lär man ge upp oavsett språk. När jag gick på KTH var en av laborationerna att göra ett pac-man spel i C. "Grafiken" var faktiskt bara text, men tror det är helt rätt nivå för ett första spel då man får lära sig en hel del om vad som fungerar / inte fungerar på ett väldigt litet projekt som ändå blir något som är fullt spelbart! Ett sådant spel kan man också bygga ut för att testa olika aspekter, t.ex. kan man testa att implementera en AI som låter spökena samarbeta för att ringa in pac-man etc.

Drar man direkt igång med någon av de 3D-motorer som finns lär man snabbt ge upp om man inte redan är rätt bekväm med programmering, blir alldeles för mycket som bara upplevs som "magi" i det läget, man kommer att "programming by coincidence".

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

Java vill du absolut inte lära dig.

Visa signatur

| Fractal Design XL R2| 2x Gigabyte 680 Gtx@1254/7300mhz | Asrock Z77 OC Formula | 3570k@4.5ghz(1.36v) & Phanteks PH-TC14PE | 16gig hyperx beast series@2133mhz | Fractal Design Newton R2, 1000W 80+ | Samsung SSD Basic 840-Series 512GB | 2TB Toshiba 7200rpm SATA6 | 9x Scythe Glide Stream 2000rpm | 2x Bitfenix Recon Fan Controller | BenQ 27'' XL2720T 120Hz + Dell UltraSharp 27" U2713HM IPS 2560x1440 | Sennheiser HD595

Permalänk

Som nån tidigare här sa, C++ är det som gäller när du programmerar stora spel, alltså AAA. Så aspirerar du till att bli spelutvecklare så är C++ the way to go. Jag har jobbat lite i Java mindre i dom andra. Men Java är rätt så lätt jämfört med C++. Jag har för mig att Unity 3D är java också, det kan vara ett bra ställe att börja på också.

Visa signatur

Chassi: Antec Three Hundred | CPU: Intel i5 2500K @ 4,5GHz | GPU: PowerColor Radeon HD 7970 | Mobo: Asus P8P67 | Skärm: BenQ GL2450 | Nätagg: Corsair TX650

Permalänk
Hedersmedlem

*** tråd modererad ***

Jag har redigerat bort lite kommentarer som kan uppfattas som onödigt hårda.

Citat:

§ 1.1 Var trevlig och respektera andra.

/KimTjik