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

Instructeur bouwt 3d-engine in Excel

Een Excel-instructeur heeft een 3d-engine gebouwd in zijn favoriete spreadsheetprogramma. Hij demonstreert zijn creatie aan de hand van een soort doolhoflevel, dat iets wegheeft van Doom. De framerate is niet echt om over naar huis te schrijven.

De instructeur, online bekend als C Bel, heeft zijn werk gedeeld via een blogpost op Gamasutra. Daar legt hij uit dat het vrijwel helemaal bestaat uit formules en niet uit macro's. Hij legt dan ook uit dat de reden voor zijn project is dat hij wilde aantonen dat formules in veel gevallen beter werken en dat er bijna niets is dat niet aan de hand van formules opgelost kan worden.

De kaart van het spel wordt willekeurig aangemaakt en gaat niet uit van een vaststaand ontwerp, legt de maker uit. In zijn uitgebreide blogpost geeft hij bovendien meer uitleg over occlusion, rendering en het aanmaken van tegenstanders, die de vorm van een grote rode cirkel aannemen. Hij heeft verschillende bestanden geüpload om het spel lokaal te draaien en er zijn varianten met en zonder vba.

Door Sander van Voorst

Nieuwsredacteur

16-02-2018 • 19:04

92 Linkedin Google+

Reacties (92)

Wijzig sortering
Dit is geen echte 3D-engine. Het is een techniek die raycasting heet. Sommigen zullen het herkennen van bijvoorbeeld Duke Nukem 3D of soort gelijke spellen uit die tijd.

Goede uitleg van de techniek en een prachtig voorbeeld in 256 regels javascript is hier te vinden.
Dat neemt niet weg dat het super stoer is om zoiets te schrijven in een spreadsheet programma :-D
Erg toffe link!
Maar wel verwarrend al die termen, want ray tracing is dan weer een hi end graphics techniek..
Thanks right, this is more a use of ray casting than ray-tracing.
But, it is a bit more than ray-casting, as it does manage lights, with a very simplified model obviously :
- reflection on walls
- diffusion for the general illumination
- and some partial volumetric transparency on monsters, without diffraction
- all of theses with only 1 light source, and massive optimisations, to make it functional with formula only :)
Volgens die redenatie is niks een 3D engine, wanneer het op een plat scherm wordt geprojecteerd...
Het gaat erom dat het enkel een 2d afbeelding is die door wat code vanuit het perspectief van de speler er 3d uit ziet. Maar toch ben je nog een top down Shooter aan het spelen. Dus ja een echte 3d engine die werkelijk hoogte breedte en diepte kent gaat het om. Het 2d scherm zie je meer als een raam waar je doorheen kijkt.
zoals het mij is uitgelegd is de Quake 1 engine de eerste echte 3d engine,
omdat hij ipv 2d sprites voor poppetjes en objecten, daadwerkelijk volumetrische modellen renderd

de wolfenstein, Doom en duke 3d engines, zijn eigenlijk meer 2.5D engines.

Bron: LGR (https://www.youtube.com/user/phreakindee)
en (https://www.youtube.com/user/MatthewPatrick13)

[Reactie gewijzigd door djjeanb op 19 februari 2018 11:29]

Het gaat erom dat het enkel een 2d afbeelding is die door wat code vanuit het perspectief van de speler er 3d uit ziet
Dat is per definitie wat een 3D engine doet.
Oude games zoals bijvoorbeeld Doom zijn vanuit technisch oogpunt niet 3D, er is namelijk geen verticale component in deze games (dus geen echte 3D space). Omhoog of omlaag schieten kan niet, en is ook niet nodig, aangezien het inderdaad wordt berekend als een top-down shooter die er 3D uitziet.

Net als in top-down 2D games bestaat er in de engine alleen je positie en in welke richting je kijkt in het platte vlak.

[Reactie gewijzigd door SilverZeven op 17 februari 2018 12:33]

Niks is volgens jouw redenering dus vanuit technisch oogpunt 3D. Wat voegt de y-as toe behalve gameplay? Dat maakt het niet ineens magisch 3D, de techniek is hetzelfde. Rendering blijft gelijk, alleen je crosshair is een punt in plaats van een lijn geworden.
Als ik het mij goed herinner kon je in Doom wel omhoog schieten. Herinner mij iets van een pad langs lava met links bovenin de muur een gat met een monster.
Maar dat was slechts een optische illusie. In Doom konden er zich nooit 2 ruimtes boven elkaar bevinden. Je schiet dus niet omhoog, slechts richtin zijn x,y coordinaten. Het omhoog transleren van de raket gebeurde vervolgens automatisch.
Ja maar het maakte hier niet uit hoe hoog je richtte. Je kan bij Doom ook niet omhoog of omlaag kijken. Dus terwijl je eigenlijk tegen de muur aan schoot, raakte je de demonen die eigenlijk een stuk hoger waren.
Wat doet de y as er aan toe? Is 1 van de d’s in 3D ;)

Dat is wat men probeert te vertellen. Er is geen hoogte informatie waardoor veel zaken niet kunnen, bijvoorbeeld verdiepingen.
Denk aan een 2d schietspel van boven. Als jij richting een poppetje schiet, dan kun je of links, of rechts missen (of hem raken). Eronder door of erover heen niet. Dit betekend dat alle objecten in de wereld (muren, deuren, etc) volledig uit 2-dimensionale afmetingen bestaan en ook een 2-dimensionale positie hebben. Alles in bijvoorbeeld Wolfenstein 3d wordt dus in 2d berekend, alleen de serie plaatjes die jij ziet doen het eruit zien alsof alles 3d is. Maar geen enkel object beweegt zich in de hoogte (een lift bijvoorbeeld). Je kunt ook niet springen. Je camera kan omhoog bewegen maar het betekend niet dat jij daardoor ineens wel het tafeltje achter de bank kan zien

Zo is een 3d-rendering ook alleen 3d als je naar vrije keuze alle kanten op kunt bewegen. Google streetview is bijvoorbeeld ook geen 'echt' 3d. Het zijn aparte 360 graden fotos die elke -x- meter gemaakt zijn en aan elkaar verbonden zijn.

[Reactie gewijzigd door lmartinl op 17 februari 2018 18:33]

Games zoals Duke Nukem 3D en Doom gebruikten geen raycasting maar Binary Space Partitioning. Oudere games zoals Wolfenstein 3D gebruikten wel raycasting.
Duke Nukem gebruikt geen BSP’s. Maar een techniek van portals

http://fabiensanglard.net/duke3d/build_engine_internals.php
tja, je had het ook in Outlook of elk ander VBA programma kunnen draaien :+
Het speciale is juist dat deze engine niet in vba maar met formules is geschreven.
Wat ik trouwens grappig vind is dat dit gewoon in Excel kan draaien maar laat een gemiddelde manager er een kwartier in klooien en het hele ding loopt vast :P
Wat dacht je van Tatsuo Horiuchi - 77 jaar, die de meeste schitterende (Japanse) schilderijen maakt in Excel...

http://www.thisiscolossal...uo-horiuchi-excel-artist/

Gewoon een kwestie van de blokjes juist inkleuren :p
Wat mij opviel is waar dit on het inmiddels niet meer ondersteunde en ronduit verouderde Excel 2007 gebeurt.

Specifiek iets wat alleen in die versie werkt, een project van tien jaar of ergens anders een reden voor dit verhaal?
Actually, this was made using Excel 2016, and later adjusted to make it run also on Excel 2007. (I assume that with compatibility on both of them, I'll have compatibility on all versions in between)
In fact, there is even one bug I never could entirely remove on Excel 2007, on the conditional formatting applying personalized number format : it doesn't update back to normal state when condition is false again.
This is working fine on Excel 2016.

Nice catch, the video record was done on excel 2007, that's was the version installed on it at this moment :)
Nieuwe versie van Excel is te duur en de oude doet het prima?
Ik draai gewoon Office XP met een .docx plugin.
Niks meer nodig.
Jammer, dat je geen security updates meer hebt alleen...
misschien hangt zijn office XP niet aan internet..
En misschien print hij ook alleen maar, en gebruikt hij geen usb sticks die besmet kunnen zijn...

Get real. Mensen op xp denken niet aan hun veiligheid en de veiligheid van derden. Want meestal hebben juist dit soort mensen om de één of andere reden data van of over anderen op hun pc.
Dit is niet als die easteregg, dit zijn paginas vol met formules, waanzinnig

[Reactie gewijzigd door tw_gotcha op 16 februari 2018 19:50]

Het laat wel zien wat code eigenlijk is.

Excel bepaalde functies laten uitvoeren werkt dus voor geen meter.
De vraag is in hoeverre het te danken is aan de tekortkomingen van C Bel,
of dat het excel-programma te veel lagen heeft waardoor niet de juiste functies van een processor worden aangesproken.


De waarheid zal waarschijnlijk in het midden liggen,
dus ondanks het WTF gevoel,
zouden MS medewerkers eens mee kunnen kijken waarom het nog als een trage slak gaat en of bepaalde functies binnen excel de CPU anders kunnen aanspreken.
Yup, Excel is quite slow, and this was a great challenge for all the optimization that had to be made to get it running smoothly on modern CPU.
Without optimizations, 4 optimization-dedicated sheets could have been removed :
- specific horizontal pre-calculation
- specific vertical pre-calculation
- compute shader (with pre-calculated values)
- light shader (with pre-calculated values)

The processing speed is only partially due to compiling (Java isn't compiled before execution either), but also to the specific way Excel have to find out the order the instructions, while a program get a linear ordered list of instructions to run.
While this way of getting thousands of parallel instructions in Excel is a perfect opportunity for a massive multi-threaded processing, using GPU processing. Unfortunately, Excel did not evolved to use GPU for now. I would be Nvidia/AMD, I would offer to help Microsoft to improve the internal processing engine so they could sell more GPU for business oriented laptop...
Thank you for all your answers man - impressive project! Mad props!
of dat het excel-programma te veel lagen heeft waardoor niet de juiste functies van een processor worden aangesproken.
Excel is niets anders dan een interpreter van een functioneel programma (namelijk de spreadsheet). Een functioneel programma is niets anders dan een zwik vergelijkingen. De extra laag is dat Excel een simpele interpreter is en een spreadsheet dus niet compileert naar machineinstructies (iets wat een compiler wel doet). Dat laatste is dan ook niet nodig gezien het standaard gebruiksdoel van Excel.
Dan geef ik toch de voorkeur aan Haskell. ;)
ik heb het gevoel dat excel al jaaaaaren bijna letterlijk niet veranderd is, alleen zoek ik me suf bij iedere uitgave naar dezelfde functies. Dat kan natuurlijk ook liggen aan wat ik ermee doe, vrij platte berekeningen en wat data weergave, af ebn toe een functies fitten (solve)
Precies dit heb ik dus ook, gedeelde smart :)

Gebruik ook Libre Calc maar werkt toch niet zo prettig als excel.
Op zich nog wel een beetje logisch dat het niet al te veel veranderd is. Je wilt er sowieso voor zorgen dat iedereen die het gebruikt het kan blijven gebruiken zoals nu, dan kun je volgens mij zo'n beetje alleen de functies zelf proberen te optimaliseren (waarvan de meeste (gebruikte) toch vrij simpel zijn). En waarom zou je je programma verbeteren als het veranderen van interface al genoeg oplevert? Ik kan me niet herinneren dat een van de Office programmas in de laatste 5 jaar nou echte bijzondere nieuwe functies heeft gekregen behalve integratie met andere diensten (bijvoorbeeld Dropbox) of dingen als auto-save naar Onedrive (maar dan ook echt alleen Onedrive :()
De 'code' wordt niet gecompileerd; je kunt er dus vanuitgaan dat het zowieso vèèèrre van optimaal is.
Wat een geweldig project. Staat wel leuk op je CV.
In hoeverre bent u bekend met Excel? "Nou, Ik heb een 3d engine gebouwd" zelf geschreven. Ik als computer enthousiasteling buig hiervoor uit respect.

Nu wachten tot er een compleet OS word geschreven. En dan virussen... en een virusscanner.

Leuk artikel.
Ben meestal al blij als een standaard grafiek lukt :) Zeker als je iets eeb beetje afwijkend wilt hebben gaat het vaak al erg moeilijk en als je dit dan ziet...
Excel is een zeer krachtig stuk software waar bijna alle soorten data geanalyseerd kan worden. Maar helaas nooit precies op de manier die je wilt ;)
Excel is rotzooi. Als je een paar data puntjes hebt is het goed, maar als je 20k+ data punten hebt, ga je richting python of matlab. En in python / matlab kan je veel geavanceerdere mutaties / analyzes uitvoeren op je data. En plotten van data in Excel is noet mogelijk als je teveel data punten hebt.
Mwah, dat ben ik niet met je eens. Ik heb een tijd geleden een Acces database met ongeveer 3,2 miljoen gegevens met ongeveer vijftig variabelen met behulp van draaitabellen in een dashboard samengevat en die mer behulp van slicers en draaigrafieken ontzettend goed data kon weergeven zonder gebruik te maken van de Power functies.

De spirituele opvolger van Excel is ee trouwens ook al erg lang: PowerBI wat eerst begon met de Power functies die ook gebruik maken van DAX formules. Daarin is veel mogelijk en de powermodes kan overweg met de miljoenen rijen. PowerBI had dus Access en Excel kunnen vervangen, ware het niet dat het in dat bedrijf niet was toegestaan.

Momentee werk ik bij de universiteit met iets meer dan 66000 dataregels in Excel, met de juiste array functies, gebruik maken van tabellen, draaitabellen en draaigrafieken kan Excel ontzettend veel. Daar staat tegenover dat Excel een ontzettend nukkig programma is: maak een fout in de formule en alles loopt vast.
Het is geen foutloos programma, maar in de juiste handen kan het ontzettend veel getuige bovenstaande video - het kost alleen ruime tijd om Excel goed aan te leren.

De eerste les en belangrijkste les is dat Excel niet bedoeld is voor lijstjes. Werk met tabellen, daarmee reken je al flink sneller. Werk je met grote datasets en doe je veel filterwerk, werk met draaitabellen en grafieken. Door deze simpele handelingen en functies als Index en Match kan al heel erg veel bereikt worden. Het begint echter bij een goede basis en laat die er nou niet zijn voor veel Excel gebruikers.
Mwaah, ik vind PowerBi nou niet echt een spirituele opvolger van Excel.
PowerBI is Business Intelligence, dat is toch heel wat anders als een spreadsheet programma.

Ja, toegegeven, in beiden kun je draaitabellen, data en grafiekjes tonen, maar er zijn toch veel meer verschillen dan overeenkomsten.
Mijn grootste irritatie bij excel is dat lange formules zo foutgevoellig zijn. Er zijn amper IDE achtige hulpmiddelen. Zelfs het invoerveld is maar een enkele regel hoog. Veel van deze problemen kunnen met een aantal ADD-ins opgelost worden maar het leven had makkelijker geweest als dit soort functionaliteit gewoon standaard ingebouwd zat
met betrekking tot invoerveld.

druk op het pijltje \/ achterin het invoerveld. Nu is ie meerdere regels en kun je hem groter of kleiner maken.
Maar je snapt toch wel dat dat pas het begin is. Iedereen die een beetje kan programmeren weet dat dat bijna onmogelijk is zonder ide. Excel formules zijn als programmeren in kladblok, moeilijk te debuggen en onmogelijk foutloos te maken
Jawel hoor, foutloos is geen enkel probleem. Wanneer je weet waar je mee bezig bent in Excel. Enige wat ik graag heb is dat de formules in Nl Excel in het Engels kunnen.
Precies dit, heb je wat gegoogled, moet je ook de formules nog vertalen, erg hinderlijk.
Excel fantastisch programma, helaas met kleine ergernissen
Ander drama is dat de sneltoetsen in de Nederlandse versie anders zijn dan in de engelse versie. Laat staan het decimal thousand separator verhaal. Of zelfs function separator...
Excel formules zijn als programmeren in kladblok ...
... met als extra "uitdaging" dat je geen commentaar kunt gebruiken. Sinds een paar versies kun je cellen namen geven, maar vastleggen waarom een berekening op een bepaalde manier gebeurt is er nog steeds niet bij. :(
Hoe berekeningen worden gedaan is vrij simpel. Rij voor rij.
Hoe berekeningen worden gedaan is vrij simpel. Rij voor rij.
Ehm nee, dat is te makkelijk gedacht. Als je in cel A1 de formule "=B1+C1" zet, dan zal ie eerst B1 en C1 uit moeten rekenen, daarna kan ie pas bepalen wat er in A1 komt. (Als in C1 "=A1+B1" staat, zul je ook een foutmelding krijgen vanwege de circulaire referentie die niet opgelost kan worden; bij een rij-voor-rij benadering zou dat wel goed gaan (waarschijnlijk door de vorige waarde te gebruiken).)

Maar daar had ik het eigenlijk niet over, ik bedoelde meer waarom tel je B1 bij C1 op? En misschien nog wel belangrijker, waarom tel je D1 er niet ook meteen bij? Dat soort dingen kun je in programmeertalen in commentaar toelichten, terwijl dat in Excel niet kan. Als je daar een formule ziet staan waarvan je denkt "waarom werkt dit!?" dan heb je geen goede manier om daar achter te komen.
Mijn grootste irritatie bij excel is dat lange formules zo foutgevoellig zijn.
Ik neem aan dat je hiermee formules/ functies in formules/ functies bedoelt, waardoor je er op een gegeven moment niet meer uit komt wanneer je ergens een fout gemaakt hebt?
Wanneer het complex wordt, bouw ik dat soms in stappen op. Functie A in A1, functie B in B1 gebruikmakend van de uitkomst van A1, etc. Wanneer alles werkt en ik de gewenste einduitkomst heb, kopieer ik de functie uit A1 op de plaats van de verwijzing naar A1 in de functie in B1, etc. Zo kun je de functies eerst goed testen en kun je ook zien waar het mis gaat.
Excel is een leuk programma om als eerste jaars misschien toch wel wat data te verwerken, maar als je effectief data wilt bewerken / verwerken in een bedrijfsomgeving, raad ik het ten zeerste af.

Ik heb ooit eens Fourier in Excel geprobeerd, daar moest je zo veel tussenstapjes invullen en bewerkingen dat het niet fijn te doen was. Gelukkig was het in python zo opgelost.

Deze ervaring heb ik met meerdere problemen gehad. Tevens is Excel een stuk trager.
20k+ en dan python? Wauw... Maybe C++ of als je het onderhouds vriendelijk wilt hebben C# (evt webbased ASP.net) maar python? Hell no
Python C ;)

Trouwens is 20k+ in een interperter ook snel hoor.

Wat is dan jouw argument dat python een hell no is?
Excel is prima voor rechttoe rechtaan rekenwerk. Er grote en serieuze datasets mee bewerken kan, maar valt toch echt onder de categorie zelfkastijding of "if your only tool is a hammer, every problem looks like a nail"
Als ik een flinke Excel sheet zie maak ik al dat ik wegkom. Nee geintje maar toch. Het blijft mij verbazen welke kunstwerken sommigen kunnen maken.
Volgens mij is het vooral omdat ze de interface om grafieken aan te passen en de juiste data te selecteren zo slecht hebben gemaakt. Al kon je nu gewoon in de grafiek dingen aanpassen in plaats van in een belachelijk menu aan de zijkant met enorm onduidelijke beschrijvingen en verschillende drop-downs waarin je tussen grafiekelementen schakelt. Ze hadden nog beter 1 lange lijst met alle opties onder elkaar kunnen doen waar je dan doorheen kunt scrollen en je zelf de volgorde kunt aanpassen aan de hand van wat je zelf gebruikt.
2019:
Skyrim: Excel edition
But can it run Crysis? :+

Wel petje af, je moet volgens mij wel een stevige doorzetter zijn om zoiets te bouwen. _/-\o_
Denk ik ook altijd als ik die Minecraft constructies zie met Redstone en calculators etc. In de basis is het zo simpel maar wat die mensen er mee doen.... pffff...
Het doel was dus om te laten zien dat formules beter zijn dan VBA (als ik zijn blog zo lees), met de nuance dat het spreadsheets wel efficiënter kan maken maar sommige mensen er in doorslaan (en echt alles in VBA willen schrijven). Ik vind het wel grappig om te zien omdat ik zelf voor mijn werk ook veel met excel (en VBA) werk. Het is inderdaad makkelijk om door te slaan met VBA waardoor spreadsheets onleesbaar/onbegrijpelijk worden voor anderen, daarom probeer ik ook altijd zo veel mogelijk gewoon met formules te doen.

Een game engine maken met formules is natuurlijk wel héél erg next level :). Erg indrukwekkend om te zien.
In mijn ervaring: Als je ziet wat de Excel kennis is van de gemiddelde gebruiker maar er is wel vraag om wat uitgebreidere functies/analyses te automatiseren ontkom je er niet aan om alles in VBA te doen.
Je kan de gebruikte sheets dan helemaal dicht timmeren en "hufter-proof" maken.

Ik heb dat zelf gezien in een organisatie waar ik meer dan 10 jaar heb gewerkt. Daar zat 1 slimmerik die vroeger een hele hoop rapportage sheets had geautomatiseerd mbv formules die ververste met 1 eenvoudige macro. Toch kregen gebruikers het altijd voor elkaar om deze sheets weer finaal om zeep te helpen. Ik heb hier vervolgens een aantal sheets overnieuw gemaakt met als uitgangspunt VBA (en her en der de nodige file en data-entry controles). Resultaat: na 9 jaar werken de rapportages nog steeds en zijn er nooit meer PEBCAK of USER errors. :)
Hello,
thank you for this article.
I will try to answer to some of the questions here, sorry, I can only use english :)
Cool, quite a feat.
Knap koppie, ik heb er de ballen verstand van, respect!
Toepasselijk dat hij Dance Macabre eronder heeft gezet, schijnt dat Waltz of the Demons uit Doom daar gedeeltelijk op gebaseerd is :P
ik ken dat liedje vooral van "the synthesizer collection" ... een reeks bandjes uit de einde jaren 80- vroege '90 waarin men enorm veel bekende nummers plots met synths ging spelen... ook tracks als 'autobahn' enzo verschenen erop, wat heb ik die indertijd grijs gedraaid ... twee keer raden wat voor muziek ik daarna ben gaan luisteren .. yup trance, house, electro ... (ik ben een kind van '80). Ik woonde net daar waar de bron was indertijd; vlakbij waar Channel X vroeg jaren '90 al illegaal aan het uitzenden was, lang voor er een Club X bestond.;. Als ik dan naar Antwerpen ging naar m'n familie bracht ik altijd een stapel tapes mee om door te sjacheren; ze wisten nit wat ze hoorden ginder ... en in die tijd was er op channel X nog echt amper reclame; soms een halve dag niks reclame... ideaal om bandjes te vullen!

dat zijn dingen die natuurlijk al lang niet meer gekend zijn bij de huidige jeugd... met smarphones waar je mp3s/mpeg4audio op kan zetten, streaming kan luisteren, etc etc In mijn tijd was de walkman nog heer en meester van draagbare muziek... en had je dus altijd een setje extra AA's bij in het geval je huidige plat raakten ... en herlaadbare batterijen waren in die tijd zo slecht... op AA had je toen maar 450-500 mAh; een kwart van wat er nu in een accu zit
Misschien binnenkort ook in Powerpoint? Die blijkt ook Turing complete te zijn: https://www.youtube.com/watch?v=uNjxe8ShM-8

Op dit item kan niet meer gereageerd worden.


Apple iPhone XS Red Dead Redemption 2 LG W7 Google Pixel 3 XL OnePlus 6T FIFA 19 Samsung Galaxy S10 Google Pixel 3

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