aaronvark / PeerReview1819

Repo for peer review assignments for year 2 development class of 18/19
0 stars 0 forks source link

Dennis Borst - Making a tool #65

Open DennisBorst opened 4 years ago

DennisBorst commented 4 years ago

Aanleiding:

Ik ben van plan om een 2D map building tool te maken. Ik ben op het moment met een vriend (een artist) een 2D fighting game aan het maken, en het zou heel makkelijk zijn om daar een map building tool voor te hebben om snel levels in elkaar te zetten. Zo kunnen wij allebei aan de levels werken en scheelt dat mij weer tijd. Daarnaast wil ik later ook meer 2D platformers maken waar dit ook ideaal voor is.

Dus mijn idee was om een balk aan de zijkant van de editor te hebben waarin je prefabs kunt doen. Zodra je dan je prefab in die balk aanklikt dan kan je deze plaatsen in de map op een tile grid.

Mijn doelgroep is dus artist die hun art even snel in een level kunnen uitproberen en voor de designers om snel levels te creëren.

Onderzoek:

Brackeys: https://www.youtube.com/watch?v=B_Xp9pt8nRY Dit is een interessante manier om levels heel simpel te maken maar voor mijn gevoel is het nog te statisch als je de hele tijd van photoshop naar unity moet.

Brackeys: https://www.youtube.com/watch?v=GSo_fU1JdfM Deze tool is erg handig voor andere projecten die ik ga maken, maar het het is niet de tile placer die ik zelf zou willen maken.

Unity basics: https://www.youtube.com/watch?v=fmNtibNWPhc (brackeys heeft hier ook een video van: https://www.youtube.com/watch?v=ryISV_nH8qw) De tile pallete komt heel erg dicht in de buurt wat ik zelf ook wil gaan maken, het werkt fijn, maar je kan er niet heel makkelijk per object een persoonlijke eigenschap aan geven.

2D game kit: https://learn.unity.com/project/2d-game-kit/?tab=overview In dit project word ook veel gebruikt gemaakt van de tile palletes, net zoals wat ik hierboven er over zeg.

Uitleg: https://gamedevelopment.tutsplus.com/tutorials/how-to-use-tile-bitmasking-to-auto-tile-your-level-layouts--cms-25673 Op deze site staat beter uitgelegd hoe de tile bitmasking in elkaar zit.

Conclusie:

Ik merk dat er al heel veel is dat ik zelf wou gaan maken, het lijkt mij nog steeds handig om het zelf te maken omdat ik het meer kan vormen naar mijn eigen smaak. Zo verdiep ik mij ook meer in wat er allemaal in deze tools gebeurd wat ik super interessant vind. Als het mij lukt om zo'n tool te maken en ik heb nog tijd over dan ga ik er ook nog toevoegingen aan doen die niet in al deze tools zitten (de toevoegingen moet ik nog wel bedenken).

aaronvark commented 4 years ago

Wat in jou geval denk ik goed is om te overwegen, is om de editor wat meer toe te spitsen op het precieze genre/game waar je het voor maakt. Bedenk goed op welk systeem dat er al is je het wilt baseren, bijvoorbeeld gebruik makend van de Tile editor die Unity inmiddels heeft of niet, en wat voor collision system je wilt gebruiken (2D/3D, etc.). Maak dus goed gebruik van dingen die al beschikbaar zijn, en daarbij is mijn tip om zoveel mogelijk ondersteuning te zoeken in engine features die op lange termijn nog in gebruik blijven. Als je dus een custom iets hebt van iemand anders dan Unity, of een Unity feature die niet obsolete/deprecated is, dan zou ik kiezen voor de Unity feature (bijv. het Tile system). Ditzelfde kan opgaan voor andere onderdelen (bijv. de colliders waar je gebruik van maakt, maar misschien wil je juist wel kunnen kiezen welke physics/collider system er wordt gebruikt).

Vervolgens kan je gaan kijken naar wat voor unieke features in levels jou game echt nodig heeft die niet standaard in een level editor te vinden zijn, en je editor daar goed op aansluiten. Dus, begin bij het concept: wat heeft het nog meer nodig, dan puur een visual/collider omgeving? Kan je daar nog iets mee doen?

DennisBorst commented 4 years ago

Hier staat de code van mijn tool https://github.com/aaronvark/PeerReview1819/commit/4d07de2dd41c8f842136fc54768cd9cf912edddf, het is pas in de eerste versie dus er moet nog veel aan gebeuren, maar ik wil nu de tool zo maken dat hij op een bepaald grid plaatst en dat je de tiles ook weer kan weghalen.

aaronvark commented 4 years ago

Overzichtelijk! Wat nog wel kan helpen is alles wat je nog niet hebt gedaan alvast met comments een plekje geven. Ik kan nu niet zo goed zien of je al click interactie hebt, of waar die terecht zou moeten komen in de flow van de tool. Ergens een "//handle click input" zou dan al overzicht geven, plus als je er TODO's van maakt heb je ook zelf snel inzichtelijk wat je allemaal al wel/niet hebt gedaan.

Afronden op grid kan je doen door te delen door je gridsize en dan naar int te casten. (int)(pos/gridSize), dan krijg je altijd een hoek van het grid. Dit geeft soms nog wel een grid dat verder weg is dan je wil, dus de helft van de gridsize erbij doen voordat je de deling doet kan dan al helpen (dat is letterlijk hoe je int afrondingen correct maakt: (int)(value + 0.5f), dus: (int)((pos/gridsize)+0.5f). Note dat ik hier gewoon + 0.5 doe na de deling, wat wiskundig hetzelfde is als gridsize/2 erbij doen voor de deling.