JavaStrike: a Java programming engine embedded in virtual worlds

In this paper, we describe JavaStrike1. JavaStrike is a Java development and execution environment that was developed from scratch inside Unity. The engine currently supports classes, functions, inheritance, polymorphism, interfaces, key-value stores, and much more. JavaStrike allows code to be displayed, executed, and debugged in the virtual world. We then create a third-person shooter game called CodeBreakers, which leverages the JavaStrike engine. CodeBreakers covers basic programming concepts such as variable types, intermediate programming concepts such as stacks, queues, and hashmaps, and advanced programming concepts such as inheritance, interfaces, and method overriding. JavaStrike is a first step towards general purpose programming engines embedded in virtual worlds.

[1]  Dominic Kao,et al.  The Effects of Badges and Avatar Identification on Play and Making in Educational Games , 2018, CHI.

[2]  Youngmee Kim,et al.  Differentiating autonomy from individualism and independence: a self-determination theory perspective on internalization of cultural orientations and well-being. , 2003, Journal of personality and social psychology.

[3]  Dominic Kao,et al.  Mazzy: A STEM Learning Game , 2015, FDG.

[4]  David Wolber,et al.  App inventor and real-world motivation , 2011, SIGCSE.

[5]  Tiffany Barnes,et al.  Experimental evaluation of teaching recursion in a video game , 2009, SIGGRAPH 2009.

[6]  Alexander Repenning Agentsheets: a tool for building domain-oriented visual programming environments , 1993, CHI '93.

[7]  Eleanor O'Rourke,et al.  Pyrus: Designing A Collaborative Programming Game to Promote Problem Solving Behaviors , 2019, CHI.

[8]  Amy J. Ko,et al.  In-game assessments increase novice programmers' engagement and level completion speed , 2013, ICER.

[9]  Shuchi Grover,et al.  Computational Thinking in K–12 , 2013 .

[10]  Randy Pausch,et al.  Alice: a 3-D tool for introductory programming concepts , 2000 .

[11]  Edward F. Melcer,et al.  Bots & (Main)Frames: Exploring the Impact of Tangible Blocks and Collaborative Play in an Educational Programming Game , 2018, CHI.

[12]  Tiffany Barnes,et al.  Building Games to Learn from Their Players: Generating Hints in a Serious Game , 2014, Intelligent Tutoring Systems.

[13]  Alexander Repenning,et al.  Towards the Automatic Recognition of Computational Thinking for Adaptive Visual Language Learning , 2010, 2010 IEEE Symposium on Visual Languages and Human-Centric Computing.

[14]  R. Baumeister,et al.  The need to belong: desire for interpersonal attachments as a fundamental human motivation. , 1995, Psychological bulletin.

[15]  E. Deci,et al.  Motivation, personality, and development within embedded social contexts: An overview of self-determination theory. , 2012 .

[16]  Teemu H. Laine,et al.  Gamifying programming education in K-12: A review of programming curricula in seven countries and programming games , 2018, Br. J. Educ. Technol..

[17]  Andrew K. Przybylski,et al.  The Motivational Pull of Video Games: A Self-Determination Theory Approach , 2006 .

[18]  Stelios Xinogalos,et al.  CMX: The Effects of an Educational MMORPG on Learning and Teaching Computer Programming , 2017, IEEE Transactions on Learning Technologies.

[19]  J. Shi,et al.  Pyrus: Designing A Collaborative Programming Game to Support Problem-Solving Behaviors , 2019 .

[20]  Kathryn T. Stolee,et al.  Expressing computer science concepts through Kodu game lab , 2011, SIGCSE.

[21]  Paulo Blikstein,et al.  GoGo Board: Augmenting Programmable Bricks for Economically Challenged Audiences , 2004, ICLS.

[22]  Michael Kölling,et al.  The Greenfoot Programming Environment , 2010, TOCE.

[23]  Tiffany Barnes,et al.  Game2Learn: improving the motivation of CS1 students , 2008, GDCSE.

[24]  David Weintrop,et al.  Program-to-play video games : Developing computational literacy through gameplay , 2014 .

[25]  Leah Buechley,et al.  The LilyPad Arduino: using computational textiles to investigate engagement, aesthetics, and diversity in computer science education , 2008, CHI.

[26]  J. Paul Gibson,et al.  RoboCode & problem-based learning: a non-prescriptive approach to teaching programming , 2006, ITICSE '06.

[27]  R. W. White Motivation reconsidered: the concept of competence. , 1959, Psychological review.

[28]  Kajal T. Claypool,et al.  Teaching software engineering through game design , 2005, ITiCSE '05.

[29]  Sebastian Deterding,et al.  The Lens of Intrinsic Skill Atoms: A Method for Gameful Design , 2015, Hum. Comput. Interact..

[30]  Patrice Torguet,et al.  Experimental Feedback on Prog&Play: A Serious Game for Programming Practice , 2011, Comput. Graph. Forum.

[31]  Sven Apel,et al.  Measuring programming experience , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[32]  Richard M. Ryan,et al.  Glued to Games: How Video Games Draw Us In and Hold Us Spellbound , 2011 .

[33]  Eric Rosenbaum,et al.  Scratch: programming for all , 2009, Commun. ACM.

[34]  Caitlin Kelleher,et al.  Storytelling alice motivates middle school girls to learn computer programming , 2007, CHI.

[35]  Mark H. Overmars,et al.  Teaching computer science through game design , 2004, Computer.

[36]  Jeannette M. Wing An introduction to computer science for non-majors using principles of computation , 2007, SIGCSE.