0% found this document useful (0 votes)
78 views10 pages

A Catalogue of Game-Specific Anti-Patterns: Vartika Agrahari, Sridhar Chimalakonda

Uploaded by

warofor676
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views10 pages

A Catalogue of Game-Specific Anti-Patterns: Vartika Agrahari, Sridhar Chimalakonda

Uploaded by

warofor676
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

A Catalogue of Game-Specific Anti-Patterns

Vartika Agrahari, Sridhar Chimalakonda∗


Research in Intelligent Software & Human Analytics (RISHA) Lab
Dept. of Computer Science and Engineering
Indian Institute of Technology Tirupati
India
{cs18m016,ch}@iittp.ac.in

ABSTRACT 1 INTRODUCTION
With the ever-increasing use of games, game developers are ex- The game industry continues to see expanding growth in terms of
pected to write efficient code and support several aspects such as revenue and worldwide usage. Despite the pandemic, Newzoo pre-
security, maintainability, and performance. However, the continu- dicts that 2021 will have revenue of about $189.3 billion for mobile,
ous need to update the features of games in shorter duration might PC, and console gaming1 . However, increasing market demand for
compel the developers to use anti-patterns, code smells and quick- games and their widespread usage has posed a challenge for game
fix solutions that may affect the functional and non-functional developers to develop and design better quality games in less time
requirements of the game. These bad practices may lead to techni- [14, 27]. This pressing need may sometimes force developers to
cal debt, poor program comprehension, and can cause several issues use quick-fix solutions and can result in the violation of functional
during software maintenance. While there exists empirical research and non-functional requirements [9, 17]. Developers often tend to
on games, we are not aware of any work on understanding and violate good design choices and coding practices, and may end up
cataloguing these anti-patterns in the domain of games. Thus, in with bad practices or anti-patterns in software [9]. Although these
this paper, we propose a catalogue of game-specific anti-patterns by choices and practices may not directly affect the functionality of
mining and analyzing 892 commits, 189 issues, and 104 pull requests the program or cause any error, they may lead to long term future
from 100 open-source GitHub game repositories. We use regular problems of maintainability, security, performance, and so on, and
expressions and thematic analysis on this dataset and present a increasing technical debt. Existing literature consists of several re-
catalogue of ten game-specific anti-patterns along with examples. search studies regarding anti-patterns and code smells [15, 35, 38].
We see this catalogue as a first step for further empirical research Brown et al. [9] explain about anti-patterns stating that they are like
in the domain of games and can help game developers to improve misfits to a problem that should be prevented and avoided to lead
quality of games. to a better solution. Despite the existence of a number of studies
focusing on anti-patterns and code smells [17, 38, 48], understand-
CCS CONCEPTS ing and analyzing the presence of these anti patterns and smells in
• Software and its engineering → Maintaining software; • Gen- games is still largely unexplored in the literature [14, 27, 44].
eral and reference → Experimentation. Games need to be considered as a peculiar domain over other soft-
ware as it involves AI simulations, camera movements, actions of
players, game mechanics, particle effects, and so on [36]. They deal
KEYWORDS with real-time constraints and continuous rendering process, and,
Games, Anti-patterns, Catalogue, Thematic Analysis thus, the presence of anti-patterns in games may lead to degrada-
tion of game quality. Existing studies focused on psychological and
ACM Reference Format:
Vartika Agrahari, Sridhar Chimalakonda. 2022. A Catalogue of Game-Specific social [32], educational [19] and behavioural [3] effects of games,
Anti-Patterns. In 15th Innovations in Software Engineering Conference (for- but there is quite limited research on the software quality and bad
merly known as India Software Engineering Conference) (ISEC 2022), Febru- practices in game development [5, 8, 37], motivating the need for
ary 24–26, 2022, Gandhinagar, India. ACM, New York, NY, USA, 10 pages. this work.
https://doi.org/10.1145/3511430.3511436 GitHub hosts a large number of software repositories including
open-source games [26]. The increasing availability of data such
∗ This as commits, issues and pull requests on GitHub can be leveraged
work was done during the first author’s Masters’ Thesis with the RISHA Lab,
Dept. of CSE, IIT Tirupati. to understand the problems faced by users and developers and
corresponding potential solutions. Researchers have analyzed these
artifacts of GitHub to understand the sentiments of developers [53],
Permission to make digital or hard copies of all or part of this work for personal or their primary areas of interest by applying topic summarization [46],
classroom use is granted without fee provided that copies are not made or distributed
for profit or commercial advantage and that copies bear this notice and the full citation and similarity between projects [57]. In comparison to user feedback
on the first page. Copyrights for components of this work owned by others than ACM and surveys, they provide better and detailed information about the
must be honored. Abstracting with credit is permitted. To copy otherwise, or republish,
to post on servers or to redistribute to lists, requires prior specific permission and/or a
troubles faced by end-users and how they affect the usability and
fee. Request permissions from permissions@acm.org. performance of a software [26]. Thus, we considered the text corpus
ISEC 2022, February 24–26, 2022, Gandhinagar, India
© 2022 Association for Computing Machinery.
ACM ISBN 978-1-4503-9618-9/22/02. . . $15.00
https://doi.org/10.1145/3511430.3511436 1 https://newzoo.com/insights/articles/newzoos-games-trends-to-watch-in-2021/
ISEC 2022, February 24–26, 2022, Gandhinagar, India Vartika Agrahari, Sridhar Chimalakonda

of commits, issues, and pull requests to find the existence of game- • Execution of thematic analysis on the collected data to obtain
specific anti-patterns in these artifacts. Researchers have created game-specific anti-patterns.
catalogues within software engineering for domains such as android
[11], energy patterns [12], architecture [18], software metrics [13], 2.1 Dataset Collection
anti-patterns in multi-language systems [1], emphasizing the need We followed a multi-phase process to collect the dataset of text
for domain-specific catalogues. records for thematic analysis in the process of generating the cata-
Thus, considering games as a peculiar domain, there is need logue for game-specific anti-patterns. We describe them below:
to have a specialized catalogue for bad practices in games. In this
paper, we propose a catalogue of game-specific anti-patterns that 2.1.1 Phase 1: Collection of open-source game repositories.
could serve as a checklist for game developers during the game We started collecting the game repositories from a popular GitHub
development process. Language-specific anti-patterns and detection repository2 that provides awesome list of desktop games. The
techniques may not be sufficient to handle bad practices in games GitHub repository2 listing the popular games itself has the stargaz-
[15]. Unlike the existing literature which primarily focused on ers count of approximately 18.2K. We gathered the repositories and
source code and other artifacts [1, 18], we wish to leverage the browsed each game to inspect if it is game by checking its README
potential of the text corpus of commits, issues, and pull requests to as there were non-game repositories and forked repositories of the
answer the research question: original source. Thus, we ended up with a list of URLs of 229 game
What are the most prevalent anti-patterns in the context of repositories. There were a total of 15 genres of games spread across
games? 19 programming languages. The three major languages in which
We apply a systematic methodology comprising of data collec- these games were developed are JavaScript, C++, and C with 92,
tion followed by the commonly used thematic analysis [16, 40] 45, and 23 games respectively. The games present in this list were
on 1185 text data records of 100 open-source games to propose either browser-based (can be played instantaneously in the browser
a catalogue of ten game-specific anti-patterns. We describe the with no need for installation) or native, which requires installation.
methodology in detail in Section 2 and document the catalogue on 2.1.2 Phase 2: Apply selection criteria. Although we collected
our website as a reference for game developers. The contributions links of 229 games, we observed that there were games with zero
of the paper are as follows: star count, zero forks, and with size of less than 1 MB. Therefore, for
• A catalogue of ten game-specific anti-patterns along with a thematic analysis we decided to resort to a subset of these games
detailed discussion of each anti-pattern. The detailed descrip- repositories. We proposed the selection criteria below and filtered
tion is available online at : https:// rishalab.github.io/ Game_ 100 games out of 229 game repositories. We took the subset of
Anti_Patterns. the total games, which is significant enough and can represent the
• A public-domain dataset consisting of total 1185 text records, whole dataset as elaborated in below description. We created the
with 892 commits, 189 issues, and 104 pull requests mined subset by combining random games and the games having more
from 100 open-source games. stargazers count. Thus, mathematically subset can be shown:

The remainder of the paper is structured as follows. Section 2 Selection Rule


focuses on the methodology used to obtain the catalogue. Detailed If A = Whole Dataset, then B ⊂A,
catalogue of game-specific anti-patterns is presented in Section where, B = 0.5*(top starred games(A))+0.5*(random sample
3 with threats to validity in Section 4. Discussion in Section 5 is of remaining dataset after selecting top starred games(A))
followed by related work in Section 6, and eventually the paper
• First Half : Half of the subset determined for thematic analy-
ends with conclusion and future work in Section 7.
sis contains the top games sorted according to the stargazers
count in descending order. We did this to make sure that
2 METHODOLOGY we include the games which are most popular among the
We propose a four-phase data collection process followed by the- developer community [7, 45]. Also, the games having more
matic analysis for categorization of game-specific anti-patterns. stargazers count are generally open-source games which
Thematic Analysis is a commonly used methodology used by re- are not developed by a single developer, but a team of them
searchers to analyze patterns by utilizing qualitative analysis [16, [30]. Thus, we consider and analyze these games for our
40]. Researchers have used this qualitative method for categorizing catalogue. We selected a total of 50 top starred games from
energy patterns [12], agile challenges [20], awareness interpreta- the 229 game repositories. The metadata of the half subset is
tion for collaborative computer games [50], and so on. Researchers mentioned below:
also performed thematic analysis to gain insights based on user – Average stargazers count: 2320.9
reviews for disaster apps [49]. Thus, leveraging the thematic anal- – Average forks count: 816.46
ysis process fits our context of catalogue creation. We collect the – 22 games out of 50 are developed in the C++ language.
dataset from 100 open-source GitHub game repositories of different • Second Half : Another half of the subset belongs to the
genres, such as board game, puzzle, arcade, and so on. Methodology random sample taken from the remaining links after the
is shown in Figure 1, which comprises of two tasks: selection of top starred games. We did so to ensure that we
also take the randomized sample of the whole dataset. To
• Collection of the dataset in the form of commits, issues, and
pull requests, from open-source games mined from GitHub. 2 https://github.com/leereilly/games
A Catalogue of Game-Specific Anti-Patterns ISEC 2022, February 24–26, 2022, Gandhinagar, India

Figure 1: Methodology used to obtain catalogue of game-specific anti-patterns

confirm that the random sample is statistically significant, Table 1: Rationale behind words chosen for Data Collection
we resort to measuring the confidence level and confidence
interval of the selected subset. The confidence interval rep- Terms Rationale
resents the range of data that incorporates the true value Performance, Efficiency, To trace the records having issues
of the unknown population parameter. In other words, if Delay, Lag related to performance of games.
we construct an infinite number of the independent sample Usability To seek the problem related to
using a confidence interval, then the confidence level will usability.
correspond to the proportion that contains the true value of Refactor, Code Smell, Problem related to bad practices
the parameter. Therefore, based on stargazers count as a met- Anti-Pattern in code and their refactoring.
ric, the confidence level of the selected subset is 95% with a Bad, Issue, Bug, Defect, To track the problems which
confidence interval in the range of 70-135 [29]. A confidence Flaw, Fault, Problem causes some issue during the game
interval of 95% states that if we consider random samples of play. We made it general to
the same sample size for 100 times, then 95 out of 100 con- track any kind of issue in games.
tains the true but unknown mean in the interval of 70-135. Energy, Battery, Power Problems related to energy
A total of 50 games were selected randomly from the set of efficiency of game.
179 games (deducting top starred 50 games from 229 games). Freeze, Crash, Hang, To track the issues related
The metadata of random games selected is mentioned below. Glitch to the user interface of game.
– Average stargazers count: 102.5 Control Issues related to the control system
– Average forks count: 43.2 of games.
– 35 games out of 50 were developed in JavaScript language.

We observe that selected games in the subset majorly written in C++


We used GitHub API v33 and PyGithub4 to mine commits, pull
and JavaScript. Further, among the 100 games selected, 44 games
requests, and issues. For pull requests and issues, GitHub API v3 doc-
are native games while the remaining 56 games are browser-based.
umentation5 states that -GitHub’s REST API v3 considers every pull
The metadata of the game chosen for the study is shown in Table 2.
request an issue, but not every issue is a pull request. For this reason,
we identified issues out of get_issues (state=‘all’) function, which
2.1.3 Phase 3: Regular expression based gathering of data: returns issues as well as pull requests. Another function get_pulls
Based on the 100 games selected for analysis, we made a regular (state=‘all’) returns a list of all pull requests. We used result of both
expression based search in commits, issues, and pull requests to find functions to segregate issues and pull requests. We merged the text
out the subjects of our potential interests [4, 12]. We searched for data of the title, body, and comments of all issues and pull requests
various words that can possibly correspond to game-specific anti- to do the regular expression matching. For commits, we included
patterns. The search words along with the rationale for selecting text records, which are merged in the default branch of the GitHub
those words are given in Table 1. We include few words such as: repository. So, we mined a total of 1989 records from 100 games,
which consists of 1245 commits, 523 issues, and 221 pull requests.
. ∗ ( performance | e f f i c i e n c y | delay | lag | We can observe that count of commits is higher than issues or pull
requests. The possible reason for this is the number of commits in
u s a b i l i t y | r e f a c t o r | code s m e l l | a n t i −
comparison to pull requests and issues are generally more in most
p a t t e r n | bad | i s s u e | bug | d e f e c t | f l a w |
of the repositories. Some of the repositories have no issues or pull
f a u l t | p r o b l e m | e n e r g y | b a t t e r y | power |
f r e e z e | c r a s h | hang | g l i t c h | c o n t r o l ) . ∗ 3 https://developer.github.com/v3
4 https://pygithub.readthedocs.io
5 https://developer.github.com/v3/issues
ISEC 2022, February 24–26, 2022, Gandhinagar, India Vartika Agrahari, Sridhar Chimalakonda

requests; still, they have a lot of commits. For example, Game-off- • Data Familiarization: We thoroughly analyzed each record
20136 , is popular among the developer community with 590 forks of our dataset and inspected the text data related to issues,
so far and contains 368 commits but no issues or pull requests. commits, and pull requests. We observed the title, body, and
comments (column full_content) of all records and discussed
2.1.4 Phase 4: Manual refinement. : To validate that the sub- it with co-author and a fellow volunteer.
jects we mined are relevant and fit our interest, we manually in- • Generating Initial Labels: Based on records of commits,
spected the data collected to separate the false positives [12]. An issues, and pull requests, we started giving initial codes to
example false positive we encountered in one of the issues is: “We the dataset. We initialized some themes such as usability,
had a rocking day for gameplay balancing. I think it’s pretty good performance, and many more on an abstract note. We divide
for now, let’s create separate issues for any remaining tweaks" 7 . We the process into several iterations supported by rigorous
observe that the text data does not specify any anti-patterns in discussions among both the authors and a fellow volunteer.
games. • Searching and Reviewing Themes: After analyzing all the
We followed two strategies for manual refinement: instances of our dataset, we discuss and review them to find
1. Examine the matched text data with the regular expression and the relevance of the themes in the context of games. We
find its relevance in the context of games. divided them into subcategories wherever required and also
2. Analyze the entire thread of the matched record by visiting merged the themes accordingly. We decide to discard the
its GitHub page, and observing the comments and meaning of themes which occurred for few instances, i.e., less than three
the conversation. It can help in removing the records that do not times.
discuss the problems in games, but something else which is not • Defining Themes: In this stage, we made an orderly de-
consequential enough. For example, we found an issue, where the scription of each anti-pattern and its occurrence. Section 3
developers were considering the updates and contribution to the describes all themes observed for game-specific anti-patterns
repository and not about the problems in game8 . along with their definition and the occurrences in the dataset.
Thus after manual refinement of all records, we end up with
1185 text records with 892 commits, 189 issues, and 104 pull requests. Both the researchers and one volunteer were involved in all the
Data format: Our dataset contains fields such as username, name stages of thematic analysis. There also arose times when the re-
of the game, URL, text (contains commit_message, if the record searchers were in disagreement on the themes, but then we ana-
is of the commit, otherwise contains the body of issues or pull lyzed the theme in the context of games, how the theme can help,
requests), matching text with regular expressions, and a column and how it can affect the game development [47]. We also found
named full_content which contains the combined text data of head, instances where a single record was falling into multiple themes
body, and comments in case of issues or pull requests. We made leading to co-occurrences9 .
the column full_content to analyze the full-text data related to any In total, 892 commits, 189 issues, and 104 pull requests were ana-
issues and pull requests. lyzed during the process of thematic analysis. As a result, we obtain
ten game-specific anti-patterns.

Table 2: Metadata of 100 selected games 3 GAME-SPECIFIC ANTI-PATTERNS:


CATALOGUE DEFINITION
Features Statistics
Here, we list all the game-specific anti-patterns. We describe each
Average stargazers count 1214
one of them with the following: context, problem, solution, exam-
Average forks count 431 ple for situation illustrating the occurrence in the case of games
Open issues 92 and implications. For each anti-pattern, we discuss implications
#genres 13 for researchers (indicated with the symbol R) and/or practitioner-
#programming languages 15 s/developers (P/D) based on our findings. A detailed discussion on
# browser-based games 56 each anti-pattern along with the GitHub link of its occurrences is
# native games 44 available online at: https:// rishalab.github.io/ Game_Anti_Patterns.
Further, Table 3 shows examples of each theme along with its ref-
erence.
2.2 Thematic Analysis (1) Beware of Vague Inheritance from Game Engines/Frame-
To curate the catalogue, we resort to the commonly used thematic works
analysis approach [16, 40] and identify game-specific anti-patterns Context: Nowadays, games are often developed using a
gathered from issues, commits, and pull requests. In total, two re- framework or game engine that simplifies the task of game
searchers and one volunteer were involved in the whole process of developers by providing a set of templates/ modules which
thematic analysis. We followed the approach of thematic analysis prevent them from developing the game from scratch [33].
by implementing below four steps on our dataset: Problem: The anti-patterns inherited can affect functional
and non-functional requirements of the game.
6 https://github.com/redbluegames/game-off-2013 Solution: We should be aware of the anti-pattern present in
7 https://github.com/lostdecade/onslaught_arena/issues/9
8 https://github.com/KeenSoftwareHouse/SpaceEngineers/issues/584 9 https://osf.io/jqv9m/?view_only=ab7a669e6faf41798a9e6212b2485c6e
A Catalogue of Game-Specific Anti-Patterns ISEC 2022, February 24–26, 2022, Gandhinagar, India

Figure 2: A scenario of Unwanted moves taken from open-


source game, 3D Hartwig Chess Set. Label [A] shows the un-
wanted movement of jail pieces.
Figure 3: The screenshot is taken from a pull request of the
game 2048, where a user talks about more colors for tiles as
less colors make game boring. Underlined sentences high-
the game engine/frameworks and should resolve it before us- lights the text discussing about the UI Design of game.
ing it for the development of the game. Game engines should
be examined for the existence of any anti-pattern which can
be inherited by the game, and thus should be removed at the
time of development.
Example: Consider a board game using a chess library, that
is used for chess piece placement/movement, move genera-
tion/validation, and check/checkmate/stalemate detection.
Thus, if there exists an issue in any one of the rules of check-
mate detection, then it can lead to the wrong detection for
the game, that gets inherited from the chess library.
Implications: R can explore this domain more in the con-
text of games and how vague inheritance of anti-patterns
could lead to unwanted consequences in game quality. P/D
should keep track of the anti-patterns present in the devel-
opment environment to avoid unexpected technical debt in
the game. Figure 4: Screenshot taken from one of the issue of game
(2) Avoid Unwanted Movement of Game Objects AlienInvansion, where the user is not able to view the game
Context: Player moves are one of the important parts of controls properly on a particular Chrome version and spe-
gameplay. Player movements should be logical, consistent cific mobile phone.
and optimized [31].
Problem: If the game does not follow the expected behavior,
it causes hindrance in the usability of the game. It does not (3) Ensure Balance Between Game Controls and Function-
cause any violation in the game rules, but it makes the game ality
clumsy to play. Context: Game control is an integral part of the gameplay.
Solution: Developers should keenly focus on this anti-pattern Having effective, smooth and minimized movements of vari-
by planning out the object movements in advance which is ous devices such as keyboard, joystick, mouse, etc. increases
logical and expected by the end-user. the usability of game [31].
Example: Consider the case of a board game such as chess, Problem: Rough and faulty game controls can have a nega-
which requires grabbing and moving the pieces in the game. tive impact on usability factor.
Thus, the player should not be allowed to move jail pieces Solution: Optimized game actions along with smooth game
(as shown in Figure 2). Similarly, there should be a check controls increase hassle-free gameplay.
on moving pieces so that the players do not move the piece, Example: In the case of point and click game, there should
which is not of his/her color. It avoids unnecessary extra not be any action related to the keyboard or any other device,
work and needless confusion for end-users. as it causes unnecessary control movements for the player.
Implications: For researchers R, finding out the frequent Implications: Researchers R can explore ways to address
occurrences of this anti-pattern and the steps leading to them this anti-pattern by proposing different ways to optimize
can be a interesting research direction in the context of game. game controls with maximum game features coverage while
For developers P/D, it can help in optimizing the game object P/D could provide game with minimum mouse scrolls, key-
movements, thus leading to better performance of game. board buttons, and other devices.
ISEC 2022, February 24–26, 2022, Gandhinagar, India Vartika Agrahari, Sridhar Chimalakonda

(4) Avoid Wrong Logic/Invalid Moves of a user. Figure 4 shows a screenshot of an issue related to
Context: Game design involves the implementation of many platform dependency of game, where the user faces problem
small modules that results in one big module. These small in viewing the icons and game controls because of platform
modules of functionalities should be implemented properly dependency.
with proper logic; otherwise, it can lead to a faulty game. Implications: All the steps and requirements related to
Invalid moves lead to a violation of game rules and thus platform dependency of the game should be properly docu-
creates confusion for users. mented involving lower-level details by the developer P/D;
Problem: Violation of game rules through invalid moves thus the user will not have to struggle on the execution of
can destroy the likeness of the game in player’s mind as it game.
highlights the loopholes in a game. (7) Avoid Memory Leaks
Solution: Wrong Logic/Invalid moves should be strictly Context: Games involve different game objects and assets,
limited by the developers by carefully defining the control- which consumes a lot of memory. This memory storage
action of the game. There should be precise “Game Descrip- should be used wisely; otherwise it can cause memory leak.
tion Language” which can guide the developer on each step Problem: Memory leak causes reduction in available mem-
[51]. ory for usage, which causes bad performance.
Example: In a chess game, if the game design allows illegal Solution: Memory leak can be reduced by avoiding number
moves also in the game, without any objection, then the of case scenario such as : multiple references to the same ob-
game may lose its purpose of play. ject, creating huge object tree, assurance of proper garbage
Implications: This anti-pattern opens up new research di- collection of unused variable.
rection for researchers R to explore it deeply and how it Example: Consider an arcade game, where different game
affects the gameplay. Further, open-source game developers objects keep on appearing and disappearing in the gameplay.
P/D should particularly try to avoid and check invalid moves These objects need to be handled carefully in the memory to
in their game. avoid a memory leak. Figure 5 shows a screenshot of game
(5) Avoid User Interface Glitch where developer amend the code to remove the problem of
Context: UI is an essential component of game display that memory leak in game.
can attract or frustrate the user. Implications: To avoid memory leak problem, developers
Problem: Bad UI design can lead to a displeasing display of P/D should free up the unnecessary variables and game ob-
the game. Issues which cause problems in the audio/video of jects, and should use the idea of data locality [37]. Developers
games affects the UI of game and can lead to demotivation should use the object pool where memory can be reused in-
in the player for playing the game. stead of allocating and freeing them every time [37].
Solution: The UI design should be visually pleasing and (8) Avoid Energy Extensive Patterns
should follow the UI heuristics of game [24]. Context: Sustainable software development has become one
Example: The tile size in the board related games should of the key requirement of current era. Any game should be
be of average size. It should not be too big or too small. sustainable and energy-efficient which consumes optimized
Another instance can be shown in the screenshot (Figure 3) power [10]. It must be designed in a way so that it fulfills the
that discusses tiles of more colors in the game 2048. functional and non-functional requirement with minimum
Implications: Open-source developers P/D should specially power usage.
emphasize on UI of game by conducting UI quality assurance Problem: More power consumption leads to faster power
test. They should test the compatibility of game with various drainage.
devices and should ensure proper layout, content, images Solution:Developers should avoid energy anti-pattern in
and font. game [12], and should utilize the process of sustainable soft-
(6) Be Cautious of Platform Dependency ware development [2].
Context: Games often come with a set of dependencies. Dif- Example: Consider a game where graphics and animation
ferent platforms and versions might be required to execute in games are active even after game over. This causes unnec-
the game. Often the installation process of a game takes essary power consumption.
more time than expected due to version problem, error in Implications: Optimization of energy has been focused by
Makefile, and other reasons. researchers [2, 12], however there is need to further explore
Problem: If the platform dependencies are not stated explic- energy consumption in the context of games more deeply.
itly, it may cause faulty installation and demotivate users. R can emphasize on the possible ways on how game can be
Solution: Documentation of the game dependencies must more interactive with optimized power consumption. Fur-
be provided to end-users to ensure hassle-free game play. ther, practitioners and open-source developers P/D should
Example: Consider a game running smoothly on a Win- follow good practices to reduce the power usage of their of
dows laptop, but not on Mac PC. Further, the developers did games.
not provide any information about the same. Another exam- (9) Provide Offline-Support
ple can be related to the processor requirement of games. All Context: Many games these days avoid the hassle of down-
the requirements and dependencies should be documented loading the game and then installing it. They make the game
beforehand so that it does not effect the gaming experience browser-based so that the user can directly play the game
A Catalogue of Game-Specific Anti-Patterns ISEC 2022, February 24–26, 2022, Gandhinagar, India

Figure 5: Screenshot of a commit done by developer to rectify the memory leak problem caused by usage of null pointer in
game Colobot.

Table 3: Themes identified during Thematic Analysis (n = number of occurrences in the dataset)

Themes Example Ref


1. Beware of Vague Inheritance from Game “Chess.js library returns a location string with only a number Link
Engines/Frameworks and causes the player to be locked with the piece,not letting them
(n=65) move it at all. This code checks if the string is the correct
length before allowing it in hideMoves and showMoves to prevent
the error from being thrown ,as it runs just fine so
long as that faulty object is excluded."
2. Avoid Unwanted Movement of Game Objects “Fix automovement toggling on “joystick used" flag." Link
(n=63)
3. Ensure Balance between Game “When holding down a key, the keyboard Link
Controls and Functionality buffer fills, causing the associated behavior
(n=191) to continue afterward for some time."
4. Avoid Wrong Logic/Invalid Moves “put everything inside a function also fix Link
(n=200) bug when AI is making invalid move"
5. Avoid User Interface Glitch “Drag tool makes graphic glitchy. Whenever I use the frag tool, Link
(n=403) I think the game lags and the graphics becomes glitchy."
6. Be Cautious of Platform Dependency “Hi, I use a Samsung S4 to try the game and you can see Link
(n=252) from the screenshot below that the Unicode characters for the
left button and the right button are not showed."
7. Avoid Memory Leaks “Looking at Chrome’s task manager, memory for the tab grows Link
(n=53) by up to 180k per second. This is unacceptable for
an idle/incremental game."
8. Avoid Energy Extensive Components “game over was executing even after game over - no need really. Link
(n=7) lets save memory power"
9. Provide Offline-Support “As mentioned in issue #24, having a cache manifest will enable Link
(n=6) the game to work offline, especially useful for mobile devices."
10. Ensure Game Security “Usernames with spaces fail to authenticate." Link
(n=9)

without any prerequisite. facilitating its users to save the state of the game when there
Problem: Sometimes users get disconnected from the inter- are connection issues.
net in the middle of the game because of which they may Implications: Offline Support is the functionality that should
lose access to the game. be considered by developers P/D in the case of browser-based
Solution: Provide offline support for the game, so that peo- games for better acceptance across players’ community.
ple can save their game to the home screen, and play offline. (10) Ensure Game Security
Example: 2048 is a browser-based game with offline support, Context: Security plays an important role in gameplay to
ISEC 2022, February 24–26, 2022, Gandhinagar, India Vartika Agrahari, Sridhar Chimalakonda

protect a user’s identity and his/her game achievements. It games for this study. There is a wide scope of inclusion of games
ensures that untrusted clients do not intrude into the game. from other platforms as well, such as Android, iOS etc.
It also ensures that players do not take unfair advantage in
the game by doing wrong practices to win, such as cheat
codes, compromised environment, and so on [55]. 5 DISCUSSION
Problem: Untrusted players can become a threat to the se- In this paper, we attempted to present a catalogue of ten game-
curity of the game. Unethical means of achieving the target specific anti-patterns obtained through the process of thematic
in gameplay may downgrade the game. analysis. We believe that this catalogue might help developers in
Solution: Following all the heuristics related to security is- minimizing the bad practices during game development. Although
sues in games [55] is key solution to this anti-pattern. some of the anti-patterns we discussed are available in the litera-
Example: Consider an RPG (Role Playing Game), where the ture, but in the context of games, we present this catalogue with
user makes improper usage of cheat codes to achieve the the intention of aggregating all anti-patterns at one place. While
target. we understand that there are a few broad categories in our cata-
Implications: Developers P/D should ensure that there is a logue, we kept it wide, as they are already discussed in detail in the
proper channel of authentication for players that checks for literature.
insecure passwords, multiple logins, sniffed passwords, and We believe that this catalogue can be used as a guide for game
so on. They should check for loopholes that can compromise developers to avoid the listed anti-patterns during game develop-
the security of game. ment. Although this catalogue can be useful for all game developers,
but it could be more beneficial for open-source game developers as
they lack guidance about the practices they should avoid during
the development of the game. Whereas, the paid and commercial
4 THREATS TO VALIDITY games have development teams to focus on different modules of
Here, we discuss the potential threats to our research study, and game development. Yet, we feel, economical and paid game devel-
how far we can generalize the catalogue. We performed regular opers can also benefit themselves by following the catalogue of
expression based search to find the issues, commits, and pull requests anti-patterns and avoiding the mistakes by carefully taking appro-
that may contain anti-pattern. Although it covers the majority of priate action. We also see that researchers and practitioners can
the text data, however, there is the possibility of missing some use the dataset and catalogue for further empirical studies. Beyond
relevant text data. We considered the English language primarily, this study, there is a need to explore anti-patterns and bad practices
assuming it is the most commonly spoken language among devel- in depth to strengthen the dataset and catalogue.
oper communities. Also, while manual filtering, we tried our best to
delete all cases of false positives; however, the possibility of having
a few more false positives in our dataset cannot be denied. 6 RELATED WORK
We mined the dataset from GitHub, believing that it is the pre- Game development has gained a fair amount of attention from
ferred open-source platform for developer communities; still, it may researchers since the past decade or so. Although games are a kind
be the case that we did not cover all possible game-specific anti- of software, nowadays they acquire distinctive discussion from the
patterns. Likewise, we chose commits, issues, and pull requests from research point of view [36, 54]. Possible reasons for the difference
GitHub to analyze the commonly occurring anti-patterns faced in game development with that to the traditional software develop-
by end-users and developers. Nonetheless, there is a possibility ment is in the context of various performance and real-time factors
that other methodologies could have resulted in different set of being involved, such as memory allocation and de-allocation issues,
game-specific anti-patterns. Moreover, we considered the default rendering process, and graphical components [27, 37, 42]. As an
branch of repositories while dataset mining as other branches are instance, Murphy et al. [36] conducted a survey study with the
not validated by the development team, and we are not confident game and non-game developers to find the substantial differences
about their quality. Thus, the discussions made in other branches between the two, and found that the video game developers require
of projects are not considered in this study. a more creative mind, good knowledge of maths, and performance
To the best of our efforts, we obtain the catalogue by in-depth tuning in comparison to non-game developers. Similarly, Pascarella
analysis and believe that it is factual. But, since it involved manual et al. [39] studied 60 open-source projects to differentiate between
interpretation also, it can be inaccurate and incomplete. Also, we games and non-games and analyzed that project organization, devel-
have done thematic analysis on a dataset of 1185 records. Thus, opers skills, automated testing, code reuse, and many other aspects
there is a possibility that considering a more extensive dataset differ in both the domains. In a preliminary work, Khanve [28] has
would result in some more themes. shown that the code-specific bad practices or code smells in games
We considered popular desktop games (native and browser-based) can be different from those of code smells in other software by
in our dataset. We focused on popular open-source games for study. manually analyzing the violation of game programming patterns in
However, commercial and paid games may have different anti- eight JavaScript games and concluded that games need to be han-
patterns than the one we got. We tried to cover different genres in dled separately in terms of code smells. Lin et al. [34] performed an
various languages for open-source games, but there is a possibility empirical study on game reviews of 6224 games on Steam platform,
of getting different set of anti-patterns with the increased dataset and found that the game reviews are different from the mobile
having more variation. We primarily analyzed desktop and browser app reviews.They emphasized that the amount of time users play a
A Catalogue of Game-Specific Anti-Patterns ISEC 2022, February 24–26, 2022, Gandhinagar, India

game before posting their review is a unique characteristic and can 7 CONCLUSION AND FUTURE WORK
play a major role in future research studies for games. We proposed a catalogue of ten anti-patterns in the context of
Considering the importance of the game development process games using a dataset of commits, issues, and pull requests from
over conventional software development, researchers made at- 100 popular open-source games available on GitHub. We analyzed
tempts to study the problems in the game industry [22, 44]. Petrillo the textual data in the dataset, performed thematic analysis and
et al. [41] proposed four main categories for issues related to com- presented the catalogue of game-specific anti-patterns. Among the
puter games development by analyzing game postmortems: Sched- list of proposed anti-patterns, Avoid User Interface Glitch is the
ule Problems, Budget Problems, Quality Problems, Management Prob- most frequent anti-pattern followed by Be Cautious of Platform
lems, and Business related problems. Yan et al. [55] emphasized the Dependency. To the best of our knowledge, this is the foundational
security concerns in games such as cheating practices used by play- and first catalogue proposed in the context of games based on the
ers by means of exploiting the source code, lack of secrecy, lack dataset of commits, issues, and pull requests of GitHub open-source
of authentication, and many other factors. A dataset is created on game repositories. Since the catalogue proposed is prevailing in
utilizing postmortem reports by developers which contains the the context of games, it can help game developers make informed
software problems faced by them [43] . In a recent study, Borrelli et decisions towards improving quality of games during development.
al. proposed a set of game-specific bad smells in Unity Projects [8]. We see this work as a first step towards further empirical research
Along with the game-related problems, researchers also pro- in the largely unexplored domain of games. We plan to extend this
posed solutions to a few of these problems. Varvaressos et al. [52] research work by extending the catalogue of anti-patterns, and
proposed automated runtime bug finding for video games based on deep diving into game-specific code smells. We also plan to explore
game loop. They experimented on six real-world games and tracked automatic and semi-automatic approaches and tools for detection of
their bugs based on the games’ bug database. Researchers propose game-specific anti-patterns and code smells specifically leveraging
various heuristics and measures to analyze the usability and friendly advances in Artificial Intelligence, Machine Learning and Natural
user interface of games [31]. In a recent survey of participants of Language Processing. We further plan to revisit this study using
Global Game Jam (GGJ), a 48-hour hackathon, researchers study a dataset containing the source code of games. Also, we wish to
the effects of time pressure over the quality of games [6]. They extend the catalogue to a broader scope by including games of
concluded that GGJ teams rely on an ad hoc approach to develop different genres, such as Android, iOS, and many more. Further,
and teams share contextual similarities to software startups. to measure the magnitude of this catalogue work, we intend to
The common factors among all the above studies are about their conduct an empirical study to analyze the benefits gained by game
dataset, based on which they proposed their research work. They developers.
did analysis based on the data of source code of projects, post-
mortem reports, survey data, and so on. But, to the best of our ACKNOWLEDGMENTS
knowledge, we are not aware of any study done to investigate
We would like to thank Ashish Kumar for his contribution to the
games by utilizing GitHub data such as commits, pull requests, and
process of thematic analysis and illustrations of the game-specific
issues. GitHub is a vast source of information that should be con-
anti-patterns.
sidered to gain a better understanding of problems faced by the
end-users during gameplay. There exist a number of empirical
studies on GitHub data to analyze the various fields of software REFERENCES
[1] Mouna Abidi, Foutse Khomh, and Yann-Gaël Guéhéneuc. 2019. Anti-patterns
engineering, such as release engineering [25], code quality [45], for multi-language systems. In Proceedings of the 24th European Conference on
software evolution [48], and so on. Researchers also studied the Pattern Languages of Programs. 1–14.
emotions of developers on GitHub [21], recommender for pull re- [2] Nadine Amsel, Zaid Ibrahim, Amir Malik, and Bill Tomlinson. 2011. Toward
sustainable software engineering: NIER track. In 2011 33rd international conference
quests [56], whereabouts of forks in a GitHub repository [23], and on software engineering (ICSE). IEEE, 976–979.
many more. But, our work is unique based on the insights we get [3] Craig A Anderson and Brad J Bushman. 2001. Effects of violent video games
from our dataset, which has not been studied so far in the context on aggressive behavior, aggressive cognition, aggressive affect, physiological
arousal, and prosocial behavior: A meta-analytic review of the scientific literature.
of games. Existing literature consists of studies on code quality, Psychological science 12, 5 (2001), 353–359.
code smells, and anti-patterns in different backgrounds, but in the [4] Lingfeng Bao, David Lo, Xin Xia, Xinyu Wang, and Cong Tian. 2016. How
Android App Developers Manage Power Consumption?-An Empirical Study by
context of games, it is overlooked. There are numerous catalogues Mining Power Management Commits. In 2016 IEEE/ACM 13th Working Conference
proposed in the background of anti-patterns but in different do- on Mining Software Repositories (MSR). IEEE, 37–48.
mains such as architecture, energy-efficiency, and so on [11, 13]. [5] Staffan Björk and Jussi Holopainen. 2006. Games and design patterns. The game
design reader (2006), 410–437.
Cruz et al. [12] analyzed energy patterns for mobile applications [6] Markus Borg, Vahid Garousi, Anas Mahmoud, Thomas Olsson, and Oskar Stalberg.
and resulted in 22 design patterns related to energy efficiency. A 2019. Video Game Development in a Rush: A Survey of the Global Game Jam
catalogue is proposed on four architectural smells along with their Participants. IEEE Transactions on Games (2019).
[7] Hudson Borges and Marco Tulio Valente. 2018. What’s in a GitHub star? un-
example and impact on code quality [18]. Carvalho et al. curated derstanding repository starring practices in a social coding platform. Journal of
a catalogue of 20 code smells prevalent in the presentation layer Systems and Software 146 (2018), 112–129.
[8] Antonio Borrelli, Vittoria Nardone, Giuseppe A Di Lucca, Gerardo Canfora, and
of android apps followed by a detection tool [11]. Thus, to the best Massimiliano Di Penta. 2020. Detecting Video Game-Specific Bad Smells in Unity
of our knowledge, we are not aware of any catalogue, or listings Projects. In Proceedings of the 17th International Conference on Mining Software
that categorize the bad practices and anti-patterns in open-source Repositories. 198–208.
[9] William H Brown, Raphael C Malveau, Hays W McCormick, and Thomas J
games from the perspective of developers/users by utilizing the Mowbray. 1998. AntiPatterns: refactoring software, architectures, and projects in
GitHub data. crisis. John Wiley & Sons, Inc.
ISEC 2022, February 24–26, 2022, Gandhinagar, India Vartika Agrahari, Sridhar Chimalakonda

[10] Eugenio Capra, Chiara Francalanci, and Sandra A Slaughter. 2012. Is software 1 (2019), 170–207.
“green”? Application development environments and energy efficiency in open [35] Tao Lin, Xue Fu, Fu Chen, and Luqun Li. 2021. A Novel Approach for Code Smells
source applications. Information and Software Technology 54, 1 (2012), 60–71. Detection Based on Deep Leaning. In EAI International Conference on Applied
[11] Suelen Goularte Carvalho, Maurício Aniche, Júlio Veríssimo, Rafael S Durelli, Cryptography in Computer and Communications. Springer, 171–174.
and Marco Aurélio Gerosa. 2019. An empirical catalog of code smells for the [36] Emerson Murphy-Hill, Thomas Zimmermann, and Nachiappan Nagappan. 2014.
presentation layer of Android apps. Empirical Software Engineering 24, 6 (2019), Cowboys, ankle sprains, and keepers of quality: How is video game development
3546–3586. different from software development?. In Proceedings of the 36th International
[12] Luis Cruz and Rui Abreu. 2019. Catalog of energy patterns for mobile applications. Conference on Software Engineering. ACM, 1–11.
Empirical Software Engineering (2019), 1–27. [37] Robert Nystrom. 2014. Game programming patterns. Genever Benning.
[13] Stefano Dalla Palma, Dario Di Nucci, Fabio Palomba, and Damian Andrew Tam- [38] Fabio Palomba, Andrea De Lucia, Gabriele Bavota, and Rocco Oliveto. 2014.
burri. 2020. Towards a catalogue of software quality metrics for infrastructure Anti-pattern detection: Methods, challenges, and open issues. In Advances in
code. Journal of Systems and Software (2020), 110726. Computers. Vol. 95. Elsevier, 201–238.
[14] Henrik Edholm, Mikaela Lidström, Jan-Philipp Steghöfer, and Håkan Burden. [39] Luca Pascarella, Fabio Palomba, Massimiliano Di Penta, and Alberto Bacchelli.
2017. Crunch time: The reasons and effects of unpaid overtime in the games 2018. How is video game development different from software development in
industry. In 2017 IEEE/ACM 39th International Conference on Software Engineering: open source?. In 2018 IEEE/ACM 15th International Conference on Mining Software
Software Engineering in Practice Track (ICSE-SEIP). IEEE, 43–52. Repositories (MSR). IEEE, 392–402.
[15] Amin Milani Fard and Ali Mesbah. 2013. Jsnose: Detecting javascript code smells. [40] Kai Petersen, Robert Feldt, Shahid Mujtaba, and Michael Mattsson. 2008. System-
In 2013 IEEE 13th International Working Conference on Source Code Analysis and atic mapping studies in software engineering. In 12th International Conference on
Manipulation (SCAM). IEEE, 116–125. Evaluation and Assessment in Software Engineering (EASE) 12. 1–10.
[16] Jennifer Fereday and Eimear Muir-Cochrane. 2006. Demonstrating rigor using [41] Fábio Petrillo, Marcelo Pimenta, Francisco Trindade, and Carlos Dietrich. 2008.
thematic analysis: A hybrid approach of inductive and deductive coding and Houston, we have a problem... a survey of actual problems in computer games
theme development. International journal of qualitative methods 5, 1 (2006), development. In Proceedings of the 2008 ACM symposium on Applied computing.
80–92. 707–711.
[17] Martin Fowler. 1997. Refactoring: Improving the design of existing code. In 11th [42] Cristiano Politowski, Lisandra Fontoura, Fabio Petrillo, and Yann-Gaël
European Conference. Jyväskylä, Finland. Guéhéneuc. 2016. Are the old days gone? A survey on actual software en-
[18] Joshua Garcia, Daniel Popescu, George Edwards, and Nenad Medvidovic. 2009. gineering processes in video game industry. In Proceedings of the 5th International
Toward a catalogue of architectural bad smells. In International Conference on the Workshop on Games and Software Engineering. 22–28.
Quality of Software Architectures. Springer, 146–162. [43] Cristiano Politowski, Fabio Petrillo, Gabriel Cavalheiro Ullmann, Josias de An-
[19] Hans W Giessen. 2015. Serious games effects: an overview. Procedia-Social and drade Werly, and Yann-Gaël Guéhéneuc. 2020. Dataset of Video Game Devel-
Behavioral Sciences 174 (2015), 2240–2244. opment Problems. In Proceedings of the 17th International Conference on Mining
[20] Peggy Gregory, Leonor Barroca, Katie Taylor, Dina Salah, and Helen Sharp. 2015. Software Repositories. 553–557.
Agile challenges in practice: a thematic analysis. In International Conference on [44] Cristiano Politowski, Fabio Petrillo, Gabriel C Ullmann, and Yann-Gaël
Agile Software Development. Springer, 64–80. Guéhéneuc. 2021. Game industry problems: An extensive analysis of the gray
[21] Syed Fatiul Huq, Ali Zafar Sadiq, and Kazi Sakib. 2020. Is Developer Sentiment literature. Information and Software Technology (2021), 106538.
Related to Software Bugs: An Exploratory Study on GitHub Commits. In 2020 IEEE [45] Baishakhi Ray, Daryl Posnett, Vladimir Filkov, and Premkumar Devanbu. 2014.
27th International Conference on Software Analysis, Evolution and Reengineering A large scale study of programming languages and code quality in github. In
(SANER). IEEE, 527–531. Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of
[22] João Tiago Pinheiro Neto Jacob and António Fernando Coelho. 2011. Issues in Software Engineering. ACM, 155–165.
the development of location-based games. International Journal of Computer [46] Abhishek Sharma, Ferdian Thung, Pavneet Singh Kochhar, Agus Sulistya, and
Games Technology 2011 (2011). David Lo. 2017. Cataloging github repositories. In Proceedings of the 21st In-
[23] Jing Jiang, David Lo, Jiahuan He, Xin Xia, Pavneet Singh Kochhar, and Li Zhang. ternational Conference on Evaluation and Assessment in Software Engineering.
2017. Why and how developers fork what from whom in GitHub. Empirical 314–319.
Software Engineering 22, 1 (2017), 547–578. [47] Yen-Ru Shi and Ju-Ling Shih. 2015. Game factors and game-based learning design
[24] Daniel Johnson and Janet Wiles. 2003. Effective affective user interface design in model. International Journal of Computer Games Technology 2015 (2015).
games. Ergonomics 46, 13-14 (2003), 1332–1345. [48] Danilo Silva, Nikolaos Tsantalis, and Marco Tulio Valente. 2016. Why we refactor?
[25] Saket Dattatray Joshi and Sridhar Chimalakonda. 2019. RapidRelease-A Dataset confessions of github contributors. In Proceedings of the 2016 24th ACM SIGSOFT
of Projects and Issues on Github with Rapid Releases. In 2019 IEEE/ACM 16th International Symposium on Foundations of Software Engineering. 858–870.
International Conference on Mining Software Repositories (MSR). IEEE, 587–591. [49] Marion Lara Tan, Raj Prasanna, Kristin Stock, Emma EH Doyle, Graham Leonard,
[26] Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe, Leif Singer, Daniel M and David Johnston. 2020. Modified usability framework for disaster apps: a
German, and Daniela Damian. 2014. The promises and perils of mining GitHub. qualitative thematic analysis of user reviews. International Journal of Disaster
In Proceedings of the 11th working conference on mining software repositories. ACM, Risk Science 11 (2020), 615–629.
92–101. [50] Miguel A Teruel, Elena Navarro, Pascual González, Víctor López-Jaquero, and
[27] Christopher M Kanode and Hisham M Haddad. 2009. Software engineering chal- Francisco Montero. 2016. Applying thematic analysis to define an awareness
lenges in game development. In 2009 Sixth International Conference on Information interpretation for collaborative computer games. Information and Software Tech-
Technology: New Generations. IEEE, 260–265. nology 74 (2016), 17–44.
[28] Vaishali Khanve. 2019. Are existing code smells relevant in web games? an [51] Michael Thielscher. 2010. A general game description language for incomplete
empirical study. In Proceedings of the 2019 27th ACM Joint Meeting on European information games. In Twenty-Fourth AAAI Conference on Artificial Intelligence.
Software Engineering Conference and Symposium on the Foundations of Software [52] Simon Varvaressos, Kim Lavoie, Sébastien Gaboury, and Sylvain Hallé. 2017.
Engineering. ACM, 1241–1243. Automated bug finding in video games: A case study for runtime monitoring.
[29] Barbara A Kitchenham, Shari Lawrence Pfleeger, Lesley M Pickard, Peter W Jones, Computers in Entertainment (CIE) 15, 1 (2017), 1–28.
David C. Hoaglin, Khaled El Emam, and Jarrett Rosenberg. 2002. Preliminary [53] Akhila Sri Manasa Venigalla and Sridhar Chimalakonda. N.D.. Understanding
guidelines for empirical research in software engineering. IEEE Transactions on Emotions of Developer Community Towards Software Documentation. (N.D.).
software engineering 28, 8 (2002), 721–734. To Appear in Proceedings of the ACM/IEEE 42nd International Conference on
[30] Michael Klug and James P Bagrow. 2016. Understanding the group dynamics and Software Engineering: Software Engineering in Society.
success of teams. Royal Society open science 3, 4 (2016), 160007. [54] David Wesley and Gloria Barczak. 2016. Innovation and marketing in the video
[31] Hannu Korhonen and Elina MI Koivisto. 2006. Playability heuristics for mobile game industry: avoiding the performance trap. Routledge.
games. In Proceedings of the 8th conference on Human-computer interaction with [55] Jianxin Jeff Yan and Hyun-Jin Choi. 2002. Security issues in online games. The
mobile devices and services. 9–16. Electronic Library (2002).
[32] Kwan Min Lee and Wei Peng. 2006. What do we know about social and psycholog- [56] Yue Yu, Huaimin Wang, Gang Yin, and Charles X Ling. 2014. Reviewer rec-
ical effects of computer games? A comprehensive review of the current literature. ommender of pull-requests in github. In 2014 IEEE International Conference on
Playing video games: Motives, responses, and consequences (2006), 327–345. Software Maintenance and Evolution. IEEE, 609–612.
[33] Michael Lewis and Jeffrey Jacobson. 2002. Game engines. Commun. ACM 45, 1 [57] Yun Zhang, David Lo, Pavneet Singh Kochhar, Xin Xia, Quanlai Li, and Jianling
(2002), 27. Sun. 2017. Detecting similar repositories on GitHub. In 2017 IEEE 24th Inter-
[34] Dayi Lin, Cor-Paul Bezemer, Ying Zou, and Ahmed E Hassan. 2019. An empirical national Conference on Software Analysis, Evolution and Reengineering (SANER).
study of game reviews on the Steam platform. Empirical Software Engineering 24, IEEE, 13–23.

You might also like