2 Game Programming with Python, Lua, and Ruby by Tom Gutschmidt

Total Page:16

File Type:pdf, Size:1020Kb

2 Game Programming with Python, Lua, and Ruby by Tom Gutschmidt Game Programming with Python, Lua, and Ruby By Tom Gutschmidt Publisher: Premier Press Pub Date: 2003 ISBN: 1-59200-079-7 Pages: 472 LRN Dedication Acknowledgments About the Author Letter from the Series Editor Introduction What's in This Book? Why Learn Another Language? What's on the CD-ROM? Part ONE: Introducing High-Level Languages Chapter 1. High-Level Language Overview High-Level Language Roots How Programming Languages Work Low-Level Languages Today's High-Level Languages The Pros of High-Level Languages Cons of High-Level Languages A Brief History of Structured Programming Introducing Python Introducing Lua Introducing Ruby Summary Questions and Answers Exercises Chapter 2. Python, Lua, and Ruby Language Features Syntactical Similarities of Python, Lua, and Ruby Hello World Samples Summary Questions and Answers Exercises Part TWO: Programming with Python Chapter 3. Getting Started with Python Python Executables Python Debuggers Python Language Structure Creating a Simple User Interface in Python A Simple GUI with Tkinter Memory, Performance, and Speed Summary Questions and Answers 2 Exercises Chapter 4. Getting Specific with Python Games The Pygame Library Python Graphics Sound in Python Networking in Python Putting It All Together Summary Questions and Answers Exercises Chapter 5. The Python Game Community Engines Graphics Commercial Games Beyond Python Summary Question and Answer Exercises Part THREE: Programming with Lua Chapter 6. Programming with Lua Lua Executables and Debuggers Language Structure Memory, Performance, and Speed Summary Questions and Answers Exercises Chapter 7. Getting Specific with Games in Lua LuaSDL Gravity: A Lua SDL Game The Lua C API Summary Questions and Answers Exercises Chapter 8. The Lua Game Community Game Engines Graphics The Games Themselves Beyond Lua Summary Exercises Part FOUR: Programming with Ruby Chapter 9. Getting Started with Ruby Debuggers Language Structure Memory, Performance, and Speed Summary Questions and Answers Exercises Chapter 10. Getting Started with Ruby Games FXRuby 3 Ruby and OpenGL Ruby and SDL Summary Questions and Answers Exercises Chapter 11. The Ruby Game Community Ruby and Game Engines Ruby and Graphics Ruby and Games Beyond Ruby Summary Questions and Answers Exercises Part FIVE: The Wrap Up Chapter 12. Using Python, Ruby and Lua in Development High-Level Languages in the Development Cycle Extending Python, Lua, and Ruby Python versus Lua Versus Ruby Summary Exercises Appendix A. History of Computer Programming Appendix B. Meet the Family ABC Ada AFNOR C C++ Cobol Eiffel FORTRAN GNU Octave Java Icon Modula Pascal Perl PHP Prolog PureBasic Smalltalk Squeak 4 Dedication This book is dedicated to Hailey and Sidney, the two biggest game players in our household 5 Acknowledgments I would like to thank, in no specific order, the following individuals:André LaMothe and the staff at Premier Press–especially my editors Emi Smith, Mitzi Koontz, and Estelle Manticas. I would also like to thank my past editors Todd Johnson and Kieron Murphy. I want to thank my parents, Katherine and James, for being so supportive over the years. Thanks also to my sister Tanya and her husband David, as well as to the rest of my immediate family–Alex, Raleigh, Steve, Stephanie, May Lou, Dodie, Dick, Bobbie, and Sophie–for their encouragement. I want to especially thank my loving and wonderful wife Susan for putting up with my writing mood swings and geek chattering, and for being so kind when I was slumped over a desk for months in a dark office, furiously typing and staring into the cold blue monitor. Next year I'll try getting some sun. 6 About the Author Thomas Gutschmidt has been professionally involved in the computer industry for the past seven years and currently works for a large software company headquartered in Redmond, Washington. He has been a freelance author and writer for three years and has been involved in several open source game projects and module development projects. He currently lives in the Northwest with his wonderful wife, Susan, their four cats, two rats, several goldfish, and the occasional urban wildlife refugee. 7 Letter from the Series Editor Game development has reached a fever pitch in the past couple of years– photorealistic rendering, advanced physics modeling, a million-plus polygon worlds–and multiprocessor consoles and PCs are powering the revolution. At the same time, experimentation with scripting languages to help control the high-level aspects of games has gone from a convenience to an absolute necessity. No longer can game programmers think of something as absurd as writing a game in C/C++. Game engines may be written in C/C++, but games–no longer. Today's state-of-the-art games are controlled almost exclusively with scripting languages. In the past, scripting languages were custom-made or derivative works made up of the C/C++ compiler and creative use of the pre-processor. Times have changed, and today developers are faced with a number of potential scripting languages to use in their games. Notable players are Python, Lua, and Ruby. Each of these languages has advantages and disadvantages, but any of them can do the job. Game Programming with Python, Lua, and Ruby takes you on a tour and tutorial of each language, highlighting its strengths and weaknesses and offering you detailed examples of getting each language up and running and interfaced to your game and host languages, such as C/C++. With Game Programming with Python, Lua, and Ruby, you won't spend a lot of time learning irrelevant material–instead, you'll get just the information you need. Tom Gutschmidt delivers a non-biased view of each language and gets you up and running as soon as possible in each of the most popular scripting languages today–Python, Lua, and Ruby. Sincerely, André LaMothe Series Editor 8 Introduction This book is unusual because it covers game programming in three different scripting languages in three separate sections. Python, Lua, and Ruby are wonderful languages used all over the world to build efficient, flexible, scalable, and well-integrated programs and systems. For the same reasons that these languages have been great choices for other projects, Python, Lua, and Ruby also are great for making games. This discovery, in fact, was made over a decade ago. Chances are you've played a computer game that utilized one of these languages during development. You may be currently working through game levels that were designed with Lua, or playing on a graphics engine prototyped in Python, or using an Internet ladder developed with Ruby. 9 Introduction This book is unusual because it covers game programming in three different scripting languages in three separate sections. Python, Lua, and Ruby are wonderful languages used all over the world to build efficient, flexible, scalable, and well-integrated programs and systems. For the same reasons that these languages have been great choices for other projects, Python, Lua, and Ruby also are great for making games. This discovery, in fact, was made over a decade ago. Chances are you've played a computer game that utilized one of these languages during development. You may be currently working through game levels that were designed with Lua, or playing on a graphics engine prototyped in Python, or using an Internet ladder developed with Ruby. 10 Why Learn Another Language? Programming languages require a lot of discipline to learn. They each have their own set of formal specifications. They all have unique ways of handling data, data structures, reference mechanisms, and command flow. And underneath all this they each have their own design philosophy. So the question arises: "Why would anyone want to learn a new programming language, let alone three new programming languages?" Well, first of all, these three high-level languages are great starting places to learn programming. For the most part, they are cleanly designed, well documented, and very kind to new programmers. Despite this, they are not toys. They are flexible and powerful, suited for both large projects and classroom exercises. Second, every language has its own strength and weaknesses. The decisions you must make during software and game development become easier when more than one possible tool is available to you. In an ideal development environment, problems are solved in a general way and then the best language for a particular job is chosen. It may be difficult in tomorrow's job market for a programmer to get away with knowing only one or two languages well. Finally, these three languages are really very similar. Much of what you learn from one will be applicable to the others. The more languages you learn, the easier the next one will be to pick up. This compound learning curve eventually begins to work greatly to your advantage, and after enough experience you will get to the point where you can learn a new language in days, simply by relating what is in a given manual to what you already know. 11 What's on the CD-ROM? The CD that comes with this book is designed to launch automatically when inserted into a machine running the Windows operating system. On the CD is the source code for all of the samples and programs written in the book. These are separated into folders organized by chapter. The CD also contains the software necessary to install Python, Ruby, or Lua on your system. This software is also separated into different folders–a Python folder, a Ruby folder, and a Lua folder. Also on the CD are several open-source libraries and utilities that are either used for the source code samples or as examples in this book. These includes PythonWin, Distutils, Numeric Python, PAWS, Py2Exe, Pygame, PyOpenGL, Pyzzle, RubySDL, LuaSDL, and Clanruby. 12 Part ONE: Introducing High-Level Languages Welcome to the first part of this book! In this part, I'll be introducing high-level languages and covering some of their parallel features.
Recommended publications
  • Learn Python the Hard Way
    ptg11539604 LEARN PYTHON THE HARD WAY Third Edition ptg11539604 Zed Shaw’s Hard Way Series Visit informit.com/hardway for a complete list of available publications. ed Shaw’s Hard Way Series emphasizes instruction and making things as ptg11539604 Zthe best way to get started in many computer science topics. Each book in the series is designed around short, understandable exercises that take you through a course of instruction that creates working software. All exercises are thoroughly tested to verify they work with real students, thus increasing your chance of success. The accompanying video walks you through the code in each exercise. Zed adds a bit of humor and inside jokes to make you laugh while you’re learning. Make sure to connect with us! informit.com/socialconnect LEARN PYTHON THE HARD WAY A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code Third Edition ptg11539604 Zed A. Shaw Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.
    [Show full text]
  • PHP Game Programming
    PHP Game Programming Matt Rutledge © 2004 by Premier Press, a division of Course Technology. All rights SVP, Course Professional, Trade, reserved. No part of this book may be reproduced or transmitted in any Reference Group: form or by any means, electronic or mechanical, including photocopy- Andy Shafran ing, recording, or by any information storage or retrieval system with- Publisher: out written permission from Course PTR, except for the inclusion of Stacy L. Hiquet brief quotations in a review. Senior Marketing Manager: The Premier Press logo and related trade dress are trademarks of Premier Sarah O’Donnell Press and may not be used without written permission. Marketing Manager: Paint Shop Pro 8 is a registered trademark of Jasc Software. Heather Hurley PHP Coder is a trademark of phpIDE. Series Editor: All other trademarks are the property of their respective owners. André LaMothe Important: Course PTR cannot provide software support. Please contact Manager of Editorial Services: the appropriate software manufacturer’s technical support line or Web Heather Talbot site for assistance. Senior Acquisitions Editor: Course PTR and the author have attempted throughout this book to Emi Smith distinguish proprietary trademarks from descriptive terms by following Associate Marketing Manager: the capitalization style used by the manufacturer. Kristin Eisenzopf Information contained in this book has been obtained by Course PTR Project Editor and Copy Editor: from sources believed to be reliable. However, because of the possibility Dan Foster, Scribe Tribe of human or mechanical error by our sources, Course PTR, or others, the Publisher does not guarantee the accuracy, adequacy, or complete- Technical Reviewer: ness of any information and is not responsible for any errors or omis- John Freitas sions or the results obtained from use of such information.
    [Show full text]
  • Abaqus Installation and Licensing Guide
    Abaqus Installation and Licensing Guide Abaqus 6.12 Installation and Licensing Guide Abaqus ID: Printed on: Abaqus Installation and Licensing Guide Abaqus ID: Printed on: Legal Notices CAUTION: This documentation is intended for qualified users who will exercise sound engineering judgment and expertise in the use of the Abaqus Software. The Abaqus Software is inherently complex, and the examples and procedures in this documentation are not intended to be exhaustive or to apply to any particular situation. Users are cautioned to satisfy themselves as to the accuracy and results of their analyses. Dassault Systèmes and its subsidiaries, including Dassault Systèmes Simulia Corp., shall not be responsible for the accuracy or usefulness of any analysis performed using the Abaqus Software or the procedures, examples, or explanations in this documentation. Dassault Systèmes and its subsidiaries shall not be responsible for the consequences of any errors or omissions that may appear in this documentation. The Abaqus Software is available only under license from Dassault Systèmes or its subsidiary and may be used or reproduced only in accordance with the terms of such license. This documentation is subject to the terms and conditions of either the software license agreement signed by the parties, or, absent such an agreement, the then current software license agreement to which the documentation relates. Abaqus software updates are designated by Version, Release, and, if applicable, Maintenance Delivery. Releases are software updates that include enhancements and new functionality. Maintenance Deliveries are software updates that address known issues but generally do not introduce enhancements or new functionality. Abaqus Extended Functionality Releases provide early access to a subset of the new functionality that will be introduced in the next numbered Release.
    [Show full text]
  • The Shogun Machine Learning Toolbox
    The Shogun Machine Learning Toolbox Heiko Strathmann, Gatsby Unit, UCL London Open Machine Learning Workshop, MSR, NY August 22, 2014 A bit about Shogun I Open-Source tools for ML problems I Started 1999 by SÖren Sonnenburg & GUNnar Rätsch, made public in 2004 I Currently 8 core-developers + 20 regular contributors I Purely open-source community driven I In Google Summer of Code since 2010 (29 projects!) Ohloh - Summary Ohloh - Code Supervised Learning Given: x y n , want: y ∗ x ∗ I f( i ; i )gi=1 j I Classication: y discrete I Support Vector Machine I Gaussian Processes I Logistic Regression I Decision Trees I Nearest Neighbours I Naive Bayes I Regression: y continuous I Gaussian Processes I Support Vector Regression I (Kernel) Ridge Regression I (Group) LASSO Unsupervised Learning Given: x n , want notion of p x I f i gi=1 ( ) I Clustering: I K-Means I (Gaussian) Mixture Models I Hierarchical clustering I Latent Models I (K) PCA I Latent Discriminant Analysis I Independent Component Analysis I Dimension reduction I (K) Locally Linear Embeddings I Many more... And many more I Multiple Kernel Learning I Structured Output I Metric Learning I Variational Inference I Kernel hypothesis testing I Deep Learning (whooo!) I ... I Bindings to: LibLinear, VowpalWabbit, etc.. http://www.shogun-toolbox.org/page/documentation/ notebook Some Large-Scale Applications I Splice Site prediction: 50m examples of 200m dimensions I Face recognition: 20k examples of 750k dimensions ML in Practice I Modular data represetation I Dense, Sparse, Strings, Streams, ... I Multiple types: 8-128 bit word size I Preprocessing tools I Evaluation I Cross-Validation I Accuracy, ROC, MSE, ..
    [Show full text]
  • Python Libraries, Development Frameworks and Algorithms for Machine Learning Applications
    Published by : International Journal of Engineering Research & Technology (IJERT) http://www.ijert.org ISSN: 2278-0181 Vol. 7 Issue 04, April-2018 Python Libraries, Development Frameworks and Algorithms for Machine Learning Applications Dr. V. Hanuman Kumar, Sr. Assoc. Prof., NHCE, Bangalore-560 103 Abstract- Nowadays Machine Learning (ML) used in all sorts numerical values and is of the form y=A0+A1*x, for input of fields like Healthcare, Retail, Travel, Finance, Social Media, value x and A0, A1 are the coefficients used in the etc., ML system is used to learn from input data to construct a representation with the data that we have. The classification suitable model by continuously estimating, optimizing and model helps to identify the sentiment of a particular post. tuning parameters of the model. To attain the stated, For instance a user review can be classified as positive or python programming language is one of the most flexible languages and it does contain special libraries for negative based on the words used in the comments. Emails ML applications namely SciPy, NumPy, etc., which great for can be classified as spam or not, based on these models. The linear algebra and getting to know kernel methods of machine clustering model helps when we are trying to find similar learning. The python programming language is great to use objects. For instance If you are interested in read articles when working with ML algorithms and has easy syntax about chess or basketball, etc.., this model will search for the relatively. When taking the deep-dive into ML, choosing a document with certain high priority words and suggest framework can be daunting.
    [Show full text]
  • Python Programming
    Python Programming Wikibooks.org June 22, 2012 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. An URI to this license is given in the list of figures on page 149. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 143. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 153, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 149. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, we recommend the use of http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility or clicking the paper clip attachment symbol on the lower left of your PDF Viewer, selecting Save Attachment. After extracting it from the PDF file you have to rename it to source.7z. To uncompress the resulting archive we recommend the use of http://www.7-zip.org/.
    [Show full text]
  • Wikis with Moinmoin Wiki Creative Group Writing
    KNOW HOW MoinMoin Wiki Building wikis with MoinMoin Wiki Creative Group Writing The members of a project team can profit from collecting their ideas, or any loose ends, in a central repository. Wikis are tailor-made for this task. BY HEIKE JURZIK ay before content manage- ment systems started to Wappear for website manage- ment, Wikis provided a kind of “open door” to HTML pages, allowing any visi- tor to click and edit the HTML content. Wiki is the abbreviation for WikiWiki- Web – “wiki wiki” is derived from Hawaiian and means “quick” or “quickly”. And the open authoring sys- restored at any time, should a page be MySQL, Oracle, or PostgreSQL. The soft- tem certainly is quick. The MoinMoin deleted or damaged by mistake. Also, ware then uses this data to create the Wiki engine is one of the better-known wikis allow you to assign special access public HTML pages. implementations of this technology. controls that can restrict editing to regis- Besides taking a look at the original Users can click to launch the embed- tered users, if required. wiki, you might like to visit what is cur- ded editor and access the content and The first wiki website was published rently the biggest wiki on the Web, the structure of the page they want to mod- by Ward Cunningham in 1995, and it is Wikipedia [3], which offers innumerable ify. Typically, an Edit link is provided to still online [1]. At the time, Cunningham articles on pages in multiple languages. make things easier. wrote an email message saying that he It is an example of how well information In contrast to “real” HTML, which had programmed a new kind of database can be organized with a wiki.
    [Show full text]
  • Minidlna Tweaker : Aplicació Per Configurar I Previsualitzar El Servidor Minidlna Per a GNU/Linux
    MINIDLNA_TWEAKER APLICACIÓ PER A CONFIGURAR I PREVISUALITZAR EL SERVIDOR MiniDLNA PER A LINUX Treball Fi de Carrera Jordi Martínez Lloveras Enginyeria Tècnica en Telecomunicació, especialitat Telemàtica Universitat Oberta de Catalunya (UOC) Tutor acadèmic: Manel Llopart Vidal Juny 2013 MiniDLNA_tweaker, personalitza el teu servidor MiniDLNA El poder compartir una mateixa biblioteca multimèdia disponible per tota la llar i no haver d’estar movent la informació amb dispositius extraïbles o de gravació és un problema que està sent enfocat des de diferents àmbits de la programació i de l’electrònica. Un d’ells les la possibilitat d’instal·lar un servidor al ordinador d’escriptori de la llar per a poder compartir la informació que hi és a dins o que es pot anar descarregant d’Internet. L’aplicació MiniDLNA per a GNU/Linux és un servidor lleuger que compleix els estàndards DLNA/UPnP configurable a traves d’un simple arxiu de text, això la fa ideal per al propòsit esmentat de la implantació d’un servidor que ofereixi els continguts a tots els dispositius que compleixin els estàndards esmentats. Aquest treball ve a emplenar el buit existent que te aquest programari en quant a una eina gràfica que serveixi per a poder controlar d’una manera senzilla i intuïtiva aquest servidor, que al ser part d’un programari més gran destinat a altres tasques, no disposa d’aquesta eina esmentada. L’aplicació MiniDLNA_tweaker desenvolupada en aquest treball emplena aquest buit tot permetent tres aspectes bàsics relacionat amb el servidor: Configurar els seus paràmetres, controlar el seu funcionament i poder escollir la informació multimèdia que s’ofereix d’una manera molt més intuïtiva que l’existent.
    [Show full text]
  • Symantec Web Security Service Policy Guide
    Web Security Service Policy Guide Version 6.10.4.1/OCT.12.2018 Symantec Web Security Service/Page 2 Policy Guide/Page 3 Copyrights Copyright © 2018 Symantec Corp. All rights reserved. Symantec, the Symantec Logo, the Checkmark Logo, Blue Coat, and the Blue Coat logo are trademarks or registered trademarks of Symantec Corp. or its affiliates in the U.S. and other coun- tries. Other names may be trademarks of their respective owners. This document is provided for informational purposes only and is not intended as advertising. All warranties relating to the information in this document, either express or implied, are disclaimed to the maximum extent allowed by law. The information in this document is subject to change without notice. THE DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. SYMANTEC CORPORATION SHALL NOT BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS DOCUMENTATION. THE INFORMATION CONTAINED IN THIS DOCUMENTATION IS SUBJECT TO CHANGE WITHOUT NOTICE. Symantec Corporation 350 Ellis Street Mountain View, CA 94043 www.symantec.com Policy Guide/Page 4 Symantec Web Security Service Policy Guide The Symantec Web Security Service solutions provide real-time protection against web-borne threats. As a cloud-based product, the Web Security Service leverages Symantec's proven security technology as well as the WebPulse™ cloud com- munity of over 75 million users.
    [Show full text]
  • Research Article Constrained Wiki: the Wikiway to Validating Content
    Hindawi Publishing Corporation Advances in Human-Computer Interaction Volume 2012, Article ID 893575, 19 pages doi:10.1155/2012/893575 Research Article Constrained Wiki: The WikiWay to Validating Content Angelo Di Iorio,1 Francesco Draicchio,1 Fabio Vitali,1 and Stefano Zacchiroli2 1 Department of Computer Science, University of Bologna, Mura Anteo Zamboni 7, 40127 Bologna, Italy 2 Universit´e Paris Diderot, Sorbonne Paris Cit´e, PPS, UMR 7126, CNRS, F-75205 Paris, France Correspondence should be addressed to Angelo Di Iorio, [email protected] Received 9 June 2011; Revised 20 December 2011; Accepted 3 January 2012 Academic Editor: Kerstin S. Eklundh Copyright © 2012 Angelo Di Iorio et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. The “WikiWay” is the open editing philosophy of wikis meant to foster open collaboration and continuous improvement of their content. Just like other online communities, wikis often introduce and enforce conventions, constraints, and rules for their content, but do so in a considerably softer way, expecting authors to deliver content that satisfies the conventions and the constraints, or, failing that, having volunteers of the community, the WikiGnomes, fix others’ content accordingly. Constrained wikis is our generic framework for wikis to implement validators of community-specific constraints and conventions that preserve the WikiWay and their open collaboration features. To this end, specific requirements need to be observed by validators and a specific software architecture can be used for their implementation, that is, as independent functions (implemented as internal modules or external services) used in a nonintrusive way.
    [Show full text]
  • End-To-End Perl Solutions
    END-TO-END PERL SOLUTIONS: ACTIVEPERL AND KOMODO IDE FOR PERL MILLIONS OF DEVELOPERS TRUST PERL FOR COMPUTATIONAL AND INTEGRATION TASKS— SYSTEM ADMINISTRATION, SCRIPTING, RUNNING DATABASE APPLICATIONS, AND MORE As an open source programming language, Perl immedi- FAIL-SAFE ACTIVEPERL FOR BUSINESS AND ately reduces up-front project costs. However, Perl alone MISSION-CRITICAL APPLICATIONS may not help you meet your business goals. With ActiveState commercial-grade technical support and consulting you don’t need to depend on overworked Like most open source projects, Perl isn’t quality assured internal resources or public Perl communities to solve or commercially supported. So, it may not be safe for development issue. business or mission-critical applications that must run effectively daily, weekly, even hourly. Don’t let Perl be a ActivePerl Enterprise Edition is designed for busi- point of failure for your internal systems and cost your nesses with large Perl deployments in essential, mission- business in lost revenue. Or worse, don’t let it compro- critical applications that, when down, could cost your mise relationships with your customers. CA, Siemens and business in lost revenue and a damaged reputation. Boeing are just a few Fortune 1000 companies that trust Deploy Perl with confidence knowing you’re using the ActiveState for end-to-end development, management most secure, enterprise-grade builds for platforms like and distribution solutions for fail-safe Perl. WORLD’S BEST PERL DISTRIBUTION “ActiveState’s trusted version of Perl has allowed us ActivePerl is the industry-standard, commercial-grade to continuously raise the bar on quality as well as Perl distribution used by millions of developers around cut the cost of expanding our product matrix.” the world for easy Perl installation and quality-assured Lawrence Backman, VP at CA code.
    [Show full text]
  • The Kilobot Gym
    The Kilobot Gym Gregor H.W. Gebhardt1 and Gerhard Neumann2 Abstract— Simulation is a crucial tool when learning control policies for robotic systems. The evaluation of a control policy is a recurring task in most learning algorithms which can be significantly sped up when using a simulation instead of the real system. This improvement in learning speed becomes even more significant when working with robot swarms which usually operate rather slow and need to be tediously initialized by hand. In this paper, we present a novel simulator for swarm Fig. 1. Left: a scene with a small swarm of Kilobots with an object in the robotics. Our simulator is inspired by the Kilobot platform and background. Right: a swarm of Kilobots in our simulation framework with builds on the OpenAI gym. This allows to evaluate a wide range with four square objects. of learning algorithms using a unified interface for controlling the swarm. The code of our simulation framework is available at [3]. time step. The implementation uses JavaScript embedded in HTML files which results in code that is hard to use for I. INTRODUCTION programmatic evaluations and, furthermore, the reusability Learning the parameters of a control policy is usually of JavaScripts without any modularity goes towards zero. an iterative process of evaluating the parameters on the Another approach to simulate a swarm of Kilobots is to system and improving the parameters based on the evaluation use the robot simulator V-REP [6]. The simulations are results. In robotics, the most time consuming task is often the performed in 3D, where the user can select between different evaluation of the parameters on a real robotic system.
    [Show full text]