Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2019

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.

Trädvy Permalänk
Medlem
Registrerad
Feb 2015

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..

Trädvy Permalänk
Medlem
Plats
Stockhom
Registrerad
Jun 2004

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

Main: Ryzen 7 - 1700 @ 3.9 | 32 Gb Corsair 3000 MHz | RX 590 8Gb
Backup: NAS - Synology
--------------------------------------------------
Grundare av MaseApps. Se våra spel: www.maseapps.com. För IOS och Android.

Trädvy Permalänk
Medlem
Plats
sverige
Registrerad
Apr 2003

programmering kräver matematik nivå.

Intel Xeon X5660@4400Mhz@Asus P6T Deluxe socket 1366 Moderkort@12Gb ddr3 1638mhz@MSI Ventus RTX 2060@32 Tums Aoc gaming skärm 144Hz@Razer blackwidow 2016 edition Tangentbord@World Community Grid Folding member

Gamer Dator
[Intel Core i9 10980XE@ ?][Asus Rog Rampage VI Extreme Encore Moderkort][32Gb GSkill RGB 4266Mhz Royal Silver Minnen][Msi RTX 2080 Super][32 Inch AOC Gaming 144hz skärm][29TB Hårddisk][Razer BlackWidow Tangentbord

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013

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.

Trädvy Permalänk
Medlem
Plats
Stockhom
Registrerad
Jun 2004
Skrivet av pytonOrm:

programmering kräver matematik nivå.

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

Main: Ryzen 7 - 1700 @ 3.9 | 32 Gb Corsair 3000 MHz | RX 590 8Gb
Backup: NAS - Synology
--------------------------------------------------
Grundare av MaseApps. Se våra spel: www.maseapps.com. För IOS och Android.

Trädvy Permalänk
Medlem
Registrerad
Aug 2019

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

Trädvy Permalänk
Entusiast
Testpilot
Plats
Göteborg
Registrerad
Aug 2011
Skrivet av Moviescript:

@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.

Skrivet med hjälp av Better SweClockers

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av Moviescript:

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.

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Aug 2009

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å.

Asus Zenith Extreme | 32gb DDR4 3200MHZ CL14 | Threadripper 1950X | 1080Ti
Asus Z97 Pro Gamer | 32gb ram DDR3 2400MHz | i7 4790k | 2 x R9 390 - Barnen fått ta över
Asrock P67 Extreme4 rev3 | 16gb DDR3 2400MHz | i7 2600K | R9 290 - Barnen fått ta över
En massa bärbara, servrar, RPi's och andra boxar

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Aug 2009
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.

Asus Zenith Extreme | 32gb DDR4 3200MHZ CL14 | Threadripper 1950X | 1080Ti
Asus Z97 Pro Gamer | 32gb ram DDR3 2400MHz | i7 4790k | 2 x R9 390 - Barnen fått ta över
Asrock P67 Extreme4 rev3 | 16gb DDR3 2400MHz | i7 2600K | R9 290 - Barnen fått ta över
En massa bärbara, servrar, RPi's och andra boxar

Trädvy Permalänk
Datavetare
Plats
Stockholm
Registrerad
Jun 2011

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

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

Trädvy Permalänk
Medlem
Registrerad
Mar 2015

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++.

Trädvy Permalänk
Medlem
Registrerad
Okt 2019

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.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013
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? ^^

Trädvy Permalänk
Medlem
Registrerad
Mar 2015
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).

Trädvy Permalänk
Medlem
Registrerad
Okt 2019
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.

Trädvy Permalänk
Medlem
Registrerad
Apr 2013

@Moviescript: 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