Vilka programmeringsspråk bör man lära sig för att skapa spel?

Permalänk
Inaktiv

Vilka programmeringsspråk bör man lära sig för att skapa spel?

Hej. Jag undrar vilka språk man bör lära sig för att kunna skapa ett spel? Jag tänker enklare spel som snake till Gta v. Det jag har tagit reda på är att lua, python, c+ är bra att kunna om man ska kunna programmera för spel. Men är det något mer språk eller kanske något program som kan arbeta i? Ni får gärna tipsa mig om saker och ting samt tutorials om ni har till detta.

Permalänk
Medlem

Vilket språk man använder är inte så himla viktigt. C++ kommer man långt med, men det finns många andra som kan användas.
Lära sig programmeringsspråk är enkelt. Lära sig programmera är svårt.

Skall man skapa lite mer avancerade spel så behöver man också sätta sig in i grafikbiliotek, spelmotorer, och en massa annat. Lära sig allt sånt tar också tid - mer tid än att lära sig ett extra programmeringsspråk..

Permalänk
Medlem

Jag kör JAVA, PHP, SQL, (LibGDX/Cocos2Dx) för att göra spel.
Så här kan resultaten se ut med ovan:

https://play.google.com/store/apps/dev?id=9213701681055947627

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Medlem

programmering kräver matematik nivå.

Visa signatur

[Intel Core i9@13900KF Raptor Lake@5,5Ghz Oc][Asus ROG Z790 HERO[G-Skill RGB 32GB 6600Mhz cL34][WD Back 2TB NvMe][2TB Samsung 970 Evo + 2x8Tb Samsung 870 Qvo spel disk][Msi RTX 4090 Gaming Trio-X][ASUS ROG Swift OLED PG48UQ][Windows 11][1000/1000Mbits Telia fiber][Razer Ornata Tangentbord.

Permalänk
Medlem

Du kan göra spel i Unreal Engine och C++.
Du har C# och Unity.
Du kan skapa browserspel eller liknande med JavaScript (Phaser, Three.JS, BABYLON.JS etc)

Beror på vad du vill inrikta dig mot.
Sen är det riktigt stora spel så har de ofta sin egen game engine istället för använda ovan nämnda.
3D rendering och spelprogrammering kräver dock mycket matematik jämfört med andra former av programmering.

Skrivet av pytonOrm:

programmering kräver matematik nivå.

Visst, spel kräver nog mycket matematik speciellt för 3D rendering. Men skulle säga att logiskt tänkande är den viktigaste aspekten att ha inom programmering. Jag själv kodar mest webbapplikationer och hemsidor inom .NET och jag har inte behövt använda mer matematik än det som lärdes ut på gymnasiet.

Permalänk
Medlem
Skrivet av pytonOrm:

programmering kräver matematik nivå.

Man kommer långt med endast mattematik från från grundskolan.

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070

Permalänk
Inaktiv

@AllMessedUp: Ni menar att man ska kunna plus, minus och multiplikation, samt delat med?

Permalänk
99:e percentilen
Skrivet av anon312888:

@Twisteddev: Ni menar att man ska kunna plus, minus och multiplikation, samt delat med?

Det hjälper otroligt mycket, vad man än ska programmera, att förstå vad en matematisk funktion är. Även till exempel trigonometri kan komma till nytta i spelprogrammering.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av anon312888:

Ni menar att man ska kunna plus, minus och multiplikation, samt delat med?

Det beror mycket på vilken typ av spel du vill göra. 2D-spel kräver sällan någon särskilt avancerad matte, lite trigonometri och interpolering är väl några av de vanligare typerna av matematik som är bra att ha koll på där. Ska man däremot göra någon sorts 3D-spel så kan det vara bra att kunna lite linjär algebra, i alla fall ha koll på de vanligaste vektor- och matris-operationerna.

När det gäller vilket språk man bör lära sig så är C++ ett av de vanligaste för själva spelmotorn, särskilt för större spel med höga krav på prestanda, medan språk som t.ex. Lua och Python används som skriptspråk. Python kan användas för att skriva hela spel om man vill, t.ex. med PyGame, men Lua är mest tänkt att användas som skriptspråk. Om du vill lära dig att programmera specifikt för att göra spel så skulle jag säga att C++ är en bra start.

Permalänk
Medlem

Beror helt på vad du vill åstadkomma. Är din primära önskan att kunna få en 2D bild att röra sig över skärmen, ta user input, spela ljud osv... Något i stil med Game Maker Studio 2 och deras GML språk hade förmodligen passat utmärkt.

Om man istället vill skapa även det som driver ens spel (spelmotorerna), förstå vad som sker, bry sig om hårdvara som kommer köra ens spel och förstå hur minneshanteringen fungerar och på riktigt ha kontroll över vad ditt spel gör och kunna optimera osv... Då är C++ mera "rätt" väg att gå.

Men allt hänger som sagt på hur mycket kontroll man önskas ha, hur mycket förståelse man vill skapa sig och vad man vill uppnå.

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Medlem
Skrivet av pytonOrm:

programmering kräver matematik nivå.

Fick IG på min linjär algebra kurs och vår lärare sa "ni kommer aldrig kunna göra spel utan matte".
När utbildningen var slut och vi hade skapat ett flertal 3Dmotorer, fysikmotorer, spelmotorer och med dessa spel från grunden så kom samma lärare fram till mig och sa "Jag hade fel"

Ok, jag hade inte noll koll på matte... men jag la kanske inte heller ner min själ på det just då. Vad jag menar är, bara för att man kanske inte har MVG (eller A har man kanske nu får tiden) i matte så skall man inte vara rädd att ge sig på att göra spel.

Mycket av matten lär man sig under arbetet och man ser även då hur det appliceras... något som i sig kan motivera många.

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Datavetare

C++ är det vanligaste språket för spelutveckling.

Har själv jobbat med C++ över 20 år (och C ungefär lika länge), men har precis börjat lära mig Rust. Har skrivit tidigare att jag tycker Kotlin är Java-done-right. Även om jag skrivit en hel del Java är det inte i närheten av mängden C och C++ kod.

Redan nu kan jag säga: tänker inte skriva en rad till i vare sig C eller C++ om jag inte absolut måste, Rust är definitivt "systemspråk done-right"!

Rust har fokuserat på att lösa rätt typ av problem, både som generellt programspråk (t.ex. har man gjort objekt-orintering rätt, något C++, Java och C# knappast lyckats med) men framförallt har man skapat ett zero-cost abstraction språk (vilket är kritiskt för systemspråk och språk som ska användas till prestandakritisk programvara som t.ex. spel) där kompilatorn kan fånga nästan alla av de riktigt elaka buggarna. Exempel är:

  • minnesläckor: kompilerar inte i Rust)

  • double-free: kompilerar inte i Rust

  • data-races: en av de absolut värsta buggar man kan ha i multitrådade program, C++, Java och C# har noll skydd mot detta i språket. I Rust kompilerar inte ett program som har data-race!!!

Ovanpå det är Rust designat för att förenkla optimeringssteget i kompilatorn. Så Rust-program kommer med största sannolikhet bli snabbare än C/C++ program då språkets design öppnar upp för en rad optimeringar som inte är möjliga i C/C++ (eller Java/C# för den delen). Vissa spår av detta ser man redan i Rust-kompilatorn baserad på LLVM-projektet (långt mer SSE/AVX optimeringar från "vanlig" kod jämfört med motsvarande C/C++).

Skulle inte ge mig på ett avancerat 3D spel än då det saknas spelmotorer för Rust för detta (man får skriva direkt mot Vulkan/DirectX). Men finns redan ett par spelmotorer just för enklare 2D spel och du nämnde ju "snake".

Skulle du ge dig på spelmotorer kan det vara bra att läsa på lite om homogena koordinater. Har skrivit enklare 3D spel med "vanlig" trigonometri. Det är möjligt men extremt mycket mer komplicerat jämfört med att beskriva allt med homogena koordinater (4x4 matriser och 1x4 vektorer för 3D-världar).

Lite info här och här

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

Ytterst få personer har all kompetens och kreativitet som krävs för att skapa ett spel. Tittar man på AAA titlar till konsoll idag så är exempelvis några grymma assembler-programmerare en kritisk del för projektet, men systemerare med helikopterperspektiv är också nödvändiga, galna kreatörer och spel-spelande realister behövs också. Dvs det behövs allt från kodoptimerande assembler-fantaster till verktygsanvändande scriptande scenariokreatörer. Är planen att alltid jobba solo skulle jag säga Unity och C#. C# kommer du dock inte ha mycket nytta av som anställd på en större studio, jag skulle säga att nästan all kod som skriv i spel idag är C/C++.

Permalänk
Medlem

Jag hade lärt mig Java som första språk så jag skulle använda C# som client och Java som Server. Båda språken är väldigt lika. Men om jag skulle lära mig ett nytt språk så skulle det bli C++, mycket bra för spel.

Permalänk
Medlem
Skrivet av Hyfalls:

Jag hade lärt mig Java som första språk så jag skulle använda C# som client och Java som Server. Båda språken är väldigt lika. Men om jag skulle lära mig ett nytt språk så skulle det bli C++, mycket bra för spel.

C# som client Java som server. Hur menar du?
C# är ett serverspråk, om du inte snackar om Blazor? ^^

Permalänk
Medlem
Skrivet av zaibuf:

C# som client Java som server. Hur menar du?
C# är ett serverspråk, om du inte snackar om Blazor? ^^

Hur menar du nu? Menar du webutveckling speciellt och blandar ihop java med javascript?

I övrigt finns inga serverspråk eller klientspråk, just javascript är ju vanligt på websidor där koden körs av klienten annars förstår jag inte alls hur du menar.

Om ett år ska ju .Net 5 vara klart (.Net och core går ihop) då lär ju c# vara ganska likställt java (undantaget antal implementationer i *nix respektive windows såklart).

Permalänk
Medlem
Skrivet av zaibuf:

C# som client Java som server. Hur menar du?
C# är ett serverspråk, om du inte snackar om Blazor? ^^

Skrivet av Mordekai:

Hur menar du nu? Menar du webutveckling speciellt och blandar ihop java med javascript?

I övrigt finns inga serverspråk eller klientspråk, just javascript är ju vanligt på websidor där koden körs av klienten annars förstår jag inte alls hur du menar.

Om ett år ska ju .Net 5 vara klart (.Net och core går ihop) då lär ju c# vara ganska likställt java (undantaget antal implementationer i *nix respektive windows såklart).

T.ex jag använder Unity (C#) som en game engine medans jag använder Java för att skapa mina servrar åt mitt spel.
Jag har programmerat mmo rpg spel med unity (c#) sedan skrivit servrana med Java.

Permalänk

@anon312888: Kör c#. Går att göra appar, program samt spel till Android, windows, osx, ios med det förhållande viss lätt(osäker på osx) Unity, unreal, cry-engine, monogame o.s.v. stödjer c#. Påminner om c++ så är lätt att bredda sig vid senare tillfälle. Har dessutom highlevel så har mycket bra funktioner