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

Hobbyist maakt speelbare versie van Civilization in Excel

Een knappe kop heeft een simpele versie van strategiegame Civilization ontwikkeld die speelbaar is in Excel. Het spel heeft een 1v1-modus voor twee spelers en is al werkend. Bovendien is het Excel-bestand gratis te downloaden.

[Cell]ivization is gemaakt door 's0lly', die onlangs versie 1.0 van het spel gratis beschikbaar heeft gesteld. Hij deed dit om mee te doen aan de OLC Codejam 2019. Het thema van deze wedstrijd is dit jaar 'destructie'. "Dat is toepasselijk, want de enige manier om te winnen in [Cell]ivization is door het andere team te vernietigen", schrijft s0lly.

Het Excel-spel mist nog wel de nodige features. Momenteel ondersteunt het alleen een simpele deathmatch-modus voor twee spelers. De spelers bewegen daarbij hun eenheden met de wasd-toetsen. Spelers moeten wel even geduld hebben, want het duurt enkele seconden voordat de bewegingen worden doorgevoerd.

In de toekomst zal s0lly nog artificiële intelligentie toevoegen. Momenteel kun je alleen uit de voeten met een andere, menselijke tegenstander. Daarnaast worden in de toekomst verschillende beschavingen verwacht. Ook staan er andere functies in de planning, waaronder diplomatie, wetenschap en nieuwe grondstoffen. Op dit moment kunnen spelers nog geen grondstoffen bezitten.

Bovendien bevat de game nog de nodige bugs. Zo breekt het spel als er geen units meer aanwezig zijn. Daarnaast loopt het vast als een unit geen kant meer op kan. De game is dan ook zeker geen vervanger voor Civilization 5 en 6.

[Cell]ivization is niet het eerste spel dat volledig in Excel is gemaakt. De spreadsheetsoftware ondersteunt Visual Basic, Adobe flash en macro's, waarmee prima games kunnen worden gemaakt. Verschillende knappe koppen maakten eerder al speelbare versies van bijvoorbeeld Monopoly, puzzelspel 2048, Flappy Bird, Angry Birds en XCOM. De games zijn niet zozeer als volwaardige games bedoeld, maar eerder als klein tijdverdrijf. Daarnaast staat Excel natuurlijk op vrijwel elk workstation. Kantoormensen kunnen dus vrij gemakkelijk stiekem een potje Flappy Bird spelen.

Door Daan van Monsjou

Stagiair nieuwsredactie

09-09-2019 • 15:50

94 Linkedin Google+

Reacties (94)

Wijzig sortering
Voor de mensen die hierdoor geïnspireerd worden: de maker heeft op Reddit aangekondigd een tutorial te maken over hoe je games kunt ontwikkelen in excel (+vba).

https://www.reddit.com/r/...ing_a_civ1_clone_in_excel
Wat een madlad. fascinerend hoe veel je met Excel kan doen.
Ik zag laatst een YT video van ray-tracing in Excel
Fun fact: Excel ondersteunt geen multi-threading.

Lees dat nog eens een keertje goed...

GEEN MULTI-THREADING.

Er zijn workarounds voor (door bijv. meerdere instanties van excel te openen in de achtergrond om parallel berekeningen uit te voeren) maar de fucking native applicatie ondersteunt het gewoon niet.

Écht bizar.. ik snap er geen drol van.

Tof overigens hoor dit! Maar met hetzelfde gemak had hij dit ook gewoon in VB.NET kunnen doen.. de meerwaarde van Excel gebruiken is er gewoon niet behalve dan misschien dat je eindigt met een .xlsm in plaats van een .exe (whoopty doo!) :+

Overigens moet ik wel toegeven dat VBA wel echt iets heel erg tofs is.
Je kunt vanuit Excel of Word gewoon een verbinding maken met een SQL/Access database en daar queries tegenaan gooien om data op te slaan/uit te lezen.. en VBA is 'volwaardig' genoeg als programmeer taal dat je er eigenlijk praktisch alles wel mee kan.. zolang het niet te intensief is vanwege beperkingen zoals het gebrek aan multi-threading. :+

Het is handig om gewoon een Excel bestand of zo te kunnen maken met een 'programma' erachter dat nuttige dingen doet.. al moet je goed beseffen dat je relatief snel op het punt komt dat het wellicht beter zou zijn om een volwaardige programmeertaal te gebruiken (bijv. VB.NET wat kwa taal sterk overeenkomt met VBA).

(p.s. 'VBA' staat voor 'Visual Basic for Applications', en het is in principe Visual Basic ingebouwd in alle Microsoft Office applicaties zoals Excel, Word, Access).

VBA in zoiets als Excel is echter wel een hele mooie 'instap' plek voor beginnende programmeurs die snel resultaat willen en ik zou de leercurve dan ook als vrij laag bestempelen.

[Reactie gewijzigd door Ayporos op 9 september 2019 16:08]

Ik weet niet precies wat [Cell]ivization doet, maar de raytracing example gebruikt VBA alleen voor de toetsinput. het raytracen zelf wordt puur door excel formules gedaan.
Tenzij die formules on the fly gegenereerd worden door VBA, worden excel formules wel degelijk parallel berekend.
Multithreading is best ingewikkeld, ik zou het knapper vinden als hij dat wél had ingezet.

Vroeger had men ook geen multithreaden, daar werd en meerdere processen 'tegelijk' (althans, die indruk moest het wekken) door 'concurrent' programmeermodellen. Dat is de manier om dit soor projecten aan te lopen.

Persoonlijk ben ik wel fan van dit soort projecten trouwens. Specificaties oprekken zo ver als je kan. CodeGolf is ook een leuke stack subsite om te zoeken naar dit soort pareltjes. :)
Vroeger had men veel niet, waardoor programma's veel efficienter werden ontwikkeld en elke beschikbare byte werd gebruikt en geoptimaliseerd. Als je kijkt hoe er nou wordt ontwikkeld, dan is het huilen met de pet op.
Vroeger had men veel niet, waardoor programma's veel efficienter werden ontwikkeld en elke beschikbare byte werd gebruikt en geoptimaliseerd. Als je kijkt hoe er nou wordt ontwikkeld, dan is het huilen met de pet op.
Vroeger had men ook veel wel: memory leaks, buffer overflows, stack overflows en noem maar op. Mede met de opkomst van het internet is beveiliging in software veel belangrijker geworden, en omdat het risico op een vergetelheid in een taal als C nu eenmaal redelijk groot is, hebben complexere talen als C++, Java en .NET allemaal zaken ingebakken om die risico's te beperken of in de meeste gevallen volledig te vermijden. Maar dat kost nu eenmaal geheugen en processorkracht. Al heeft men in deze tijden meestal liever wat meer geheugen- of CPU verbruik dan een programma waarin zich na een dag 10 virussen genesteld hebben (OK, ik overdrijf wat).

Wat ook meespeelt is dat programmeurs duur zijn, waardoor men soms liever een extra server huurt in plaats van X% van de tijd van de programmeur kwijt te zijn voor optimalisaties in de code (dat is dan een economische keuze). Vroeger was dat minder mogelijk omdat de beperkte hardware die keuze niet toeliet. Toen moest men wel optimaliseren.
Dat laatste vind ik een goed punt van je; hardware is veel en veel goedkoper dan een programmeur. Wanneer je een programma wil versnellen, dan kost je dat veel tijd en veel bugs. Dat is een veel pijnlijker proces dan er een snellere server tegenaan gooien.
Kromme gedachtengang, en een die kostbaar is. Ja, die programmeur kost geld. Maar die hardware ook. En met meer hardware komen er allerlei licentievoorwaarden ineens naar voren waardoor die server al gauw 30.000 euro per jaar meer kost, puur en alleen omdat je van 1 model processor naar een andere bent overgestapt.

Dan is er ook nog eens het hogere energie verbruik, het vervroegd afschrijven van server hardware en aanschaf van nieuwe server hardware (welke moet passen in de lege ruimte in je rack(s) die je oude server achterlaat. Met al die extra (jaarlijks terugkerende) kosten, kun je een junior programmeur een jaar laten stoeien met optimalisaties.

Meer hardware tegen een probleem aangooien, dat getuigt van een luiheid in denken. Dat wil dus niet zeggen dat het een slechte oplossing is. Het is alleen een flink stuk duurder dan de meeste mensen denken.

Ploeg voor de lol eens door de licentie voorwaarden van database software als Oracle, IBM's DB2 of zelfs SQL Server en hou je hart vast voor de bedragen die gepaard gaan met betere/snellere/meer hardware.

Daarna spreken we nog wel eens.
Met C# compileer je ook gewoon naar machine code. Er is dan wel een IL, maar tot voor kort kon je ML code meeleveren die via NGEN gegenereert zijn. Ik zie dan ook niet zozeer in waarom je beweert dat C# onder doet voor C als je op kleine stukken kijkt. Door klasse barrieres heenprikken met optimilisatie is nog steeds een probleem voor de meeste compilers, maar dat ligt aan de compilers niet aan wat er mogelijk is.

Daarnaast kan je ook gewoon in C# bijv. bytecode tables gebruiken om stukken te versnellen, maar toch doet dit vrijwel niemand.

Overigens heb je in C legio tools om dat soort fouten tegen te gaan.
Het is waar dat beperkingen meer creativiteit in de ontwikkelaars naar boven haalt, maar voor veel applicaties maakt het geen drol uit of ze efficiënt draaien of niet; onderhoudbaarheid is vaak veel belangrijker.

ps leuke avatar heb je trouwens :+
Probeer voor de lol eens 50 verschillende Excel instanties te openen. Voor normaal gebruik is dat excessief, voor back-end software is dat meer dan bittere noodzaak. Dat heb ik 1 keer veeor elkaar gekregen in de tijd van XP en na een heleboel geklooi met geheugenbeheer van Windows.

Zowiezo geen aanrader.

Die mogelijkheden om te klooien met geheugenbeheer heeft MS er sinds Vista al uitgesloopt, nu mag je al blij zijn als je 25 instanties haalt. Maakt niet uit hoeveel RAM en CPu's er in je server zijn gebouwd, Windows heeft niet genoeg heap-memory beschikbaar. En je Windows server word er merkbaar slomer door.

Excel is een stuk afval met een heleboel "technische schuld".
Ik zou het omdraaien, elke backend-software (wat dat ook moge wezen, backoffice?) die 50 Excel instanties nodig heeft is crap.

Edit: tenzij Citrix o.i.d., in dat geval is het inderdaad niet best.

[Reactie gewijzigd door oef! op 9 september 2019 18:35]

Ik, als leek op het gebied van backend software, vraag me dan toch af in hoeverre je 50 instances moet willen. Als Excel op die manier gebruikt wordt vraag ik me af waarom er op dit vlak niet door ontwikkelt wordt. Misschien omdat er niet zoveel vraag is....? Als spreadsheet- en data analyse programma is Excel inmiddels enorm goed. Excel = afval doet mijns inziens niet echt recht...
Fun fact: Excel ondersteunt geen multi-threading.

Lees dat nog eens een keertje goed...

GEEN MULTI-THREADING.

Er zijn workarounds voor (door bijv. meerdere instanties van excel te openen in de achtergrond om parallel berekeningen uit te voeren) maar de fucking native applicatie ondersteunt het gewoon niet.

Écht bizar.. ik snap er geen drol van.

Tof overigens hoor dit! Maar met hetzelfde gemak had hij dit ook gewoon in VB.NET kunnen doen.. de meerwaarde van Excel gebruiken is er gewoon niet behalve dan misschien dat je eindigt met een .xlsm in plaats van een .exe (whoopty doo!) :+

Overigens moet ik wel toegeven dat VBA wel echt iets heel erg tofs is.
Je kunt vanuit Excel of Word gewoon een verbinding maken met een SQL/Access database en daar queries tegenaan gooien om data op te slaan/uit te lezen.. en VBA is 'volwaardig' genoeg als programmeer taal dat je er eigenlijk praktisch alles wel mee kan.. zolang het niet te intensief is vanwege beperkingen zoals het gebrek aan multi-threading. :+

Het is handig om gewoon een Excel bestand of zo te kunnen maken met een 'programma' erachter dat nuttige dingen doet.. al moet je goed beseffen dat je relatief snel op het punt komt dat het wellicht beter zou zijn om een volwaardige programmeertaal te gebruiken (bijv. VB.NET wat kwa taal sterk overeenkomt met VBA).

(p.s. 'VBA' staat voor 'Visual Basic for Applications', en het is in principe Visual Basic ingebouwd in alle Microsoft Office applicaties zoals Excel, Word, Access).

VBA in zoiets als Excel is echter wel een hele mooie 'instap' plek voor beginnende programmeurs die snel resultaat willen en ik zou de leercurve dan ook als vrij laag bestempelen.
Er zijn wel meer populaire talen die geen multi-threading hebben: Python is een bekend voorbeeld.

Er zijn maar weinig talen waar intensief multi threaden "comfortabel" is voor de ontwikkelaar. Ik ken eigenlijk alleen Elixir/Erlan die daar echt op focust.

Niet zo raar dat VBA het niet heeft. Simpel + multi threading gaat niet echt samen.
Excel kent wél multithreading, standaard staat dit ook aan:
http://drive.google.com/uc?export=view&id=1yv5CGO8UuBRB9qQRU_FLjmen-ZKe6DqE

Wat niet multi-threaded is, is VBA. Helaas beschrijft het artikel niet of deze game alleen met behulp van Excel formules is gemaakt of in VBA.
In dat laatste geval is het eigenlijk niet in Excel gemaakt maar had het iedere Office toepassing kunnen zijn. Het enige verschil tussen VBA in die toepassingen is hoe je zaken weergeeft (in Excel in cellen en reeksen, in Word paragrafen en woorden etc)

[Reactie gewijzigd door dixet op 9 september 2019 16:40]

Zulk een tabel, dat is een OLE object...oftewel Excel zelf. En werken met OLE is niet echt soepel te noemen.
Excel ondersteund wel multi threading, al sinds versie 2007.
Excel werkt zeker wel via multithreading.

VBA ondersteunt geen multithreading, en dat is maar goed ook want de gemiddelde "advanced excel" gebruiker, gaat daar echt niet mee overweg kunnen. Heck, de gemiddelde programmeur kan daar al niet eens mee overweg.

Als jij niet in ziet waarom dit cool is, snap je ook daar geen drol van. Waarom vind iemand het leuk om Doom op zijn koelkast te spelen ipv gewoon op een PC? Niet omdat het gemakkelijk is, integendeel. Omdat het moeilijk is, maar kàn!
Het ging hem dan ook vooral over de lol ervan, niet zozeer dat dit de beste tool is om dit te maken 😀.
Fun fact: Excel ondersteunt geen multi-threading.

Lees dat nog eens een keertje goed...

GEEN MULTI-THREADING.
Wat is dit dan? Want de optie kun je gewoon aanvinken in excel.

Uitleg: https://techglimpse.com/e...013-speedup-calculations/

Bestaat dus wel gewoon.
geen multi threading is een ding. Geen twee bestanden met dezelfde naam, echt bizar in 2019.
ook niet in verschillende directory
Nope, de ene zat in de map tmp. De ander in tmp/tmp.

Echter... Dat was op kantoor, waar we nog Office 2007 gebruiken (ja echt...)
Nu zit ik thuis met 2016 en hier werkt het inderdaad niet.

De truc met 2007 was een nieuwe instantie te openen (shift+klik op de shortcut voor Excel) en hier het tweede bestand in te slepen. De instantie-structuur is met Office 2010 op de schop gegaan dus ik denk nu dat het sindsdien niet meer werkt. Jammer, want dat doe ik regelmatig en over een paar maanden gaan we op kantoor dan toch eindelijk over naar een nieuwere versie.
Dit staat los van NTFS.
Excel wilt niet 2 bestanden open hebben met dezelfde naam, ongeacht het pad.
Dus bijv:
c:\temp\1\test.xlsx
c:\temp\2\test.xlsx
Het erge vind ik de 255 character path limit, ongeacht dat al vanaf XP gewoon paden van 1024+ chars worden gesupport
Wow, ik heb best wat excel/vba skills.. maar dit is toch wel echt next level...
Leuk om eens even op te downloaden..
Zie ik dat goed? Met cellen een 'scherm' (pixels) maken en die aansturen?

Gevalletje om dat het kan :)


Om te kunnen reageren moet je ingelogd zijn


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Moederborden

'14 '15 '16 '17 2018

Tweakers vormt samen met Tweakers Elect, Hardware Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True