Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3379597.3387454acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Detecting Video Game-Specific Bad Smells in Unity Projects

Published: 18 September 2020 Publication History

Abstract

The growth of the video game market, the large proportion of games targeting mobile devices or streaming services, and the increasing complexity of video games trigger the availability of video game-specific tools to assess performance and maintainability problems. This paper proposes UnityLinter, a static analysis tool that supports Unity video game developers to detect seven types of bad smells we have identified as relevant in video game development. Such smell types pertain to performance, maintainability and incorrect behavior problems. After having defined the smells by analyzing the existing literature and discussion forums, we have assessed their relevance with a survey involving 68 participants. Then, we have analyzed the occurrence of the studied smells in 100 open-source Unity projects, and also assessed UnityLinter's accuracy. Results of our empirical investigation indicate that developers well-received performance- and behavior-related issues, while some maintainability issues are more controversial. UnityLinter is, in general, accurate enough in detecting smells (86%-100% precision and 50%-100% recall), and our study shows that the studied smell types occur in 39%-97% of the analyzed projects.

References

[1]
[n. d.]. A Ruby static code analyzer and formatter. https://github.com/rubocop-hq/rubocop (Last access: 01/01/2020). ([n. d.]).
[2]
[n. d.]. Android Lint. https://developer.android.com/studio/write/lint (Last access: 01/01/2020). ([n. d.]).
[3]
[n. d.]. Blender. http://unity3d.com/unity/ (Last access: 01/01/2020). ([n. d.]).
[4]
[n. d.]. CheckStyle. http://checkstyle.sourceforge.net/ (Last access: 01/01/2020). ([n.d.]).
[5]
[n. d.]. FindBugs. http://findbugs.sourceforge.net/ (Last access: 01/01/2020). ([n. d.]).
[6]
[n. d.]. Performance recommendations for Unity https://docs.microsoft.com/en-us/windows/mixed-reality/performance-recommendations-for-unity (Last access: 01/01/2020). ([n. d.]).
[7]
[n. d.]. PMD. https://pmd.github.io/ (Last access: 01/01/2020). ([n. d.]).
[8]
[n. d.]. Rider for Unity. https://www.jetbrains.com/dotnet/promo/unity/ (Last access: 01/01/2020). ([n. d.]).
[9]
[n. d.]. Unity - Introducing the new Input System. https://blogs.unity3d.com/2019/10/14/introducing-the-new-input-system/ (Last access: 01/01/2020). ([n. d.]).
[10]
[n. d.]. Unity. http://unity3d.com/unity/ (Last access: 01/01/2020). ([n. d.]).
[11]
[n. d.]. Unreal Engine. https://www.unrealengine.com/en-US/ (Last access: 01/01/2020). ([n. d.]).
[12]
Miltiadis Allamanis, Earl T. Barr, Christian Bird, and Charles A. Sutton. 2015. Suggesting accurate method and class names. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, Bergamo, Italy, August 30 - September 4, 2015. 38--49.
[13]
Hakam W Alomari, Michael L Collard, Jonathan I Maletic, Nouh Alhindawi, and Omar Meqdadi. 2014. srcSlice: very efficient and scalable forward static slicing. Journal of Software: Evolution and Process 26, 11 (2014), 931--961.
[14]
Apostolos Ampatzoglou and Alexander Chatzigeorgiou. 2007. Evaluation of object-oriented design patterns in game development Department of Applied Informatics. Information and Software Technology, vol. 49, pp, 445--454 (2007).
[15]
A. Ampatzoglou, A. Kritikos, E. M. Arvanitou, A. Gortzis, F. Chatziasimidis, and I. Stamelos. 2011. An Empirical Investigation on the Impact of Design Pattern Application on Computer Game Defects. In Proceedings of 15th International Academic MindTrek Conference: Envisioning Future Media Environments, MindTrek 2011, Tampere, Finland, 2011).
[16]
Rose D. Baker. 1995. Modern permutation test software. In Randomization Tests. Marcel Decker.
[17]
Nahla H. Barakat. 2019. A Framework for integrating software design patterns with game design framework. In Proceedings the 2019 8th International Conference on Software and Information Engineering, ICSIE 2019, Cairo, Egypt, April 09-12, 2019.
[18]
Moritz Beller, Radjino Bholanath, Shane McIntosh, and Andy Zaidman. 2016. Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Source Software. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), Vol. 1. IEEE, 470--481.
[19]
Antonio Borrelli, Vittoria Nardone, Giuseppe Di Lucca, Gerardo Canfora, and Massimiliano Di Penta. 2020. Detecting Video Game-Specific Bad Smells in Unity Projects - Dataset https://tinyurl.com/UnitySmells https://tinyurl.com/UnitySmells,. (2020).
[20]
J Cohen. 1960. A coefficient of agreement for nominal scales. Educ Psychol Meas. (1960).
[21]
Michael L. Collard, Huzefa H. Kagdi, and Jonathan I. Maletic. 2003. An XML-Based Lightweight C++ Fact Extractor. In 11th International Workshop on Program Comprehension (IWPC 2003), May 10-11, 2003, Portland, Oregon, USA. 134--143.
[22]
David E. Evans. 1996. Static Detection of Dynamic Memory Errors. In Proceedings of the ACM SIGPLAN'96 Conference on Programming Language Design and Implementation (PLDI), Philadephia, Pennsylvania, USA, May 21-24, 1996. 44--53. https://doi.org/10.1145/231379.231389
[23]
Roberto Tenorio Figueiredo and Geber Lisboa Ramalho. 2016. GOF design patterns applied to the Development of Digital Games. In Proceedings of SBGames 2015, November 11th - 13th, 2015, Teresina, Brazil.
[24]
Forbes. [n. d.]. The Business Of Video Games: Market Share For Gaming Platforms in 2019. https://www.forbes.com/sites/kevinanderton/2019/06/26/the-business-of-video-games-market-share- for-gaming-platforms-in-2019-infographic/#66ce258b7b25 (Last access: 01/01/2020). ([n. d.]).
[25]
GameIndustry.biz. [n. d.]. Global games market value rising to $134.9bn in 2018. https://www.gamesindustry.biz/articles/2018-12-18-global-games-market-value-rose-to-usd134-9bn-in-2018 (Last access: 01/01/2020). ([n. d.]).
[26]
E. Gamma, R. Helm, R.Johnson, and J. Vlissides. 1995. Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley.
[27]
Brittany Johnson, Yoonki Song, Emerson Murphy-Hill, and Robert Bowdidge. 2013. Why don't software developers use static analysis tools to find bugs?. In Software Engineering (ICSE), 2013 35th International Conference on. IEEE.
[28]
S. C. Johnson. 1978. Lint, a C Program Checker. In Comp. Sci. Tech. Rep. 78--1273.
[29]
Xeni-Christina Kounoukla, Apostolos Ampatzoglou, and Konstantinos Anagnostopoulos. 2016. Implementing Game Mechanics with GoF Design Patterns. In Proceedings of the 20th Pan-Hellenic Conference on Informatics, PCI-16, Patras, Greece, Nov. 10-12, 2016, ACM, New York, NY, USA.
[30]
Robert S Laramee. 2011. Bob's Concise Introduction to Doxygen. Technical Report. Technical report, The Visual and Interactive Computing Group, Computer.
[31]
Surafel Lemma Abebe and Paolo Tonella. 2013. Automated Identifier Completion and Replacement. In 17th European Conference on Software Maintenance and Reengineering, CSMR 2013, Genova, Italy, March 5-8, 2013. 263--272.
[32]
Chris Lewis, Jim Whitehead, and Noah Wardrip-Fruin. 2010. What went wrong: a taxonomy of video game bugs. In Proceedings of the fifth international conference on the foundations of digital games. ACM, 108--115.
[33]
Dayi Lin, Cor-Paul Bezemer, and Ahmed E. Hassan. 2017. Studying the urgent updates of popular games on the Steam platform. Empirical Software Engineering 22, 4 (2017), 2095--2126.
[34]
Dayi Lin, Cor-Paul Bezemer, and Ahmed E. Hassan. 2018. An empirical study of early access games on the Steam platform. Empirical Software Engineering 23, 2 (2018), 771--799.
[35]
Dayi Lin, Cor-Paul Bezemer, Ying Zou, and Ahmed E. Hassan. 2019. An empirical study of game reviews on the Steam platform. Empirical Software Engineering 24, 1 (2019), 170--207.
[36]
Andrian Marcus, Denys Poshyvanyk, and Rudolf Ferenc. 2008. Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems. IEEE Trans. Software Eng. 34, 2 (2008), 287--300.
[37]
Emerson Murphy-Hill, Thomas Zimmermann, and Nachiappan Nagappan. 2014. Cowboys, ankle sprains, and keepers of quality: How is video game development different from software development?. In Proceedings of the 36th International Conference on Software Engineering. ACM, 1--11.
[38]
Jeff W. Murray. 2014. C# Game Programming Cookbook for Unity 3D. CRC Press, New York.
[39]
Christian D Newman, Tessandra Sage, Michael L Collard, Hakam W Alomari, and Jonathan I Maletic. 2016. srcSlice: a tool for efficient static forward slicing. In 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C). IEEE, 621--624.
[40]
R Nystrom. 2014. Game Programming Patterns (1st edition ed.). Lightning Source Inc.
[41]
A. N. Oppenheim. 1992. Questionnaire Design, Interviewing and Attitude Measurement. Pinter Publishers.
[42]
Luca Pascarella, Fabio Palomba, Massimiliano Di Penta, and Alberto Bacchelli. 2018. How is video game development different from software development in open source?. In Proceedings of the 15th International Conference on Mining Software Repositories, MSR 2018, Gothenburg, Sweden, May 28-29, 2018. 392--402.
[43]
Fábio Petrillo, Marcelo Soares Pimenta, Francisco M. Trindade, and Carlos Dietrich. 2009. What went wrong? A survey of problems in game development. Computers in Entertainment 7, 1 (2009), 13:1-13:22.
[44]
Junfeng Qu, Yinglei Song, and Yong Wei. 2013. Applying Design Patterns in Game Programming. In Proceedings of The International Conference on Software Engineering Research and Practice 2013, (SERP2013), CSREA Press.
[45]
Jaime Spacco, David Hovemeyer, and William Pugh. 2006. Tracking defect warnings across versions. In Proceedings of the 2006 international workshop on Mining software repositories. ACM, 133--136.
[46]
Patrick Stacey and Joe Nandhakumar. 2009. A temporal perspective of the computer game development process. Information Systems Journal 19, 5 (2009), 479--497.
[47]
Mario Linares Vásquez, Gabriele Bavota, Carlos Bernal-Cárdenas, Rocco Oliveto, Massimiliano Di Penta, and Denys Poshyvanyk. 2014. Mining energy-greedy API usage patterns in Android apps: an empirical study. In 11th Working Conference on Mining Software Repositories, MSR 2014, Proceedings, May 31 - June 1, 2014, Hyderabad, India. ACM, 2--11.
[48]
Fadi Wedyan, Dalal Alrmuny, and James M Bieman. 2009. The effectiveness of automated static analysis tools for fault detection and refactoring prediction. In 2009 International Conference on Software Testing Verification and Validation. IEEE, 141--150.
[49]
Fiorella Zampetti, Simone Scalabrino, Rocco Oliveto, Gerardo Canfora, and Massimiliano Di Penta. 2017. How open source projects use static code analysis tools in continuous integration pipelines. In Proceedings of the 14th International Conference on Mining Software Repositories, MSR 2017, Buenos Aires, Argentina, May 20-28, 2017. 334--344.
[50]
Jiang Zheng, Laurie Williams, Nachiappan Nagappan, Will Snipes, John P Hudepohl, and Mladen A Vouk. 2006. On the value of static analysis for fault detection in software. IEEE transactions on software engineering 32, 4 (2006), 240--253.

Cited By

View all
  • (2024)Game Development as Project-Based Learning: Synthesizing Postmortems of Student-Created Mobile GamesProceedings of the 19th International Conference on the Foundations of Digital Games10.1145/3649921.3649999(1-11)Online publication date: 21-May-2024
  • (2024)API Governance at ScaleProceedings of the 46th International Conference on Software Engineering: Software Engineering in Practice10.1145/3639477.3639713(430-440)Online publication date: 14-Apr-2024
  • (2024)Design smells in multi-language systems and bug-proneness: a survival analysisEmpirical Software Engineering10.1007/s10664-024-10476-229:5Online publication date: 3-Jul-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
MSR '20: Proceedings of the 17th International Conference on Mining Software Repositories
June 2020
675 pages
ISBN:9781450375177
DOI:10.1145/3379597
Permission to make digital or hard copies of all or part of this work for personal or 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 on the first page. Copyrights for components of this work owned by others than ACM 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 fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 September 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Bad Smells
  2. Linters
  3. Static Analysis
  4. Video Game Development

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

MSR '20
Sponsor:

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)81
  • Downloads (Last 6 weeks)15
Reflects downloads up to 18 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Game Development as Project-Based Learning: Synthesizing Postmortems of Student-Created Mobile GamesProceedings of the 19th International Conference on the Foundations of Digital Games10.1145/3649921.3649999(1-11)Online publication date: 21-May-2024
  • (2024)API Governance at ScaleProceedings of the 46th International Conference on Software Engineering: Software Engineering in Practice10.1145/3639477.3639713(430-440)Online publication date: 14-Apr-2024
  • (2024)Design smells in multi-language systems and bug-proneness: a survival analysisEmpirical Software Engineering10.1007/s10664-024-10476-229:5Online publication date: 3-Jul-2024
  • (2023)Video Game Bad Smells: What They Are and How Developers Perceive ThemACM Transactions on Software Engineering and Methodology10.1145/356321432:4(1-35)Online publication date: 26-May-2023
  • (2023)CLEAN++: Code Smells Extraction for C++2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)10.1109/MSR59073.2023.00066(441-445)Online publication date: May-2023
  • (2023)GIRT-Data: Sampling GitHub Issue Report Templates2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)10.1109/MSR59073.2023.00026(104-108)Online publication date: May-2023
  • (2023)UnityLint: A Bad Smell Detector for Unity2023 IEEE/ACM 31st International Conference on Program Comprehension (ICPC)10.1109/ICPC58990.2023.00033(186-190)Online publication date: May-2023
  • (2023)A catalogue of game-specific anti-patterns based on GitHub and Game Development Stack ExchangeJournal of Systems and Software10.1016/j.jss.2023.111789204(111789)Online publication date: Oct-2023
  • (2023)Understanding code smells in Elixir functional languageEmpirical Software Engineering10.1007/s10664-023-10343-628:4Online publication date: 7-Jul-2023
  • (2022)DyTRec: A Dynamic Testing Recommendation tool for Unity-based Virtual Reality SoftwareProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3560510(1-5)Online publication date: 10-Oct-2022
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media