Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

John Carmack bezig met Doom-RPG voor mobieltjes

De invloedrijke ontwikkelaar John Carmack, onder meer bekend van de Doom-serie, werkt op dit moment aan een op Doom geïnspireerde role-playing game voor de mobiele telefoon, zo schrijft hij op zijn blog. Nadat hij voor de grap eens een game voor zijn telefoon in Java schreef en merkte dat dit best gemakkelijk ging, kwam hij tot de conclusie dat het leuk zou zijn eens op Doom gebaseerd spel voor de mobiele telefoon uit te brengen. Carmack gaat op zijn blog in op de problemen waartegen hij tijdens de ontwikkeling aanloopt. De eisen die een telefoon stelt aan een spel zijn streng; zo mag de totale grootte van het spel slechts zo'n 200KB zijn, minder dan een texture in Doom III. Ook aan de besturing van games op het mobieltje kunnen niet al te hoge eisen worden gesteld; toetsen reageren traag en werken ook voor de gamer niet lekker.

John Carmack (cartoon) kleinHij ontwikkelde een concept waarin de speler stap voor stap beweegt door een driedimensionale wereld. Dit kan zowel voor de speler als de telefoon het maximale uit de mogelijkheden halen. Begon Carmack nog met een positieve indruk van Java, gaanderweg is deze omgeslagen in een aversie tegen de vele nadelen van Java. Zo is Java traag; waar de hardware van een telefoon vaak sneller is dan bijvoorbeeld een Gameboy Advance, vertraagt Java de boel aanzienlijk. Ook is Java lang niet zo portable als gedacht, op iedere telefoon lijkt wel een eigen variant van Java te draaien, met eigen problemen. Ook mobiele telefoons zijn niet echt een game-platform. Naast de eerder genoemde gebrekkige besturing, is de latency van datapakketjes zo hoog dat multiplayer bijna geen mogelijkheid is en valt een tijdige afhandeling van belangrijke processen ook niet binnen de kundigheid van de telefoon.

Door

75 Linkedin Google+

Bron: Weblog Carmack

Reacties (75)

Wijzig sortering
Dat is grappig, ik heb al een hele tijd Doom 1 op mijn telefoon staan, gewoon geport door iemand naar het Windows Mobile platform. Nu heb ik het geluk dat mijn telefoon Windows draait, een 200MHz processor heeft en 320MB geheugen (opslag) maar ik denk dat de meeste nieuwe telefoons van dit moment wel zo snel zijn dat ze dit soort graphics aankunnen.
Uhm.. Doom 1 draaide op een 386 (33Mhz min) en 20MB diskspace. En VGA display grootte (320x240) lijkt me al groter dan een gemiddelde telefoon.

(edit: oops, het is 320x240 en niet 320x200, anders is het niet 4:3)<div class=r>[Reactie gewijzigd door El_Muerte_[TDS]]</div><!-- end -->
En VGA display grootte (320x200) ???

VGA was altijd naar mijn weten 640*480...


Overigens draait doom ook gewoon op een nokia 7650 met 3.6 mb intern geheugen. deze telefoon heeft een 66 mhz processor.

Wanneer je dat vergelijkt met een dos bak die draait op een 386 33 mhz waarbij de 7650 een veel geavanceerder OS op de achtergrond heeft draaien vergeleken met DOS is dat wel een geinige vergelijking. (Ja, rick is zich er van bewust dat op een 386 windows 3.11 kon draaien...)
640x480x4 is nog VGA ja. Dan heb je maar 16 kleuren.
doom en ook q1 draaiden onder dos in 320x240... een kwart van normaal vga, maar wel met 256 kleuren... VET MAN :P
De oh zo populaire modeX resoluties.
Jeetje man, is dat niet een beetje overkill voor Doom 1 ;)
Ik draaide Doom ook al op mijn SonyEricsson P800. Werkte perfect.
Hij ontwikkelde een concept waarin de speler stap voor stap beweegt door een driedimensionale wereld.
Sorry, maar dit concept is toch oeroud, Dungeon Master, Eye Of The Beholder, etc?

Volgens mij waren er al zulke games voor mobieltjes, zelfs?
[no flame intended]
John Carmack is ook nooit verantwoordelijk geweest voor vernieuwende spel concepten, of uberhaupt voor een spel concept. Hij is meer technisch dan creatief.
Hier op kantoor hebben de technische mensen vaak ook een inbreng op de uitvoering van een concept. Soms ontstaan deze ook op de werkvloer
Daarom gebruik ik ook het woord "verantwoordelijk".
[licht off-topic]
Wat dacht je van first person shooters zoals wolfenstein, doom en daarna echte 3d met quake etc. Dit zijn de roots van fps spellen en toch echt het werk John Carmack.
Vernieuwend is hij dus wel degelijk geweest.
[/ licht off-topic]

Verder denk ik dat het nooit echt een grote hit gaat worden dat gamen op je mobiel. Er is teveel verschil kwa snelheid in types telefoons en het werkt nooit echt lekker. De 2 games die ik tot nu toe heb geprobeerd waren behoorlijk kort en de gameplay was al helemaal om te huilen (logisch een telefoon gamed niet lekker).
Het is zijn programeer werk. Maar niet zijn design\creatief werk.
Wolfenstein 3d was Tom Hall
Doom was o.a. Romero
Quake was o.a. Romero en American McGee

Wat mij leuk lijkt is als het Keen 4 tal weer eens samen een spel maken: Tom Hall (Creative design), John Romero (Code), John Carmack (Code), Adrian Carmack (Art).
1: je kan toch ook creatief zijn met technische dingen? een hele mooie manier een probleem weg-coden.

2: zonder die technische mensen hadden er nooit mooie games e.d. geweest

3: volgens mij was carmack in het begin van iD games maar met 1 of 2 anderen, dus dan zal hij ook wel het spelconcept naar iets goeds hebben uitgebouwd.
Maar dat is toch geen reden dat het zou mislukken? Elk idee is al een keer bedacht, maar het gaat om de manier van uitvoeren.
Hoe kun je nu van een taal zeggen dat tie traag is?

C is even snel als Java...

Het is 'm die JVM die het doet.. Java is op alle systemen gelijk.. Wat de JVM er me doet dat wil nogal eens verschillen.

Ja er zitten nadelen in java, zeker maar die zitten in elke taal. Dat de jvm traag is, ligt niet aan Java.. dat ligt aan hoe de jvm gemaakt is.

Daarnaast er zijn wel degelijk compilers om Java ineens door te compilen naar machine code.. (gcj bijvoorbeeld). Wat ik daarmee gedaan heb leverde mij wel degelijk een snel werkend geheel op.

Mensen die hier Breed spelen, als ik me niet vergis zitten daar delen in die gecode zijn in java. Dus het kan wel.

Niet op telefoons natuurlijk...
Je kan het op meerdere manier bekijken:

execution time:
Java is geen machine code, daardoor zal de gecompilede byte-code altijd geintepreteerd moeten worden. Hierdoor is de taal traager dan een taal die wel machine code produceert (C\C++, Pascal, etc.).
Soms kan je Java code volledig naar machine code compilen, waardoor het net zo snel als elke andere programeer taal is. Maar vaak kan je de Java code niet volledig naar machine code compilen waardoor er een deel nog steeds als java byte-code uitgevoerd word. Natuurlijk is java is dat geval niet meer runtime portable, waar je vaak toch aan vast zit (in het geval van telefoons dus).

compile time:
Java is ook niet bijzonder snel in compilen. Ik weet niet of C en C++ sneller of trager zijn bij compilen (vast niet). Maar Pascal bijvoorbeeld is verschrikkelijk snel in vergelijking met Java.

development time:
Daar zou je lang over kunnen twisten of Java sneller is voor het ontwikkelen, of juist trager. Dus deze kan je net zo goed buiten beschouwing laten.
Je vergeet 1 ding: JIT

Just in time compile kan er voor zorgen dat een stuk bytecode efficienter kan worden omgezet dan een normaal stuk native gecompileerde code. Dat lijkt vreemd en tegenstrijdig, maar het verschil zit hem in het feit dat de Jitter de code kan optimaliseren volgens de op dat moment aanwezige randvoorwaarden. Een stuk vooraf gecompileerde code kan hier geen rekening mee houden.
JIT helpt maar in de praktijk is C++ altijd sneller dan java. Java is ook niet bedoeld als C++ substituut. Toch vind ik dat java overgewaardeerd is, op hoeveel hoge scholen en universiteiten leert men eerst java aan en dan pas in de laatste jaren C++ ... gewoonweg belachelijk.
@oeLangOetan: ze gebruik Java omdat Java redelijk makkelijk aan te leren is (onderandere voor de OO concepten). Vroeger werd vaak Pascal gebruikt, zelden word C of C++ gebruikt omdat het gewoon een verschrikkelijke taal is om mee te beginnen. Besides, je moet mensen niet een programmeer taal leren maar programeer concepten. In welke taal je het dan implementeerd boeit niet. In alle (procedural) programeer talen werkt een quicksort op dezelfde manier.
1 van de redenen waarom "Java" traag is, komt doordat men de meest domme dingen met die taal kunnen doen, wat MB's aan geheugenlekken oplevert (stucturen die naar elkaar blijven refereren), of bijvoorbeeld objecten bij de vleet aanmaken:

frame.setColor(new Color(23,43,21));

i.p.v.

static final Color myColor = new Color(23,43,21);
...
frame.setColor(myColor);

Het verschil in code is miniem, het geheugengebruik en de executietijd niet.

Verder blijf ik java wel traag vinden. Start java maar op met "-v", en zie hoeveel classes geladen worden om jouw simpele JFrame te tonen.. |:(
ik denk dat er voor de huidige gsm/gprs niet echt game toekomst is .

maar over een paar jaar als meer mensen een pda met belfunctie hebben met bv een uitrol scherm dan zou het wel een hit kunnen worden ,,, geheugen kaartjes kosten nu al erg weinig ......
Waarom niet, de gameboy was jaren geleden echt wel een hit hoor... En de playstation portable momenteel ook.
De bedienbaarheid en scherm is qua om,vang en resolutie niet te vergelijken met een gemiddelde 06.....
Je zult toch echt richting een combo pda/gsm moeten .. en dan zouden er ook nog een andere interface aan moeten anders is het niet te doen......
desnoots met een soort inklikbare uitbreiding , zijn er al blijkbaar
Had nokia niet al zo'n flop gebouwd ?
die flop heet de N-Gage en is met z'n tamelijk meevallende verkopen wellicht geen hoogdraver, maar als flop is ie toch ook wel gefaald.

Die NGage was vooral een kloteding in het gebruiksgemak, niet eens zozeer vanwege de prutte speelbaarheid van van alles: de games liepen prima, maar het beeld is bagger lelijk en even en andee game => batterij eruit om de MMC kaart te wisselen. Lekker handig.
De gameboy was geen telefoon!!! Dat is precies wat hij zegt: de huidige TELEFOONS zijn ongeschikt als mobielgaming platform omdat de apparaten niet bedoeld zijn voor dit gebruik. Het OS is vaak naadje, het Java gebeuren lijkt heel leuk maar natuurlijk waren de problemen van Java al bekend ("portability" die vaak gebakken lucht blijkt, traagte) en de invoer mechanieken zijn niet bedacht met het oog op reactiesnelheid.

Als je een Razor Boomslang muis bij je GSM geleverd krijgt kun je het gametoys noemen.Tot die tijd is een gsm een telefoon waar je fotootjes mee kan nemen en je office werkzaamheden op kan verrichten. Verdere functionaliteit is in negen van de tien gevallen ongewenst en overbodig.
een telefoon is inderdaad niet goed voor gamen, en een gameboy zal misschien ook wel niet goed zijn voor bellen...wie weet
Ja, vooral na dat pixel-gedoe is t een echte hit :+
Vergeet niet dat de meest 'non-grafische' RPG's héééél Populair zijn!
Dus als je niet je pc hoeft op te starten om dit toch te kunnen spelen, zal zeker een markt voor zijn!
volgens mij zijn de meeste mensen de text-based RPG al lang vergeten, of hebben ze ze zelfs nog nooit meegemaakt
Goed dat John zich ook eens uitspreekt over de programmeer mogelijkheden op de huidige mobiele telefoons. De meeste serieuze ontwikkelaars van programmas voor mobieltjes lopen hier regelmatig tegen aan alleen wanneer John het zegt wordt er misschien eindelijk eens serieus naar een oplossing gekeken :)

[offtopic]
Waarom hier toch altijd mensen Java verdedigen alsof ze het zelf geschreven hebben snap ik niet hoor.
Hoe je het ook wend of keert een JVM vertraagd de theoretische snelheid van Java programma's zonder uitzondering.
Misschien dat je dat tot een minimum kan beperken door heel net te coden maar dit gebeurt niet tot nauwelijks.
Waarom ik java verdedig?

Simpelweg op dit java wel een mooie taal vind, maar iedereen loopt er op te schelden omdat de jvm zo brak is.

Java is best een mooie taal (veel overzichtelijker dan bijvoorbeeld een c) maar jammergenoeg is die jvm zo brak..

wat ook jammer is dat veel mensen niet verder kijken dan hun neusje lang is en zeggen java is traag want jvm is traag dikke onzin..
Ik van de Java 5.0 JVM verre van brak.
Java is best een mooie taal (veel overzichtelijker dan bijvoorbeeld een c)
C (en C++ nog meer) is ook echt een gedrocht van een taal die in principe dood is voor verdere ontwikkelijk (hiermee bedoel ik dus de ontwikkeling van de taal zelf, niet de ontwikkeling met de taal). Eigenlijk is er niet veel ontwikkelijk nodig omdat de taal zo relaxed is that heel veel mogelijk is door (de gebruikelijke) enge dingen uit te halen.

Java begint steeds meer een mooie taal te worden. Vooral 1.5 of 5 (of whatever de nummering is). Oudere versie zijn gewoon niet fijn omdat je vieze dingen moet doen met enorme overheads voor door enig zins belangrijke taal concepten zoals enumerations en structures. Maar er zijn nog steeds een aantal dingen die mij niet echt bevallen (misschien dat die al lang opgelost zijn in 1.5). Het doel van een programeertaal is om de programeur het makkelijker te maken om een applicatie te produceren. Als ik dan continue bij elke functie alle exceptions die ge'raised\ge'throwed kunnen worden moet specificeren omdat ik het op een algemene plek wil afvanken word het voor mij te veel.<div class=r>[Reactie gewijzigd door El_Muerte_[TDS]]</div><!-- end -->
Voor zover ik het kan zien ben je vrijer in C en daarna C++ en moet je het strikst zijn in Java(qua programmeer styl). Hierdoor zal de code er gemiddeld netter uitzien. Maar ik zie mezelf de komende tijd nog echt geen games ontwikkelen in java, voor de pc dan. Een combinatie van Assembler, C en met als basis C++ is daar meestal de beste optie..
Wordt C Dood verklaart?
Kijk dan maar een snel op http://www.tiobe.com/tpci.htm
C is de laagste hogere programeertaal.
Je kan portable code schrijven en toch low level controle hebben over je applicatie (en eventueel hardware). Dat is de kracht.
Ja C is zo goed als uit ontwikkeld er zijn een aantal dingen overgenomen van C++, maar de basis staat al meer dan 30 jaar. En er is geen alternatief voor veel zaken waarvoor C gebruikt wordt.

C is zo belangrijk dat er alle processor fabrikanten altijd zorgen dat er een C compiler beschikbaar is voor zijn nieuw processor :) En het maakt niet uit of dit een 8-, 16-, 32- of 64-bits processor is.
of een 24-bits dsp.
C heeft een hele duidelijk plaats en het zal nog heel lang duren voordat C verdwijnt.
@rgp: ik bedoelde dat er aan de taal zelf niet of iig nauwelijk meer gewerkt word (ontwikkeling van de taal zelf), aan Java bijvoorbeeld nog veel aan geknutselt.

Vreemde statistiek eigenlijk. Delphi\Kylix staat apart van Pascal terwijl Basic en VisualBasic wel samengevoegd is.
Misschien heeft dat iets te maken met het feit dat veel Tweakers elkaar nabouwen met betrekking tot Java en daarbij zit veel (inmiddels) onwaarheden bij.
Java is niet traag: het opstarten van de JVM kan even duren en als je een slecht ontwikkelaar hebt die niet goed nadenkt alvorens te programmeren dan kan Java langzaam zijn (maar dat geldt evenzo voor andere programmeertalen), voornamelijk als er heel veel objecten worden aangemaakt en kort daarna weer worden weggegooid.

Zeker, de JVM voert een extra abstractielaag toe waardoor niet (direct) de maximale performance wordt bereikt, maar technologie zoals de hotspot compiler zorgt ervoor dat bytecode die veel wordt aangeroepen (runtime) wordt omgezet naar native code.
Overigens denk ik wel dat Java meer geschikt is voor business applicaties en applicatieservers dan voor games.
weet jij eigenlijk wel hoe java werkt; of wat een virtual machine is? Het hele principe van een vm is een extra laag tussen de byte code(platform onafhankelijk) en het operating system. Hoe dacht je dat het .NET framework werkt? dat maakt ook gebruik van een virtual machine... eventueel met just in time bytecode translation naar de .NET vm...(dus java byte code op .NET) nee das pas langzaam...

als je javacode niet meer compileert naar bytecode, maar naar machinecode (dus zonder vm) dan ben je het hele crossplatform idee kwijt, en dan is Java weer de zoveelste oo programming language, zoals bv c++


<nog meer offtopic>
windows vertraagt je systeem ook, waarom gebruiken zoveel mensen dat nog dan?
</nog meer offtopic>
Je kunt ook je bytecode naar machinecode kunnen compileren. Dan ben je ook je vm kwijt en blijf je nog wel crossplatform.
Je laat bv het installatieprogramma van je software die compile-slag maken.

IBM kwam al jaren geleden met dat concept voor Java. Weet niet wat er verder van geworden is. Maar als performance echt zo'n probleem is, dan zijn er dus hele acceptabele oplossingen.
200k voor een mobiele javagame is al best een hele hap. 3D kan een stuk kleiner, helemaal met de Java3D Standaard. Dan krijg je bijvoorbeeld games als Speed Racer 3D In de praktijk valt het trage reageren van toetsen ook enorm mee, hangt er ook vanaf hoe zwaar de game is. Wat ik echter niet snap is dat zo'n hoogstaand figuur niet voor Symbian kiest. Dan programmeer je direct op de hardware waardoor 3D games ontzettend krachtig worden :P. Zelf heb ik op mijn telefoon bijvoorbeeld Clusterball en Xyanide 3D . Nadeel is alleen dat het aantal Symbian toestellen beperkt zijn :(
Zelf heb ik op mijn telefoon bijvoorbeeld Clusterball en Xyanide 3D . Nadeel is alleen dat het aantal Symbian toestellen beperkt zijn
Vreemd, ik zie bij de informatie van die spelen bij OS "java" staan? :7
Hij kiest voor java omdat daar verreweg de meeste toestellen voor zijn. Symbian is er alleen voor high end toestellen nog. Er zijn meer java toestellen als windows mobile + symbian + palm + BREW bij elkaar. En 80% van de windows mobile, sybian (100%), palm en BREW toestellen hebben zelf ook java.
Dat is dan alweer voor een nieuwe generatie telefoons, want de huidige games op mijn 6230 zijn precies 64Kb of eronder..
Of een slechte vertaling. (Ik heb niet gekeken.) Op veel telefoons (lees: nokia serie 40) mag een midlet maximaal 64 kB zijn. Het beschikbare geheugen is ongeveer 200 kB.
en juist op de 6230 (de eerste S40 2.0 telefoon) mag een applicatie groter zijn (128kB). Vrijwel alle nokias daarvoor is de limiet 64kB, vandaar dat de meeste applicaties nog 64kB zijn voor niet-symbian nokias.

(RAM geheugen is ook meer geworden, 512 kB ipv zo rond de 210 kB)
@Eric1
Ik had Doom 1 op mijn Nokia 7650 met maximaal 1,7 MB geheugen. Het geheugen zat dan ook helemaal vol, maar ik had wel gewoon Doom op mijn telefoon. En het draaide als een trein. Maar goed, het pookje op de 7650 is wel verdraaid handig vergeleken met de meeste telefoons.
sorry, zag je post wat later. de 7650 heeft normaal gesproken 4 mb geheugen waarbij 3.6 mb vrij te gebruiken is voor de gebruiker. Of is dat 1.7 mb niet wat je bedoelde waarvan ik dacht dat je het bedoelde?
Nee sorry, je hebt gelijk. Het was idd 3,6 MB. Maar Doom gebruikte daar al gauw het grootste gedeelte van volgens mij. Soms crashte de telefoon als je het spel wilde spelen. Dan moest je eerst resetten tot er weer voldoende geheugen vrij was. :)
No offense, maar dit zeg ik al járen van java! Dit sterft een langzame dood. Multi-platform my ass. Zo lang blizzard dingen als WoW op de PC en op de Mac kan laten werken, Atari hetzelfde kan met UT2004, en dat je toch nog saampjes kan spelen, vind ik dat er géén markt is voor Java.

Hanzehogeschool BI met afkeer van Java (en dat moeten we leren).

Leuk detail: op m'n Sybian foon staat ook Doom1, maar dat is niet in JAVA gemaakt, dat is in symbian z'n eigen API gemaakt (is ook geen 200KB ;))
Multi platform vindt ik juist een hele handige functie. Wat blizzard (of Id) doet is hun C code gewoon porten. Kost wat meer werk....

Java in J2EE is juist super snel en stabiel. Geen rare null pointers enzo
ja, natuurlijk is C/C++ portable, maar dan moet je de broncode hebben, en het schijnt gebruikelijk te zijn die niet mee te leveren. Bovendien moet je voor elke processor opnieuw compileren, en dat kan dus alleen de fabrikant doen, als de fabrikant het geen goed idee vindt om platform X te ondersteunen heb je dus dikke pech. Verder is java niet alleen processor-onafhankelijk.

Ben eigenlijk een groot voorstander van vrije software, en al helemaal op telefoons (ze zijn persoonlijk, dus wil ik ook zelf kunnen bepalen wat ie doet), maar zelfs dan kan java nog handig zijn.
Grappig om zoiets van een BI-er te lezen. Als ik jou was zal ik nog maar eens goed op gaan letten de komende jaren. De software ontwikkeling bestaat niet alleen uit games. Dat geldt al helemaal als je bedrijfsinformatica doet.

Wat wil je dan gaan doen later? .Net? Ik zal je uit je droom helpen jochie, dat is namelijk hetzelfde.
Jij hebt duidelijk nog niet goed opgelet op je opleiding. Heb je uberhaubt wel eens geprogrammeerd? Ik krijg het idee dat je van die leuke buzzwords leert en hier en daar er iets over leest er daar gelijk je sterke mening op baseert.

Dat een extra laag van abstractie de performance beinvloed is logisch, maar dat het daardoor gelijk onzin is slaat nergens op. Het concept is juist erg goed, je kunt op die manier een applicatie ontwikkelen door je puur bezig te houden met de essentie en niet met platform of systeem afhankelijke zaken. Dat dit een langzame dood gaat sterven is gewoon onzin, sterker nog, deze stijl van programmeren gaat langzaam aan (bijna) alle andere stijlen vervangen.

Er is nog genoeg werk te doen, dat is duidelijk. Maar jij stelt dat het bijna aan het eind van zijn tijd is. Technieken als deze beginnen pas net populair te worden en het staat nog maar in kinderschoenen. Je hoeft het niet gelijk zo af te branden als je niet weet wat het precies inhoud.
Wat een onzin eigelijk, ik heb maanden geleden gezien op zowel de ati als de nvidia website dat deze bedrijven 3d processors hadden ontwikkeld voor mobiele telefoons, en dan blijkt dat je er geen shit mee kunt, omdat alles in java moet :S?

Op dit item kan niet meer gereageerd worden.


Apple iPhone X Google Pixel 2 XL LG W7 Samsung Galaxy S9 Google Pixel 2 Far Cry 5 Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*