Return to search

Design och implementation av en skriptmotor för spel

Denna rapport beskriver resonemanget kring framtagandet av en modul som tillåter användaren att, på ett lättanvänt sätt, skripta beteenden hos en redan existerande grafikmotor. Arbetsprocessen beskrivs steg för steg med definition av vad ett skript är, vad som ska kunna gå att skripta och vilka övergripande krav som ställs, design av tekniska lösningar, design av syntax, testning och till sist resultat. Resultatet varierade på de olika punkterna. Den underliggande tekniska lösningen blev lyckad då den uppfyllde kraven på modularisering, robusthet, flexibilitet och prestanda. Ur en tillämpbarhetssynpunkt blev resultatet även här tillfredsställande eftersom det visade sig vara fullt möjligt att skripta kloner på de tre försöksspelen (SkiiFree, BreakOut och Space Invaders) på ett sätt som kändes bra och rättfram. Dock blev resultatet inte lika lättanvänt som jag hade hoppats på. Jag upplevde att användandet av naturlig syntax i mitt fall försvårar för användaren istället för att underlätta förståelsen. Detta eftersom människor till stor del lär sig av att känna igen mönster och upprepningar och dessa elimineras till stor del när naturlig syntax används eftersom varje kommando i skriptkoden varierar så mycket utseendemässigt sinsemellan. Även rent generellt upplevde jag att skriptningsmetoden att svart på vitt skriva kod inte gjorde sig bäst för mitt syfte. Denna metod gör sig bättre då användarens möjligheter är mindre begränsade och denne arbetar på en lägre programkodsnivå. I syftet att på ett enkelt sätt kunna ändra beteendet i en existerande värld, snarare än att från grunden bygga upp en helt egen dito, vore det bättre att istället använda ett mer grafiskt användarinterface, helst helt integrerat i grafikmotorn. Examensarbetet gav mig en klar bild över de krav som ställs på en skriptmotorn och hur man kan gå till väga för att uppfylla dessa krav. Jag fick även, tack vare erfarenheterna med examensarbetet, insikter i fördelarna och nackdelarna med naturlig syntax för programkod. / This report describes the design and implementation of a module that provides the user a way to, in an easy-to-use manner, script the behaviours for an already existing graphics-engine. The work process is described step by step with definition of what a script is, what should be scriptable and what the general demands are, design of technical solutions, design of the codesyntax, testing and results. The result varies for the different aspects. The underlying technical solutions became successful since they fulfilled the demands for modularisation, robustness, flexibility and performance. The result also became satisfying from a relevance point-of-view because it is shown to be fully possible to script clones of the three test-games (SkiiFree, BreakOut and Space Invaders) in a way that felt good and forthright. However, the syntax was not as easy to use as I had hoped for. I found that the use of natural syntax might make it harder for the user to learn how to script rather than the opposite. This is, I think, because people to a large extent learn by recognizing patterns and these were less uniform with the use of a flexible natural syntax that can be varied freely. Also, I felt that the general method to write textual script-code in that sense was not the best for my purpose. For the purpose to modify the behaviours of an existing world, rather than building new ones from bottom up, it could be better to provide a more graphical user interface, preferable fully integrated into the graphics-engine. This work has given me insights into the requirements on a script engine and how these requirements can be met.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:liu-5361
Date January 2006
CreatorsJohansson, Erik
PublisherLinköpings universitet, Institutionen för datavetenskap, Institutionen för datavetenskap
Source SetsDiVA Archive at Upsalla University
LanguageSwedish
Detected LanguageSwedish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess

Page generated in 0.0024 seconds