Coder Social home page Coder Social logo

mikeware / spacebattlearena Goto Github PK

View Code? Open in Web Editor NEW
15.0 7.0 11.0 16.65 MB

Space Battle Arena is a Programming Game.

License: GNU General Public License v2.0

Python 82.59% Java 17.28% Batchfile 0.13%
programming-game java space-battle students apcs tealsk12

spacebattlearena's Introduction

Space Battle Arena

Space Battle Arena is a โ€˜Programming Gameโ€˜ where you must write code (in Java) to autonomously control a space ship to accomplish specified objectives.

To find out more visit our GitHub Website. Complete Learning materials and other guides are available there as well.

Space Battle Arena is licensed under the GPLv2. Gson is licensed under the Apache license and provided for convenience on our release page.

Student Environment

It is expected that students have completed a full year of Java programming in high school or just over a semester of programming at the college level.

We use jGRASP as our IDE of choice when working with High School students, but any Java IDE can be used that is capable of adding a jar to a classpath and executing a class from within the jar as the main class.

Resources

Development Tools

Dependencies

Space Battle was built against the following versions of libraries:

See the Development Guide for more information on extending Space Battle Arena.

spacebattlearena's People

Contributors

demc avatar hawkerm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

spacebattlearena's Issues

Plug-in Ship's Rotation to Physics Engine

Currently, Ship's rotations are handled as an independent entity.

If we plug it into the Physics Engine, then collisions should cause changes to angular momentum. This would be more interesting and realistic. Though we would probably need a command to 'stop' rotation?

Implement Basic 'Testing' Framework/Simulator

Thought of a potentially 'easy' way to implement a 'testing' framework to let us craft specific scenarios and view/test on the outcome.

Debating on how much I want this to be configuration vs. code, but would be really nice to test out certain scenarios in controlled environments to understand the complexities of certain elements of SBA more.

Need to enable AI Ships for Game Purposes

Currently, just using for testing, but should have a flag around if the AIShip 'counts' as a player and can advance in rounds (i.e. it's a bar to beat). You should decide if there's one per tournament or one per round...

Or is it just an auxiliary environment thing that should be ignored from scoring and advancement (i.e. you would add one or more during the world creation. Like turrets or defenders or something.)

Make default behavior to re-add ships to world in subgames

Need to clean-up the logic around ships respawning in the world, it's a little messy right now. This should just be the default behavior based on how we've used the system.

This will also help in cases where a 'player' isn't connected via the network...

Rebase Coordinate System

Currently, 0 degrees is E and positive angles are CCW.

We should have 0 degrees be N and positive angles are CCW.

Client trying to disconnect twice?

After QUIT seeing:

Attempting to disconnect...
Disconnect complete.
Shutting down...
Attempting to disconnect...
Disconnect complete.

Notice the extra two lines

Implement Steer Command

Allows you to adjust your velocity vector by a number of degrees.

The time it takes is based on the amount of adjustment required.

Should refactor world reference out of Ship class

Currently, Ships need a reference to the world so they can fire torpedoes (and maybe create other things in the future).

It'd be nice to abstract this reference somehow so they look like other objects.

Build MacOS App using py2app

Would be great to just have a pre-built app of the server using py2app for OSX.

Just need someone with a Mac...

Add Nebula Space Object

  • Should be eclipse shape?
    • Possible Rotation?
  • Thinking that it provides some basic 'friction' and slows ships down over time.
  • Also inhibits radar effectiveness (either range or probability?).

Consolidate Object's and their 'influence' radius

e.g.

  • Planets/BlackHoles have gravityfieldlength
  • Nebulas use major/minor on PhysicalEllipse
  • Ships have a RadarRange

Ideally, just migrate to a central major/minor convention for all three? Kind of already abstracted that way on the client.

Client Should parse Server Broadcast messages

This currently should only occur when the server gets gracefully terminated. It just causes a big exception stack to show in the client, but it should be handled a bit more gracefully in general in the client.

This is due to the fact that the json is sending [0,null](server -> all), but the client is explicitly expecting [int, int] and doesn't seem to parse 'null' as an integer.

Add Smooth Camera Movement to Server

It'd be nice on the server when you zoom in or click to navigate that it does the transition more smoothly so the context of the world is maintained.

This would be nice for the tracking too, so it would jump more smoothly between ships (especially with the dynamic camera enabled).

Clean-up World/Game Instantiation

When the game is initially created and tries to instantiate its world, the world is starting to run right away.

If there happens to be a collision in the time before this initialization finishes and the game gets its world references, errors are currently spit to the console.

Not sure of impact. Think can either delay world gameloop or maybe since passing game to world anyway, just have it set the reference and clean-up messy create/reset stuff in game...

Investigate why we tend to get 0 degree turns on clients.

ERROR: Command ROT({DEG=0.0}) failed: Invalid Ship Command: 'Degrees Must be Non-Zero'

This tends to happen for students when we play find the middle. We should probably have the RotateCommand throw an exception if its constructed with 0 as the degrees? Not sure...

Headless flag on server doesn't work

No loop, so server exits immediately. Know this used to work, so not sure what happened.

Not a high priority, as not very interesting to look otherwise...

Better Dynamic Camera

It'd be nice for the Dynamic Camera to look at deltas in score changing and health/shield values/damage/possible destruction to create a more interesting hands-off experience.

Review new client properties

Want to review the new properties for Pull, Major, and Minor on the client?

Wasn't sure how best to describe it, but it was at the end part of brain power.

Add JavaDoc

  • Create Generation Scripts.
  • Store in doc/clientdoc and doc/pydoc in repository.
  • Update vital documentation as needed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.