ArcadeMaker is een crossplatform 2D-game-engine die gebruikmaakt van een geïntegreerde IDE en een custom programmeertaal genaamd Exp. De engine is geschreven in C# en maakt momenteel gebruik van MonoGame voor graphics en audio, wat export naar desktop, mobiel en consoles mogelijk maakt.
Het project is ontstaan uit een leerproces van meerdere jaren en is recentelijk open source gemaakt om de ontwikkeling te versnellen via community-bijdragen. Er zijn nog diverse functies gepland, waaronder webexport (via KNI) en het volledig implementeren van bestaande IDE-functies in de engine.
De maker benadrukt dat, hoewel AI is gebruikt voor het schrijven van de README, de code vrijwel volledig handmatig is geschreven om het leerproces en het plezier van programmeren te bewaken. Het project staat onder de MIT-licentie.
ArcadeMaker
De engine en de IDE zijn zelf geschreven in C#, maar de taal die je binnen ArcadeMaker gebruikt om je games te programmeren is een door mij ontwikkelde custom taal, en niet C#. Momenteel wordt de graphics- en audiobackend aangedreven door MonoGame, wat export naar desktop, mobiel en consoles mogelijk maakt. Er zijn daarnaast plannen om een KNI-engine implementatie toe te voegen om ondersteuning voor het web mogelijk te maken.
Dit project is nog niet voltooid. Omdat ik zeer weinig tijd heb om eraan te werken, heb ik besloten het open source te maken in de hoop dat anderen het interessant vinden en helpen om er iets concreets van te maken. ArcadeMaker is gebaseerd op GameMaker 8; wie dit programma heeft gebruikt, zal merken dat de engine zeer eenvoudig te leren is.
Projectachtergrond
ArcadeMaker is over een periode van enkele jaren in verschillende fasen gebouwd. Verschillende onderdelen zijn geschreven op uiteenlopende momenten in mijn leerproces als programmeur.
De IDE werd ongeveer drie jaar geleden geschreven, in een tijd dat mijn programmeervaardigheden nog anders waren dan nu. De taal Exp werd na de IDE ontwikkeld, maar nog vóór de huidige core engine en de MonoGame-implementatie bestonden.
Oorspronkelijk begon ArcadeMaker als een op C# gebaseerde engine waarbij gebruikers hun gamelogica direct in C# schreven. Na een tijdje weg te zijn geweest van het project, heb ik mijn eigen programmeertaal gecreëerd en besloten terug te keren naar ArcadeMaker. Hierbij is de oude C#-scriptlaag vervangen door mijn eigen taal en is de core engine daar omheen herschreven.
Vanwege deze langdurige en gefaseerde ontwikkelingsgeschiedenis bevat de IDE momenteel veel functies die de nieuwe engine-backend nog niet ondersteunt. Voorbeelden hiervan zijn:
- Parent objects: ondersteund in de IDE, maar nog niet geïmplementeerd in de engine.
- Dll package manager: aanwezig in de IDE, maar heeft momenteel geen effect (dit was wel het geval toen de engine C# gebruikte voor scripting).
Het langetermijndoel is om de nieuwe engine functioneel gelijk te trekken met de oude C#-versie en deze vervolgens verder uit te breiden.
Geplande functies
- Volledige implementatie van de ontbrekende IDE-functies in de engine.
- KNI-engine backend voor webexport.
- Een completere en stabielere versie van de Exp-taal.
- Implementatie van alle gangbare, dagelijkse gamefuncties, zoals
drawRect(), deactivateInstancesInRegion(), setRoomWidth() en vele andere.
- Crossplatform templates voor mobiele builds en console-builds.
- Documentatie, tutorials en voorbeeldprojecten.
Waarom Open Source?
Ik werk met veel plezier aan ArcadeMaker, maar ik heb onvoldoende tijd om het in het tempo te ontwikkelen dat het verdient. Door het open source te maken, hoop ik dat anderen:
- Met de engine willen experimenteren.
- De taal en tooling willen verbeteren.
- Ontbrekende functies toevoegen.
- Bugs oplossen.
- Helpen de toekomst van het project vorm te geven.
Als je houdt van workflows in de stijl van GameMaker of wilt bijdragen aan een lichtgewicht, beginnersvriendelijke 2D-engine, ben je zeer welkom om mee te doen.
Hoe te bouwen
- Clone de repository.
- Open de solution in je voorkeurs C#-IDE (Visual Studio, Rider of VS Code).
- Herstel de NuGet-pakketten.
- Bouw het project.
- Start het IDE-project om ArcadeMaker op te starten.
- (Optioneel) Ga nadat de IDE is geladen naar "File -> Open Project" om een voorbeeldproject te laden uit
tests/Example Projects.
Bijdragen
Bijdragen van alle soorten worden gewaardeerd:
- Verbeteringen aan de code.
- Bugfixes.
- Documentatie.
- Voorstellen voor nieuwe functies.
- Implementaties van engine-backends.
- Ideeën voor het ontwerp van de taal.
Open aub eerst een 'issue' om je idee te bespreken voordat je een pull request indient.
Op dit moment ben ik de enige ontwikkelaar die in mijn vrije tijd aan dit project werkt, waardoor de documentatie echt tekortschiet. Ik zal mijn best doen dit te verbeteren, maar stel gerust al je vragen over het project; ik zal ze allemaal beantwoorden!
Licentie
Dit project is gelicenseerd onder de MIT-licentie. Zie het LICENSE-bestand voor details.
Opmerking over deze README en het gebruik van AI
Ik heb GPT gebruikt om te helpen bij het schrijven van dit README-bestand.
Omdat AI wordt genoemd, nog een paar woorden hierover: dit project bevat bijna 0% door AI gegenereerde code of architectuur. De enige uitzondering is dat ik Claude heb gebruikt om de formules voor het Separating Axis Theorem te schrijven voor collisiedetectie, omdat die wiskunde iets te zwaar voor mij was. Voor het overige is alles — de engine, de IDE, de taal en de architectuur — handmatig geschreven.
Dit is niet omdat er iets mis is met het gebruik van AI als programmeertool; ik weet dat het een groot onderdeel is van de toekomst van softwareontwikkeling. Ik heb dit project echter gebouwd voor het plezier en de uitdaging, en persoonlijk geniet ik ervan om zelf de code te schrijven in plaats van een machine dit voor me te laten doen.
In een tijdperk van AI en diens groeiende kracht geloof ik nog steeds dat een complete versie van dit project oprecht nuttig kan zijn. ArcadeMaker is een beginnersvriendelijke engine, en mensen zullen altijd moeten begrijpen hoe code werkt, zelfs als ze uiteindelijk stoppen met het handmatig schrijven van elke regel. De enige echte manier om dat te leren, is door daadwerkelijk zelf code te schrijven.
Daarnaast kan deze engine een geweldig hulpmiddel zijn voor iedereen die simpelweg voor zijn plezier games wil maken, op eigen kracht en zonder afhankelijk te zijn van AI voor het werk.
ArcadeMaker
De engine en de IDE zijn zelf geschreven in C#, maar de taal die je binnen ArcadeMaker gebruikt om je games te programmeren is een door mij ontwikkelde custom taal, en niet C#. Momenteel wordt de graphics- en audiobackend aangedreven door MonoGame, wat export naar desktop, mobiel en consoles mogelijk maakt. Er zijn daarnaast plannen om een KNI-engine implementatie toe te voegen om ondersteuning voor het web mogelijk te maken.
Dit project is nog niet voltooid. Omdat ik zeer weinig tijd heb om eraan te werken, heb ik besloten het open source te maken in de hoop dat anderen het interessant vinden en helpen om er iets concreets van te maken. ArcadeMaker is gebaseerd op GameMaker 8; wie dit programma heeft gebruikt, zal merken dat de engine zeer eenvoudig te leren is.
Projectachtergrond
ArcadeMaker is over een periode van enkele jaren in verschillende fasen gebouwd. Verschillende onderdelen zijn geschreven op uiteenlopende momenten in mijn leerproces als programmeur.
De IDE werd ongeveer drie jaar geleden geschreven, in een tijd dat mijn programmeervaardigheden nog anders waren dan nu. De taal Exp werd na de IDE ontwikkeld, maar nog vóór de huidige core engine en de MonoGame-implementatie bestonden.
Oorspronkelijk begon ArcadeMaker als een op C# gebaseerde engine waarbij gebruikers hun gamelogica direct in C# schreven. Na een tijdje weg te zijn geweest van het project, heb ik mijn eigen programmeertaal gecreëerd en besloten terug te keren naar ArcadeMaker. Hierbij is de oude C#-scriptlaag vervangen door mijn eigen taal en is de core engine daar omheen herschreven.
Vanwege deze langdurige en gefaseerde ontwikkelingsgeschiedenis bevat de IDE momenteel veel functies die de nieuwe engine-backend nog niet ondersteunt. Voorbeelden hiervan zijn:
- Parent objects: ondersteund in de IDE, maar nog niet geïmplementeerd in de engine.
- Dll package manager: aanwezig in de IDE, maar heeft momenteel geen effect (dit was wel het geval toen de engine C# gebruikte voor scripting).
Het langetermijndoel is om de nieuwe engine functioneel gelijk te trekken met de oude C#-versie en deze vervolgens verder uit te breiden.
Geplande functies
- Volledige implementatie van de ontbrekende IDE-functies in de engine.
- KNI-engine backend voor webexport.
- Een completere en stabielere versie van de Exp-taal.
- Implementatie van alle gangbare, dagelijkse gamefuncties, zoals
drawRect(), deactivateInstancesInRegion(), setRoomWidth() en vele andere.
- Crossplatform templates voor mobiele builds en console-builds.
- Documentatie, tutorials en voorbeeldprojecten.
Waarom Open Source?
Ik werk met veel plezier aan ArcadeMaker, maar ik heb onvoldoende tijd om het in het tempo te ontwikkelen dat het verdient. Door het open source te maken, hoop ik dat anderen:
- Met de engine willen experimenteren.
- De taal en tooling willen verbeteren.
- Ontbrekende functies toevoegen.
- Bugs oplossen.
- Helpen de toekomst van het project vorm te geven.
Als je houdt van workflows in de stijl van GameMaker of wilt bijdragen aan een lichtgewicht, beginnersvriendelijke 2D-engine, ben je zeer welkom om mee te doen.
Hoe te bouwen
- Clone de repository.
- Open de solution in je voorkeurs C#-IDE (Visual Studio, Rider of VS Code).
- Herstel de NuGet-pakketten.
- Bouw het project.
- Start het IDE-project om ArcadeMaker op te starten.
- (Optioneel) Ga nadat de IDE is geladen naar "File -> Open Project" om een voorbeeldproject te laden uit
tests/Example Projects.
Bijdragen
Bijdragen van alle soorten worden gewaardeerd:
- Verbeteringen aan de code.
- Bugfixes.
- Documentatie.
- Voorstellen voor nieuwe functies.
- Implementaties van engine-backends.
- Ideeën voor het ontwerp van de taal.
Open aub eerst een 'issue' om je idee te bespreken voordat je een pull request indient.
Op dit moment ben ik de enige ontwikkelaar die in mijn vrije tijd aan dit project werkt, waardoor de documentatie echt tekortschiet. Ik zal mijn best doen dit te verbeteren, maar stel gerust al je vragen over het project; ik zal ze allemaal beantwoorden!
Licentie
Dit project is gelicenseerd onder de MIT-licentie. Zie het LICENSE-bestand voor details.
Opmerking over deze README en het gebruik van AI
Ik heb GPT gebruikt om te helpen bij het schrijven van dit README-bestand.
Omdat AI wordt genoemd, nog een paar woorden hierover: dit project bevat bijna 0% door AI gegenereerde code of architectuur. De enige uitzondering is dat ik Claude heb gebruikt om de formules voor het Separating Axis Theorem te schrijven voor collisiedetectie, omdat die wiskunde iets te zwaar voor mij was. Voor het overige is alles — de engine, de IDE, de taal en de architectuur — handmatig geschreven.
Dit is niet omdat er iets mis is met het gebruik van AI als programmeertool; ik weet dat het een groot onderdeel is van de toekomst van softwareontwikkeling. Ik heb dit project echter gebouwd voor het plezier en de uitdaging, en persoonlijk geniet ik ervan om zelf de code te schrijven in plaats van een machine dit voor me te laten doen.
In een tijdperk van AI en diens groeiende kracht geloof ik nog steeds dat een complete versie van dit project oprecht nuttig kan zijn. ArcadeMaker is een beginnersvriendelijke engine, en mensen zullen altijd moeten begrijpen hoe code werkt, zelfs als ze uiteindelijk stoppen met het handmatig schrijven van elke regel. De enige echte manier om dat te leren, is door daadwerkelijk zelf code te schrijven.
Daarnaast kan deze engine een geweldig hulpmiddel zijn voor iedereen die simpelweg voor zijn plezier games wil maken, op eigen kracht en zonder afhankelijk te zijn van AI voor het werk.