High performance encapsulation and networking in Casanova 2

Abstract Encapsulation is a programming technique that helps developers keeping code readable and maintainable. However, encapsulation in modern object-oriented languages often causes significant runtime overhead. Developers must choose between clean encapsulated code or fast code. In the application domain of computer games, speed of execution is of utmost importance, which means that the choice between clean and fast usually is decided in favor of the latter. In this paper we discuss how encapsulation is embedded in the Casanova 2 game development language, and show how Casanova 2 allows developers to write encapsulated game code, which thanks to extensive optimization achieves at the same time high levels of performance. Furthermore, we show that the abstractions provided by Casanova so far cover no more than the tip of the iceberg: we document a further extension in the traditionally challenging domain of networking and show how the language can provide significant improvement in productivity.

[1]  Alvin Cheung,et al.  Bridging the Gap Between General-Purpose and Domain-Specific Compilers with Synthesis , 2015, SNAPL.

[2]  J. Dalen Perspectives … , 1968, International nursing review.

[3]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[4]  Timo Kaukoranta,et al.  Aspects of networking in multiplayer computer games , 2002, Electron. Libr..

[5]  Nicolas Tabareau,et al.  A typed monadic embedding of aspects , 2013, AOSD.

[6]  Giuseppe Maggiore,et al.  Casanova: a language for game development , 2013 .

[7]  Giuseppe Maggiore,et al.  Building Game Scripting DSL's with the Metacasanova Metacompiler , 2016, INTETAIN.

[8]  Mark J.P. Wolf,et al.  The video game explosion : a history from PONG to PlayStation and beyond , 2008 .

[9]  Wu-chang Feng,et al.  PlayerRating: A reputation system for multiplayer online games , 2009, 2009 8th Annual Workshop on Network and Systems Support for Games (NetGames).

[10]  Ricardo Valerdi,et al.  Role of Software Readability on Software Development Cost , 2006 .

[11]  Emmanuel Guigon Object , 1962, Definitions.

[12]  Sergei Gorlatch,et al.  RTF: a real-time framework for developing scalable multiplayer online games , 2007, NetGames '07.

[13]  Aaron A. Reed Creating Interactive Fiction with Inform 7 , 2010 .

[14]  Alan Snyder,et al.  Encapsulation and inheritance in object-oriented programming languages , 1986, OOPLSA '86.

[15]  Kajal T. Claypool,et al.  Latency and player actions in online games , 2006, CACM.

[16]  Andrew J. Stapleton,et al.  Serious Games: Serious Opportunities , 2004 .

[17]  Edward A. Lee,et al.  Partial evaluation for optimized compilation of actor-oriented models , 2008 .

[18]  Kajal T. Claypool,et al.  Perspectives, frame rates and resolutions: it's all in the game , 2009, FDG.

[19]  Craig Chambers,et al.  Object, message, and performance: how they coexist in Self , 1992, Computer.

[20]  Ralf Dörner,et al.  Game Engines , 2016, Serious Games.

[21]  Saleem N. Bhatti,et al.  Domain Specific Languages (DSLs) for Network Protocols (Position Paper) , 2009, 2009 29th IEEE International Conference on Distributed Computing Systems Workshops.

[22]  Jeffrey Richter,et al.  CLR via C , 2006 .

[23]  Joshua Courtney Using Ant Colonization Optimization to Control Difficulty in Video Game AI. , 2010 .

[24]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[25]  Marc Prensky,et al.  Digital game-based learning , 2000, CIE.

[26]  Ian Dunwell,et al.  An Engine Selection Methodology for High Fidelity Serious Games , 2010, 2010 Second International Conference on Games and Virtual Worlds for Serious Applications.

[27]  Alastair F. Donaldson,et al.  Tackling online game development problems with a novel network scripting language , 2008, NETGAMES.

[28]  Giuseppe Maggiore,et al.  High performance encapsulation in Casanova 2 , 2015, 2015 7th Computer Science and Electronic Engineering Conference (CEEC).

[29]  Martin Burtscher,et al.  The Future of Accelerator Programming: Abstraction, Performance or Can We Have Both? , 2013, ICPADS.

[30]  Michael Lewis,et al.  GAME ENGINES IN SCIENTIFIC RESEARCH , 2002 .

[31]  Andrea Tagliasacchi,et al.  Searching for Concurrent Design Patterns in Video Games , 2009, Euro-Par.

[32]  Eike Falk Anderson A Classification of Scripting Systems for Entertainment and Serious Computer Games , 2011, 2011 Third International Conference on Games and Virtual Worlds for Serious Applications.

[33]  Johannes Gehrke,et al.  Scaling games to epic proportions , 2007, SIGMOD '07.

[34]  Kunle Olukotun,et al.  Delite , 2014, ACM Trans. Embed. Comput. Syst..

[35]  Monadic Scripting in F# for Computer Games , 2011 .