GithubHelp home page GithubHelp logo

rekit-group / rekit-game Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 4.0 50.94 MB

Platform jumper game in Java using a self-written game engine to understand and modify.

License: GNU General Public License v3.0

Java 99.89% Shell 0.11%
java awt game-2d moddable-game

rekit-game's Introduction

RεKiT

Maven Deploy (Dev) GH Pages Deploy (Dev) GitHub issues GitHub license

RεKiT is a platform jumper game in Java and AWT and has a self-written game engine to understand and modify.

The project is aiming to educate about software design and was created by students of the Karlsruher Institut für Technologie.

Getting Started

To simply play the game, download the latest ReKiT.jar on the releases page and launch by double clicking the jar-file. If double clicking doesn't work, open a terminal and run the command java -jar <JAR-FILE> in the correct folder.

GameModes

Infinite Mode

The infinite level is randomly assembled from small components that can be modified The more varieties through structures and enemies there is, the more random this level becomes!

Randomly generated levels and many different enemies and varieties

Arcade Mode

In contrast to the random infinite mode, there is also a set of predesigned levels to master. They introduce one special block and feature at a time but will always be challenging!

Levels can also be added via modding as shown in the example.

New challenges special blocks

Boss Rush

The Boss Rush is a quick way to challenge the games bosses, that have more complex movement and attack patterns than usual Enemies.

Unique bosses

Features

Currently, the game features

  • 7 special blocks
  • 12 arcade levels, infinite mode, boss rush mode
  • 5 collectable items
  • 8 enemies
  • 2 bosses

Development

To setup your workspace for viewing or altering the code follow these steps:

  • Have eclipse with the Maven Eclipse plugin installed
  • Clone the repository
  • Switch workspace to the main directory (File -> Switch Workspace)
  • Import every maven module in this directory (File -> Import -> Maven -> Existing Maven Projects)
  • To compile the project click the run button after opening Main.java in the game module

There are auto-generated API-Docs available.

Mods / Addons

Addons are an easy way to add functionality without understanding the whole code.

Check out this example project on GitHub on how to create an addon.

Also, see this detailed instruction on adding levels.

Here is a list what can be added via addons:

Addable Feature Super class and documentation Example
Level - Adding levels
Enemies rekit.logic.gameelements.type.Enemy Cannon
Special blocks rekit.logic.gameelements.type.DynamicInanimate ClimbUpBox
Bosses rekit.logic.gameelements.type.Boss RocketBoss
Items rekit.logic.gameelements.type.Pickup BluePill

Known Mods

Contributors

Maintainers:

Special thanks to contributors:

rekit-game's People

Contributors

anj95 avatar dependabot[bot] avatar dfuchss avatar flunzmas avatar matzebond avatar norbert515 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rekit-game's Issues

Controller is not debuggable

After reaching a break point in the Controller and continuing the Controller doesn't work anymore.
The game still runs, but inputs are ignored.

Implement Boss WarpLord (WIP-Name)

Originally reported by: Angelo Aracri (Bitbucket: AnJ95, GitHub: AnJ95)


Bigger than regular Warps

He warps directly to the players position
(Boss.target.getPos())

However, he shows his next target with particle effects. So the player can see where the WarpLord is planning to go but can dodge by quickly moving.

Upon every warp, the WarpLord changes its color to one of red, blue or purple

Also, upon every warp he spawns a ball that has regular physics (=> gravity) and bounces on the floor (like the Player does in idle state)

The player can shot these balls around the room, they bounce of walls (entry angle = reflection angle)
(compare pos => calc angle => apply velocity)

The WarpLord only takes damage when he is hit with a ball with the same color he currently has, the balls otherwise disappear.


Implement Boss SlurpiDurpiDurpDurp

Originally reported by: Angelo Aracri (Bitbucket: AnJ95, GitHub: AnJ95)


Boss version of Slurp

Consists of 6-8 green balls and 1 red ball.
The green balls make damage, the red ball can be damaged.
(ReactToCollision())

Periodically shoots green balls at player, that make damage while flying and stick to walls (They only slow the player while sticking to a wall)
(TimeDependency, Boss.target)

The Player can harm the boss only when there is just the red ball left.

After a few seconds, all the green balls go back to where they were and the boss behavior repeats itself


Readme polish

The readme.md has gotten pretty big.

I'd like to split it in general (game-related) and everything modding/developing-related.
I would recommend separate markdown files for:

  • general (about the project, game-description, features, ...)
  • how to create new mod
  • how to create level
  • how to create new Inanimate/Enemy/Pickup

Update Infinite Mode

We have tons of functionality not used by the infinite level.
Platforms, Cannons and PickUps could serve very well.

So @matzebond @fuchss-dominik go ahead and add a few Structures :P

Arcade Structure

The arcade levels are currently a mess and id like to have them in logic order introducing special block, enemy etc step after step.

Id propose to make levels in packs of ten, with rising difficulty and boss at the end introducing only a few features each.

Judging by the current amount of bosses and enemys we can make 2 packs = 20 levels

For experimentation me might want to think of creating a debug-mode-only -21.-level

Collision Detection doesn't work properly

Sometimes the Rekt-Boss leaves his area, which could be caused by an inoperable collision detection.
This error depends on the machine (possibly floating-point operations)

Coins and Score

I find the coins different colors quite confusing so optics should be more diversified, esp. the negative ones.

Also, a small user feedback indicating the exact amount of gotten/lost points should be made. TextParticle maybe?

MainMenueScene: go directly to a submenu

After finishing an arcade level we want to a menu entry which goes back to the arcade level selection not the top of the main menu.
Likewise after finishing the infinite level, boss rush and level of the day go back to the level selection

This could be done by sending an argument when creating a new MainMenueScene

ArcadeLevelManager

We need some kind of manager for the arcade levels

It's purpose would be:

  • in the end menu: got to the next arcade level after the current one was completed ]
  • show which levels are completed in the main menu

ParticleSpawner Parser

Originally reported by: Angelo Aracri (Bitbucket: AnJ95, GitHub: AnJ95)


Add new Parser for ParticleSpawner that parses every ParticleSpawnerOption upon visiting.
Format:

#!python

colorRStartMin, [colorRStartMax, [colorRDeltaMin, [colorRDeltaMax]]];
colorGStartMin, [colorGStartMax, [colorGDeltaMin, [colorGDeltaMax]]];
colorBStartMin, [colorBStartMax, [colorBDeltaMin, [colorBDeltaMax]]];
colorAStartMin, [colorAStartMax, [colorADeltaMin, [colorADeltaMax]]];
speedStartMin, [speedStartMax, [speedDeltaMin, [speedDeltaMax]]];
angleStartMin, [angleStartMax, [angleDeltaMin, [angleDeltaMax]]];
rotationStartMin, [rotationStartMax, [rotationDeltaMin, [rotationDeltaMax]]];
sizeStartMin, [sizeStartMax, [sizeDeltaMin, [sizeDeltaMax]]];
amountMinStartMin, [amountMinStartMax, [amountMinDeltaMin, [amountMinDeltaMax]]];
amountMaxStartMin, [amountMaxStartMax, [amountMaxDeltaMin, [amountMaxDeltaMax]]];
timeMinStartMin, [timeMinStartMax, [timeMinDeltaMin, [timeMinDeltaMax]]];
timeMaxStartMin, [timeMaxStartMax, [timeMaxDeltaMin, [timeMaxDeltaMax]]]

(Without the new-lines)
Or char * to take default instead


Make Scenes/GameObjects restartable

Since it's now possible to restart a level from the pause and end menu, we should check that this works correctly for all Scenes and every GameObject (especially bosses and one time stuff)

we didn't really account for this see a7e703d

use the init method of GameObject

AfterLevelMenu

Originally reported by: Angelo Aracri (Bitbucket: AnJ95, GitHub: AnJ95)


Create menu that appears after

#!java
LevelScene.end(boolean won)

depending on if Level is infinite or arcade and if won or !won, there are different buttons

  • Infinite+Lost: "Try again" & "Back"
  • Infinite+Won: ... Does not exist
  • Arcade+Lost: "Try again" & "Back"
  • Arcade+Won: "Next" & "Back"

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.