Permalänk
Medlem

Programmera onlinespel i 2D

Jag vill programmera ett mycket enkelt onlinespel i 2d. Så till en början vill jag bara att man ska ansluta till en server sen kan två datorer logga in. Sen har man t.ex. bara två prickar man kan styra med piltanenterna som går upp, ner, höger, vänster i ett rutnät eller liknande.

Jag kan ingenting alls om spel programmering, men det kan hända att mina PHP kunskaper hjälper till lite i förståelsen av språket. Men här är mina funderingar.

1. Vilket språk rekomenderar ni för detta? Jag vill bara inte ha det enkelt, utan vill ha möjlighet att avancera spelet rätt mycket (dock fortfarende 2D).

2. Jag har sett massvis med böcker om spelprogrammering, och undrar om det är några ni rekomenderar. Det är ju inte vanlig spelprogrammering, utan onlinespels-programmering. Några ni rekomenderar för detta?

Permalänk
Medlem

Vad hette det därna.....matricks tjofrös...hm..återkommer med namn

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."

Permalänk
Medlem

jag skulle tro att java eller C++ är två enkla språk att jobba med gällande online-stöd.
Jag har iofs inte gjort något onlinebaserat själv men jag känner folk som gjort enklare servers för just det ändamålet i java.

Visa signatur

Opteron 165 CCBWE 0550XPMW | MSI Neo2 platinum 54G | 2x512mb Geil One S 1,5-2-2-5 @ 400mhz | Gainward GF 6800 GT | WD 100gb + Maxtor 200gb + Maxtor 250gb

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Delight
Vad hette det därna.....matricks tjofrös...hm..återkommer med namn

Antar att du menar Fuel?
Tror inte deras sida är upp än efter matricks lilla misstag

Visa signatur

"Sleep is one of those funny things about being a human being" - Marshall Brain
"Mike broke the hubble, Mike broke the hubble" - Mystery Science Theater 3000
"Det finns inget som kan kallas skrot!" säger Mulle Meck, "bara gamla saker som går att använda på nya sätt. Rulla ut och rulla på."

Permalänk
Medlem

Fuel hette det ja, hehe

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."

Permalänk
Medlem

Java är ett bra val då det är plattformsoberoende, har mycket bra libraries för onlinefunktioner från början samt till skillnad från C/C++ helt ok libraries för GUI (swing).

Leta lite guider för sockets och swing i java så ska det nog gå snabbt.

Permalänk
Medlem

1. Python tillsammans med Pygame är nog en bra kombination. För enkla nätversfunktioner duger nog pythons inbyggda nätverskstöd.

2. Vet inte..

Permalänk

1. C++ kan ju vara bra men du får räkna med en resa dit, för du kommer nog inte kunna skriva mycket mer än simpla Input/Output-program ett tag. Det är dock ett bra språk att ha lärt sig, så jag tycker du kan ha det här som "dröm" ett tag.

Resurser för spelmakande rent generellt sett : gamedev och blinkenlights
Resurser för nätverksprogrammering (i C/C++) : beej's socket guide

2. Boken "C++ programmering" av Stephen Prata är rätt bra, tror jag. Har för mig titeln har den där lustiga särskrivningen i den svenska titeln på riktigt. Heter (om jag inte missminner mig) "C++ Primer Plus" på engelska.

Lycka till.

Visa signatur

"90% av att vara smart är att veta sina begränsningar. De återstående 10 procenten är att veta att man måste gå utanför dessa begränsningar."
Hjälp till att öka kunskapen.
FirefoxMyths

Permalänk
Medlem

Om jag programmerar C++ vad rekomenderar ni för kompilator då? Vill gärna ha en som jag kan utveckals med, så jag slipper byta när jag börjar med mer avancerad programmering.

(Pris spelar ingen roll)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Hoomie
Om jag programmerar C++ vad rekomenderar ni för kompilator då? Vill gärna ha en som jag kan utveckals med, så jag slipper byta när jag börjar med mer avancerad programmering.

(Pris spelar ingen roll)

Microsoft Visual C++ 2005

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk

Re: Programmera onlinespel i 2D

Citat:

Ursprungligen inskrivet av Hoomie
1. Vilket språk rekomenderar ni för detta? Jag vill bara inte ha det enkelt, utan vill ha möjlighet att avancera spelet rätt mycket (dock fortfarende 2D).

När det gäller 2D så är det sällan programmeringsspråket som sätter gränserna, utan snarare programmeraren. Välj istället språk efter vad du trivs med.

I allmänhet är det inte så att olika språk och kompilatorer klarar av olika avancerade saker. Det handlar mest om läsbarhet/skrivbarhet vs. prestanda.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk

Re: Re: Programmera onlinespel i 2D

Citat:

Ursprungligen inskrivet av Sebastianj
I allmänhet är det inte så att olika språk och kompilatorer klarar av olika avancerade saker. Det handlar mest om läsbarhet/skrivbarhet vs. prestanda.

Handlar oftast om att värdesätta sin tid mer än vad man förväntar sig få ut i ren känsla när man är klar med programmet/projektet.

Sen handlar det lite om att offra användarens resurser för att man själv inte orkar jobba fullt ut, det är alltså i vissa fall programmerarens tid som går före vad användaren bryr sig om. Visserligen kan ju en lång och jobbig utvecklingsperiod reflekteras i prissättning, något som användaren ofta bryr sig om. Då tycker jag att det kan vara en fråga om att faktiskt ta med användaren i sin beräkning.

Men i det stora hela tror jag det handlar om att man tycker att man har för lite tid (eller kanske ork), definitivt inte läsbarhet och jag är tveksam till vad "skrivbarhet" ska vara.

Visa signatur

"90% av att vara smart är att veta sina begränsningar. De återstående 10 procenten är att veta att man måste gå utanför dessa begränsningar."
Hjälp till att öka kunskapen.
FirefoxMyths

Permalänk

Re: Re: Re: Programmera onlinespel i 2D

Citat:

Ursprungligen inskrivet av RikkiAnderzoni
Men i det stora hela tror jag det handlar om att man tycker att man har för lite tid (eller kanske ork), definitivt inte läsbarhet och jag är tveksam till vad "skrivbarhet" ska vara.

Menar att det ofta är lättare att lära sig läsa/skriva i scriptspråk, medans man får mycket bättre prestanda i kompilerade språk.

Sen vilk prioriteringar som gäller för kommerciella program var väl lite offtopic, nu handlade det väl om ett hobbyprpjekt. Då handlar det ju som sagt mest om personlig smak.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Medlem

Hur är det med belastning på de olika språken, om man vill ha många spelare på spelet så kanske det spelar roll hur mycket belastning det tar på servern, bandbredd o.s.v.

Permalänk
Citat:

Ursprungligen inskrivet av Hoomie
Hur är det med belastning på de olika språken, om man vill ha många spelare på spelet så kanske det spelar roll hur mycket belastning det tar på servern, bandbredd o.s.v.

Jo, har du många spelare så beror serverprestandan en del på språket. Nättrafiken bör inte skilja så mycket, men C++ är ju helt klart snabbast på processorn. Man måste dock inte skriva servern och klienterna i samma språk.

hur stor roll det spelar kan jag inte avgöra. Det beror på flera faktorer, hur många spelare och hur avancerad spelmotor(en massa fysik tar t.ex. en hel del CPU-tid) etc.

Själv skulle jag försöka göra en överslagskalkyl på hur jag tror servern kommer belastas. Många skulle helt enkelt köra med C++ från början för att slippa räkna och ändå vara trygg.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Medlem
Citat:

Många skulle helt enkelt köra med C++ från början för att slippa räkna och ändå vara trygg.

Det låter bra, jag har viss tidigare erfarenhet med C++ så det passar nog bra för mig då.

Nu är det bara om jag kan få lite fler rekomendationer av böcker för denna typ av programmering.

Edit: Microsoft Visual C++ 2005 skrev en att jag skulle använda, finns det med i Microsoft Visual Studio 2005 ?

Permalänk

Annars så kan du prova ett program som heter "Gamemaker".
Inte så mycket programering utan mera dra å släpp.
programmet har stöd för att tillverka online spel (har jag för mig iaf, kan ha fel)

Permalänk
Medlem

Eve Online, ett rätt stort MMORPG, använder Stackless Python på sin server.

http://www.eve-online.com/faq/faq_07.asp

Jag skulle också rekommendera Python om du vill få igång ett sånt spel hyfsat snabbt (inom en månad elelr två kanske). Med C++ kommer det antagligen ta längre tid. Men det är väl mest en fråga om vad du vill lära dig (eller gör du det bara för att se hur lätt/svårt det är att göra ett enkelt onlinespel?).

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net

Permalänk
Medlem

Java är väl det språk där man fortast kommer igång med nätverksprogrammering och är det språk jag skulle rekommendera alla dagar i veckan för att skriva nätverksapplikationer i början.

I starten så är det hela tänket med client-server som är svårt, vem ska ansvara för vad vilka datastrukturer behöver klienten och vilka ska ligga på servern, behöver jag några delade strukturer hur ska jag synkronisera dessa strukturer, hur håller vi reda på om någon klient vill oss något, hur gör vi broadcast till alla klienter hur låter vi två klienter kommunicera ostört med varandra osv.

När man håller på med dessa saker så är det ju väldigt skönt om man slipper bry sig så mycket om de undeliggande sakerna som gör att själva kommunikationen fungerar. Och här hävdar jag att java är mycket bra på det. Finns bra med dokumentation och allt man behöver ligger i grund-api:n så några extra bibliotek eller liknande behövs inte.

Visa signatur

Confused by earlier errors. Bailing out...
pluggakuten.se - Din läxhjälp på internet

Permalänk
Medlem

Hur lång tid det tar spelar inte så stor roll, hade bara tyckt det vore bra att lära sig C++ programmering. Jag vill ja ett språk där aldrig språket blir en begrännsning, utan bara mina kunskaper. Vad jag har förstått är inte Java lika avancerat som C++. Spelet gör jag som motivation, är skojj att ha ett projekt man utvecklas med.

Permalänk
Citat:

Ursprungligen inskrivet av Hoomie
Hur lång tid det tar spelar inte så stor roll, hade bara tyckt det vore bra att lära sig C++ programmering. Jag vill ja ett språk där aldrig språket blir en begrännsning, utan bara mina kunskaper. Vad jag har förstått är inte Java lika avancerat som C++.

Det är en missuppfattning. Som sagt så kan i princip alla allmänt använda språk idag gör praktiskt taget vad som helst. Det som skiljer är prestanda och syntax/struktur.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Medlem

Den stora missuppfattningen är väl att det finns ett språk som gör att om man lär sig det så behöver man aldrig peta på något annat sen.

ALLA språk har styrkor och svagheter. Det gäller att identifiera dessa och välja ett lämpligt/passande språk för den uppgift man har.

Istället för att fokusera på att lära sig <insert språk här> så tycker jag att man ska fokuser på att lära sig programmera <insert paradigm här>. Med paradigm menar jag alltså tex funktionell programmering, objektorienterad programmering, procedurel programmering osv.

när man kan programmera så är det sen ingen större konst att byta språk (om de är inom samma paradigm iaf). Man tänker i stort på samma sätt det enda som skiljer är hur man syntaxmässigt skriver det.

Jag vet att i början så likställer många programmering med syntax. tex jag kan programmera eftersom jag vet att en for loop (oftast) skrivs for(int i = 0; i<whatever; ++i){/*code here*/} i tex C++ men det är som sagt bara syntaxen. När man sen kommer från det stadiet så räcker det att identifiera att här måste jag ha en loop som ska åstadkomma detta, passar det med en en for, while eller do while. och sen har man löst problemet. Exakt hur man skriver ner loopen sen skiljer sig ju mellan olika språk men är inte intressant för programmets funktion.

Oj, nu har jag kanske flummat lite men jag hoppas ni förstår vad jag menar.

Visa signatur

Confused by earlier errors. Bailing out...
pluggakuten.se - Din läxhjälp på internet

Permalänk
Citat:

Ursprungligen inskrivet av Hoomie
Hur lång tid det tar spelar inte så stor roll, hade bara tyckt det vore bra att lära sig C++ programmering. Jag vill ja ett språk där aldrig språket blir en begrännsning, utan bara mina kunskaper. Vad jag har förstått är inte Java lika avancerat som C++. Spelet gör jag som motivation, är skojj att ha ett projekt man utvecklas med.

Som de andra säger - Du kommer inte begränsas av Java eller något annat språk, antagligen. Men jag tycker din attityd skriker "Jag vill lära mig hur saker funkar" och då ser jag en del fördelar för dig med att programmera C++. I såna fall har du möjligheten att gå ner på gräsrotsnivå och ha kontroll över varje del av programmet.

Kommer antagligen komma ett antal posts efter den här som helt förnekar att du inte skulle ha samma kontroll i <minoritetsspråk>. Ueeh.

Visa signatur

"90% av att vara smart är att veta sina begränsningar. De återstående 10 procenten är att veta att man måste gå utanför dessa begränsningar."
Hjälp till att öka kunskapen.
FirefoxMyths

Permalänk
Citat:

Ursprungligen inskrivet av RikkiAnderzoni
då ser jag en del fördelar för dig med att programmera C++. I såna fall har du möjligheten att gå ner på gräsrotsnivå och ha kontroll över varje del av programmet.

Du får skilja på programmet och datorn. Med C++ har man större kontroll över datorn än många andra språk, man kan altså gå i och pilla direkt i minnet på ett annat sätt än till exempel i Java. Men kontrol över hur man strukturerar själva programmet sitt har man ju alltid så länge man inte snackar typ Actionscript i Flash och liknande. Sen finns det ju en del språk som tillåter kontroll över själva språket också, som Lisp. Ur det perspektivet så har man ju mindre kontroll i C++.

Citat:

Ursprungligen inskrivet av RikkiAnderzoni
Som de andra säger - Du kommer inte begränsas av Java eller något annat språk, antagligen. Men jag tycker din attityd skriker "Jag vill lära mig hur saker funkar"

Jag tycker det mer låter som "Jag är rädd att måla in mig i ett hörn på grund av att jag väljer ett språk som begränsar mig" Där är ju egentligen Kydyls svar om att man alltid kan lära sig fler språk relevant. Lär man sig C++ så är det ingen större svårighet att gå över till Java om man känner för det och vice versa, handlar mest om att lära sig syntaxen och att lära sig kolla i referenser.

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Medlem

Vad som är viktigt för mig är egentligen prestandan. Iom att det är ett onlinespel är det viktigt att det inte laggar för användaren, samt att det ska ta upp så lite server kapacitet som möjligt.

Permalänk
Medlem

Så länge du inte kör extremt många användare lär det nog inte göra någon direkt skillnad
Tänk på att i ett onlinespel får man ju faktiskt räkna med lite lagg "per default" eftersom pingen är lite högre än innuti en vanlig dator, så där gör nog en 5ms fördröjning ännu mindre skillnad.

Om Eve kan köra Python på en server med 25 000 människor online och 5000 stjärnsystem, så klarar nog ditt spel också av det Din största sak att oroa dig över de närmsta månaderna borde vara att öht. lära dig språket och få någonting spelbart på skärmen, inte att spara klockcykler på servern. Dessutom kan du ju som sagt köra helt olika språk på klient och server om du vill det.

Några synpunkter: Du säger att du vill ha ett projekt att "utvecklas med", men börja inte med ditt stora spel direkt när du lär dig ett språk... Det som kommer hända är att några veckor senare kommer du kolla tillbaka på din gamla kod och tänka VAD I HELVETE? och skriva om det. Det gäller visserligen även senare men än mer så när man är i det tidiga stadiet av lärande

Visa signatur

hmm

Permalänk
Medlem

För det här:

"Jag vill programmera ett mycket enkelt onlinespel i 2d. Så till en början vill jag bara att man ska ansluta till en server sen kan två datorer logga in. Sen har man t.ex. bara två prickar man kan styra med piltanenterna som går upp, ner, höger, vänster i ett rutnät eller liknande."

Så lär inte prestandan vara nåt problem vad du än använder för språk. Sen kanske det är lite fräckt av mig att säga det här, men jag tror inte prestandan är lika viktig som du tror.

C++ vs Python är ju den eviga frågan här på Swec. Min åsikt är såhär: man kan börja med vilket språk som helst, men man får ut olika saker av det. Med C/C++ lär du dig bättre hur datorn fungerar i grunden, men det kan ta ett tag att få nåt gjort som inte är ett konsollprogram. Dessutom är ju C++ prestandaspråket #1 (bortsett från assembler osv).

Med Java är det lätt att skriva "klassisk" objektorientering (eller vad man ska säga). Dvs, det är kanske det språket man lättast får en klar bild över vad OO innebär, på sätt och vis. Det man gör blir lätt "korrekt", dvs man gömmer medlemsvariabler bakom get/set osv. Det kan man naturligtvis göra i Python också, men det är inte lika rätt att göra det där, av någon anledning. Vet inte hur jag ska förklara bättre.

Slutligen, med Python går det snabbare (än både C++ och Java) att göra program, alltså att få resultat. Efter att spenderat några dagar med att lära dig ungefärliga syntaxen kan du antagligen få upp en trivial client/server på en dag (finns exempel i Python-docsen), och ett enkelt fönster på en dag till (också lätt att hitta exempel på). Sen kommer det verkliga jobbet som är att koppla ihop dessa och göra det på ett snyggt sätt.

Du kan ju också testa Haskell/Lisp/<annat skumt språk ;)>, men det är nog språk jag mest rekommenderar när man kan nåt "OO-språk" först. Det kan vara intressant att se hur man kan lösa saker på ett helt annat sätt.

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Srekel

Du kan ju också testa Haskell/Lisp/<annat skumt språk ;)>, men det är nog språk jag mest rekommenderar när man kan nåt "OO-språk" först. Det kan vara intressant att se hur man kan lösa saker på ett helt annat sätt.

De flesta saker som sägs om Python gäller även Ruby. Hursomhelst håller jag med om att det är bättre att börja med ett interpreterat språk. Jag själv känner mig mycket mer produktiv i Ruby än jag gör i C++ t.ex.

Sedan beror det lite på projektet med, men små enkla spel ser jag ingan anledning att inte skriva i Python/Ruby/<insert your scripting language of choise> annat än man verkligen vill lära sig ett visst språk

EDIT: prestanda i nätkoden beror nog inte så mycket på vilket språk du väljer som på hur du skriver det och vilken data som skickas.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Tackar för svaren, i de senare inläggen verkar Python lite mer lämpligt måste jag säga. Så det får nog bli det.

Då har jag två följd frågor:

1. Vilken kompilator rekommenderas?
2. Kan ni rekomendera några bra böcker för att komma igång med denna typ av programmering (onlinespel) ?

Permalänk
Medlem

1. kolla www.python.org
2. gratisbok för nybörjare: http://greenteapress.com/thinkpython/

EDIT: jag kanske överdrev när jag fick det att låta som att du ska kunna skriva ett nätverksspel på en vecka utan att kunna nånting om programmering innan. det kommer nog ta längre än så

Visa signatur

Min hemsida: http://www.srekel.net
Pocket Task Force: http://ptf.srekel.net
Kaka e gott! http://kaka.srekel.net