A 2-D, multi-player tank game developed in PLT Scheme ~ ~ ~ Ben VandenBos, Tim Reeves, Justin Hall, and John Ericksen ~ ~ ~ Senior Project - CS496 Spring.

Slides:



Advertisements
Similar presentations
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
Advertisements

Video Game Design Lesson 1. Game Designer Person involved in the development of a video game Person involved in the development of a video game Usually.
Cosc 5/4730 Game Design. A short game design primer. A game or animation is built on an animation loop. – Instance variables of “objects” are updated.
EEE436 / CS422 Final Presentation Group
How to make a game on game maker 7. Start With an Idea Before you actually start making your game, you are going to need an idea as to what it is you.
Cosc 5/4730 Game Design. A short game design primer. A game or animation is built on an animation loop. – Instance variables of “objects” are updated.
Yard Wars David Greer Alex Gross Ahsen Uppal. Goals Wireless, Portable Development Real Time Voice Conferencing Exciting, Expandable Game Engine.
1 Electrical and Computer Engineering Guitar Virtuos Justin D’Alessandro (EE) Jacob Dionne (CSE) Adam Montalbano (CSE) Jeffrey Newton (EE) Team Kelly Final.
Macromedia Dreamweaver 4 Advanced Level Course. Add Rollovers Rollovers or mouseovers are possibly the most popular effects used in designing Web pages.
How Clients and Servers Work Together. Objectives Learn about the interaction of clients and servers Explore the features and functions of Web servers.
SignalR Real Time with SignalR Jared Rhodes Senior Consultant Magenic.
HiVision SNMP Software.
Graphical Tree-Based Scientific Calculator: CalcuWiz Will Ryan Christian Braunlich.
GameMaker.  A lot of Different Definitions  Easier to Say What is NOT a Game  Movie is Not a Game  No Active Participation  Final Outcome is Fixed.
CS 352, W12 Eric Happe, Daniel Sills, Daniel Thornton, Marcos Zavala, Ben Zoon ANDROID/IOS RPG GAME UI.
Lua & Love2D Game Engine GALAGUH
WINDOWS APPLICATIONS by Jane Cable Also called Accessories Also called Components.
Game Design Creating a game called PING Phase 3: Steps for building basic game.
Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0 Key Abstractions in Game Maker Foundations of Interactive Game Design Prof. Jim Whitehead.
© Cheltenham Computer Training 2001 Macromedia Dreamweaver 4 - Slide No 1 Macromedia Dreamweaver 4 Advanced Level Course.
ProCol~ A jEdit Plugin for Remote Project Collaboration Justin Dieters Spring 2004 CS470 Final Presentation.
Getting to Know TiVo: The Home Media Engine (HME SDK) Eric M. Upchurch CS 525 Spring 2008.
CIM6400 CTNW (04/05) 1 CIM6400 CTNW Lesson 6 – More on Windows 2000.
Welcome to CIS 083 ! Events CIS 068.
Team ThinkTank. Specifications Ad Hoc networking game. Similar to the Atari Combat! Players control their tank and shoot enemy tanks. Each player gets.
Ophelia User-friendly Network Multi-player Game Engine Albert Öhrling.
XP Practical PC, 3e Chapter 2 1 Looking at Windows.
A Spring 2005 CS 426 Senior Project By Group 15 John Studebaker, Justin Gerthoffer, David Colborne CSE Dept., University of Nevada, Reno Advisors (CSE.
Robotics Simulation (Skynet) Andrew Townsend Advisor: Professor Grant Braught.
We will be creating a spaceship that simulates real movements in space. The spaceship will fire a laser beam that can destroy targets. The spaceship will.
Spong Bluetooth game Developed by: Erik Matzols Fredrik Lindberg.
REVIEW On Friday we explored Client-Server Applications with Sockets. Servers must create a ServerSocket object on a specific Port #. They then can wait.
Enhancing the Graphical User Interface Multiple Forms, Controls, and Menus.
Chapter One An Introduction to Visual Basic 2010 Programming with Microsoft Visual Basic th Edition.
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 7 The Game Loop and Animation Starting Out with Games & Graphics.
CS 352, W12 Eric Happe, Daniel Sills, Daniel Thornton, Marcos Zavala, Ben Zoon ANDROID/IOS RPG GAME UI.
Chapter Two Creating a First Project in Visual Basic.
GAME:IT Helicopter Objectives: Review skills in making directional sprites Create objects that shoot and destroy for points Create random enemies on the.
Learning Unity. Getting Unity
Texas Forty-Two By: Nate Normandin CS 470. What is Texas Forty-Two? A Domino Game A way for people to learn the game A way for people to play others A.
Introduction to Flash Animation CS 318. Topics Introduction to Flash and animation The Flash development environment Creating Flash animations  Layers.
Microsoft Visual Basic 2005 BASICS Lesson 1 A First Look at Microsoft Visual Basic.
TownMUD An Interface for a Text-Based Multiple User Dimension.
Session 16 Pinball Game Construction Kit:. Pinball Version 1 Replaced the fire button with a mouse event. Multiple balls can be in the air at once. –Uses.
CS 352, W12 Eric Happe, Daniel Sills, Daniel Thornton, Marcos Zavala, Ben Zoon ANDROID/IOS RPG GAME UI.
1 Object-Oriented Programming (Java), Unit 24 Stand In Final Project Description Kirk Scott.
Visual Basic CDA College Limassol Campus Lecture:Pelekanou Olga Semester C Week - 1.
1 Frisbee Physics Simulation Charles George Advisor: Brian Postow 03/05/05.
TURBO TANKS PYGAME. GAME FEATURES Two or more players handled by client/server design. Angular motion for tank movement Threadpool server design (to optimize.
Creating a Simple Game in Scratch Barb Ericson Georgia Tech June 2008.
Multi-Group Network Game Project A Project By: Erez Gazit and Sagi Katz.
Session 13 Pinball Game Construction Kit (Version 3):
Warlords Patrick Levoshko SE 558 – Multiplayer Game Design.
Computer Programming Modeling a Passive Solar Home.
Windows 95/NT/XP. What is Windows 95/NT/XP n A program that sets up an environment for you to work in on your computer, based on colorful pictures (icons)
Tutorial 7 Creating Animations. XP Objectives Learn about animation Create a timeline Add AP divs and graphics to a timeline Move and resize animation.
Visual Basic.NET BASICS Lesson 14 Menus and Printing.
Busta’ Sandwich Life Cycle Architecture. Specifications.
Graphics Lab: MyPaint Dan Maselko 1. MyPaint Description  For this assignment you will be implementing a very simple paint program.  You should be able.
Multi player client sever Snake Game Technology : JAVA (swing for user interface and Socket for passing coordinates of snakes, food item and score)
Creating a Simple Game in Scratch Barb Ericson Georgia Tech May 2009.
Game Maker Tutorials Introduction Clickball IntroductionClickball Where is it? Shooting Where is it?Shooting.
Programming Logic and Design Seventh Edition Chapter 12 Event-Driven GUI Programming, Multithreading, and Animation.
Scratch for Interactivity
Managed DirectX Joe Gavin.
Introduction to TouchDevelop
Mark Thompson Doug Stainbrook Solid Edge Technical Marketing
Creating a Simple Game in Scratch
ACM programming contest
Presentation transcript:

A 2-D, multi-player tank game developed in PLT Scheme ~ ~ ~ Ben VandenBos, Tim Reeves, Justin Hall, and John Ericksen ~ ~ ~ Senior Project - CS496 Spring Quarter 2003

Our goal was to develop a basic 2-D multiplayer tank game using PLT Scheme within a group development environment. The main idea was to make the program as clean, expandable and as readable as possible so the CS211 and CS311 classes could use ‘blue’ as a tool to learn about multi-threading and TCP/IP sockets. The Goal:

Our Beginning Thoughts: We needed to figure out how to do the following items: How to determine where each tank is on the screen How to control the tanks How to synchronize each client’s data How to draw to the screen How to manage collisions (bullets and tanks, tanks and tanks) How to increase playability of the game We also wanted to elaborate on the game with additional features: Sprites Chat Animations Menus

Movement: The two things we needed to look at: Keeping network traffic to a minimum Everyone views the same movements Our Solution: To keep track of each player movement as a vector with the following elements: (x, y, r, m) x, y : initial coordinates of movement change r : initial angle of movement change m : type of movement We then had to use this vector to calculate where each tank is during a given movement based upon time.

Types of Movement: Up Down Left Right Up & Right Up & Left Down & Right Down & Left Stop These movements are sent to the server along with x, y and r values of where the movement changed. This happens every time a button up or button down occurs on the up, down, right and left arrows. When a client receives a change in the movement of an object it uses the timestamp of when the change occurred to calculate the “current” x, y, and r values. x, y, r

Client / Server Architecture The server and client: Listens on the given port for S-expressions Checks the validity of the input S-expressions against available functions Evaluates S-expressions after checking command validity The functions available to the server simply make it a synchronization agent of current objects for all of the clients. The functions available to the client help update the list of current objects. Functions: add-object remove-object update-object Functions: tell-all-except Current Objects: ((0 tank) (1 tank) (2 bullet)…) Current Objects: ((0 tank) (1 tank) (2 bullet)…) New (x, y, r, m) Tell-all synchronize (x, y, r, m)

Drawing to the Screen: To begin we used simple wire frames with an angle indicator. These are simply drawn using draw-* functions in the MrEd graphics library for PLT Scheme. To streamline screen updates each object on the screen is updated through a thread named *refresh-thread*. To cut down on screen flickering we implemented double buffering.

Collisions: Each client’s tank (the tank the client controls) checks if it enters the boundaries of another object. Bullet collisions are simply checked by the tank being hit. After a collision is detected the server is notified and all instances of the objects involved in the collision are destroyed. All the clients are then synchronized. For playability the given tanks are then respawned in a new location. The fact that every local object checks if it crosses the boundaries of another cuts down on the overhead of checking for collisions between every single object.

Playability: Screen follows the client’s tank by panning with bounding box: Allows users to move around the tank universe and be able to see where and how the tank is moving at all times Arrows show where other tanks off the screen are: This makes sure that you cant loose track of where other tanks are in the universe (which can be annoying)

Added Features: Sprites: Instead of drawing wire frames, functions were designed to accommodate sprites used to represent the tanks and the bullets. Used a color mask to allow transparency to see the background Chat: Simply a call on the server that tells all the clients to add the given text from the given person to the command window to the side. Animations: A recursive call around a draw-bitmap-section function Menus: Before implementing the button up and button down events, the menu was catching the button up event. This event had to be forwarded in order to allow full control. Menus were made for connecting, exiting, and switching between wire frame and sprites.

Development Programs: CVS: Allows version synchronization during development Puts a safety net in place, in the case that you need to roll-back the code to a previous version Essentially allows multiple people to work on a project Provides ability to show color-coded differences between two pieces of code We also used a web-based interface to maximize usability DrScheme: Fully featured Scheme editor and interface to PLT Scheme Mailman: Most of our communication regarding this project occurred over through the bespin.org “cs396” mailing list via Mailman

Limitations: Real collisions where tanks stop and react appropriately is a very difficult problem and requires a fairly advanced algorithm The main inconsistencies in ‘blue’ are caused by the time it takes to update the clients over a network connection (lag is an untamable beast) Due to the limited number of available threads on the average desktop PC, the is theoretically limited to roughly 40 simultaneous players Given more time and research these problems could be hammered out