GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4

Game engine programming involves a great number of software components, many of which perform similar tasks; for example, memory allocation must take place in the renderer as well as in the creation routines while other tasks such as error logging must take place everywhere. One area of all games wh...

Full description

Bibliographic Details
Main Author: Geisler, Benjamin Jay
Format: Others
Published: NSUWorks 2019
Subjects:
DSL
Online Access:https://nsuworks.nova.edu/gscis_etd/1081
https://nsuworks.nova.edu/cgi/viewcontent.cgi?article=2078&context=gscis_etd
id ndltd-nova.edu-oai-nsuworks.nova.edu-gscis_etd-2078
record_format oai_dc
spelling ndltd-nova.edu-oai-nsuworks.nova.edu-gscis_etd-20782019-10-20T04:15:38Z GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4 Geisler, Benjamin Jay Game engine programming involves a great number of software components, many of which perform similar tasks; for example, memory allocation must take place in the renderer as well as in the creation routines while other tasks such as error logging must take place everywhere. One area of all games which is critical to the success of the game is that of game balance and tuning. These balancing initiatives cut across all areas of code from the player and AI to the mission manager. In computer science, we’ve come to call these types of concerns “cross cutting”. Aspect oriented programming was developed, in part, to solve the problems of cross cutting: employing “advice” which can be incorporated across different pieces of functionality. Yet, despite the prevalence of a solution, very little work has been done to bring cross cutting to game engine programming. Additionally, the discipline involves a heavy amount of code rewriting and reuse while simultaneously relying on many common design patterns that are copied from one project to another. In the case of game balance, the code may be wildly different across two different games despite the fact that similar tasks are being done. These two problems are exacerbated by the fact that almost every game engine has its own custom DSL (domain specific language) unique to that situation. If a DSL could showcase the areas of cross cutting concerns while highlighting the ability to capture design patterns that can be used across games, significant productivity savings could be achieved while simultaneously creating a common thread for discussion of shared problems within the domain. This dissertation sought to do exactly that- create a metalanguage called GAMESPECT which supports multiple styles of DSLs while bringing aspect-oriented programming into the DSL’s to make them DSAL (domain specific aspect languages). The example cross cutting concern was game balance and tuning since it’s so pervasive and important to gaming. We have created GAMESPECT as a language and a composition framework which can assist engine developers and game designers in balancing their games, forming one central place for game balancing concerns even while these concerns may cross different languages and locations inside the source code. Generality was measured by showcasing the composition specifications in multiple contexts and languages. In addition to evaluating generality and performance metrics, effectiveness was be measured. Specifically, comparisons were made between a balancing initiative when performed with GAMESPECT vs a traditional methodology. In doing so, this work shows a clear advantage to using a Metalanguage such as GAMESPECT for this task. In general, a line of code reduction of 9-40% per task was achieved with negligible effects to performance. The use of a metalanguage in Unreal Engine 4 is a starting point to further discussions concerning other game engines. In addition, this work has implications beyond video game programming. The work described highlights benefits which might be achieved in other disciplines where design pattern implementations and cross-cutting concern usage is high; the real time simulation field and the field of Windows GUI programming are two examples of future domains. 2019-01-01T08:00:00Z dissertation application/pdf https://nsuworks.nova.edu/gscis_etd/1081 https://nsuworks.nova.edu/cgi/viewcontent.cgi?article=2078&context=gscis_etd CCE Theses and Dissertations NSUWorks aspect oriented DSL metaprogramming programming languages unreal engine video games Computer Sciences
collection NDLTD
format Others
sources NDLTD
topic aspect oriented
DSL
metaprogramming
programming languages
unreal engine
video games
Computer Sciences
spellingShingle aspect oriented
DSL
metaprogramming
programming languages
unreal engine
video games
Computer Sciences
Geisler, Benjamin Jay
GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
description Game engine programming involves a great number of software components, many of which perform similar tasks; for example, memory allocation must take place in the renderer as well as in the creation routines while other tasks such as error logging must take place everywhere. One area of all games which is critical to the success of the game is that of game balance and tuning. These balancing initiatives cut across all areas of code from the player and AI to the mission manager. In computer science, we’ve come to call these types of concerns “cross cutting”. Aspect oriented programming was developed, in part, to solve the problems of cross cutting: employing “advice” which can be incorporated across different pieces of functionality. Yet, despite the prevalence of a solution, very little work has been done to bring cross cutting to game engine programming. Additionally, the discipline involves a heavy amount of code rewriting and reuse while simultaneously relying on many common design patterns that are copied from one project to another. In the case of game balance, the code may be wildly different across two different games despite the fact that similar tasks are being done. These two problems are exacerbated by the fact that almost every game engine has its own custom DSL (domain specific language) unique to that situation. If a DSL could showcase the areas of cross cutting concerns while highlighting the ability to capture design patterns that can be used across games, significant productivity savings could be achieved while simultaneously creating a common thread for discussion of shared problems within the domain. This dissertation sought to do exactly that- create a metalanguage called GAMESPECT which supports multiple styles of DSLs while bringing aspect-oriented programming into the DSL’s to make them DSAL (domain specific aspect languages). The example cross cutting concern was game balance and tuning since it’s so pervasive and important to gaming. We have created GAMESPECT as a language and a composition framework which can assist engine developers and game designers in balancing their games, forming one central place for game balancing concerns even while these concerns may cross different languages and locations inside the source code. Generality was measured by showcasing the composition specifications in multiple contexts and languages. In addition to evaluating generality and performance metrics, effectiveness was be measured. Specifically, comparisons were made between a balancing initiative when performed with GAMESPECT vs a traditional methodology. In doing so, this work shows a clear advantage to using a Metalanguage such as GAMESPECT for this task. In general, a line of code reduction of 9-40% per task was achieved with negligible effects to performance. The use of a metalanguage in Unreal Engine 4 is a starting point to further discussions concerning other game engines. In addition, this work has implications beyond video game programming. The work described highlights benefits which might be achieved in other disciplines where design pattern implementations and cross-cutting concern usage is high; the real time simulation field and the field of Windows GUI programming are two examples of future domains.
author Geisler, Benjamin Jay
author_facet Geisler, Benjamin Jay
author_sort Geisler, Benjamin Jay
title GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
title_short GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
title_full GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
title_fullStr GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
title_full_unstemmed GAMESPECT: A Composition Framework and Meta-Level Domain Specific Aspect Language for Unreal Engine 4
title_sort gamespect: a composition framework and meta-level domain specific aspect language for unreal engine 4
publisher NSUWorks
publishDate 2019
url https://nsuworks.nova.edu/gscis_etd/1081
https://nsuworks.nova.edu/cgi/viewcontent.cgi?article=2078&context=gscis_etd
work_keys_str_mv AT geislerbenjaminjay gamespectacompositionframeworkandmetaleveldomainspecificaspectlanguageforunrealengine4
_version_ 1719270679935713280