Code Monkey home page Code Monkey logo

jackthefishman's People

Contributors

ardera avatar beseme avatar janekx21 avatar schaumbu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

jackthefishman's Issues

Hauptmenü

Das Hauptmenü (MainMenu) hat die folgenden Knöpfe.
Start, Options, Quit, Credits (als bild von Krakula)
Mit den folgenden Funktionen

  • Start startet das Spiel
  • Options öffnet das Optionsmenü
  • Quit schließt das Spiel
  • Credits öffnet die Credits

Das Optionsmenü hat die Folgenden Elemente
Global Gain Slider, Back

  • Global Gain Slider stellt die Volume vom ganzen Programm
  • Back öffnet das Hauptmenü

Die Credits sind entweder ein Link auf krakula.com oder ein link zum repo oder ein link zum eLearing oder ein Dialog mit folgendem Text
"Dieses Spiel entstand im Ramen der Lehrveranstaltung 3D Game Project an der Otto von Guericke Universität Magdeburg. An der Entwicklung waren die folgenden Studenten beteiligt: Hannes, Bennet, Arne, Janek. Wir bedanken uns recht herzlich bei den Lehrveranstaltern: "

durch Musik ausgelöste Partikel

Es sollen die Projektile nicht nur regelmäßig durch den Timer kommen sondern auch von dem Beat der Musik gesteuert werden. Ein Beat soll mit dem Ankommen des Projektiles synchronisiert sein.

Kombinieren

Das Game mal grundlegend zum laufen bringen.

  • Testlevel ausbauen

Serializing

  • System to save a scene
    -> GOs werden gespeichert
    -> mayb JSON?

FN Taste

FN Taste in der Input.kt einfügen

UI Framework

Text Rendern, Boxen (Panel) und Buttons anzeigen

Vector2Const+Copy

create const and copy class in math folder for Vector2f

  • Folder: Math
  • equivalent to vector3
  • add functions in extensions.kt: times + clamp

Standard Enemy

Spawnt, schießt x - mal, verschwindet.

Projektil: Einfach ne Kugel oder eventuell dieses komische Ei.

Braucht:
Modell
Spawner (für die Kugel)
Modell für die Kugel
Variable für die Firerate
Information darüber, auf welcher Lane er spawnt und schießt

Für die Kugel:
Variable für Projektilgeschwindigkeit
Collider
Variable für Damage

Concept Art befindet sich (vllt) im Wiki und auf Discord

Physik Component

  • abstract class ColliderComponent
  • class BoxColliderComponent
  • class CircleCollierComponent

EnemySpawner

  • Spawnt, hält und zerstört
  • spawnposition
  • timing

Viel Immutable machen

so viel wie möglich auf immutable umbauen. Das heißt vor allem die Vektor Bibo so gestallten das keine val mehr nötig sind und fast alle sachen über Vector*fc laufen.
Wichtige klassen sind dabei:

  • Vector3f
  • Vector4f
  • Matrix4f

Health Indikator

Es soll am unteren Bildschirmrand eine Pizza zu sehen sein die in 6 Stücke geteilt ist. Das Leben des Spielers soll durch die Anzahl der Pizzastücken dargestellt werden.

Musik Component

  • kann musik abspielen
  • tackt und beat kann extrahiert werden

Kamera - Player - LookAt

Component für die Kamera, die sich so rotiert, dass sie durchgehend zum GameObjekt Spieler schaut

Testlevel basteln

  • Testlevel mit primitivem Model als Spieler
  • Testen vom Movement/Inputs

AudioComponent und Music state vom OpenAL state trennen

Components können ja jetzt deaktiviert sein (Component.onEnable, Component.onDisable). AudioComponent und Music sind dafür aber noch nicht ausgelegt. Die würden praktisch auch OpenAL Samples abspielen, wenn sie eigentlich deaktiviert sind. (Was passieren kann, wenn zB ein Level geladen wird, oder ein Savegame)

Also müsste man den AudioComponent und Music state vom OpenAL state trennen

Shortcuts

  • Loader mit Generischem Parameter
  • schneller von Components auf generische Components zugreifen z.B. Transform
  • generische GameObject spawner Funktion
  • MainCamera Spawnen Shortcut
  • ein paar bessere Enums für z.B.Window Mode

Laser Enemy

Lasershark/ Katzenhai, spawnt, zeigt kurz an, auf welcher Lane er schießen wird, schießt, verschwindet

Braucht:
Model
Info über die Lane, auf der er spawnt
Raycast für den Laser
Linedrawer + Shader
Damage
2 Variablen dafür, wie lange der Laser angekündigt wird und wie lange er dann da ist

Concept Art befindet sich im Wiki und auf Discord

Komplettes Dodge Gameplay

Besteht aus:

  • Player Movement
    • Indikator (unsichtbar)
      • seine x position wird jedes frame um mouse delta x erhöt
      • kann nicht über den rand des spiel feldes
    • Player geht hinterher
    • Player Animation
      • dreht sich in die Richtung in die er fliegt
  • Gegner
    • spawnen in konstanten Abständen
    • haben Collider
    • haben bestimmte Bullets die sie spawnen können
    • Spezialisierung Standard
      • verschießt Basic Bullet
    • Spezialisierung Hammerhead
      • verschießt Wobble Bullet (Aal)
    • Spezialisierung Lasershark
      • verschießt Laser
    • Spezialisierung Laternenfisch
      • verschießt Leuchtkugel
  • Gegner Movement
    • nach spawnen bewegen sie sich auf das Spielfeld
    • dort verweilen sie kurz
      • dabei können sie Bullets spawnen oder andere Aktionen ausführen
    • dann bewegen sie sich von selber wieder weg
  • Bullets
    • bestimmte Gegner können Bullets verschießen
      • beim schießen werden die Bullets am Gegner gespawned
    • haben Collider
    • haben bestimmte Schadens Werte (zwischen 1-3)
    • Spezialisierung Basic Bullet
      • fliegt gerade und schnell
      • macht 1 schaden
    • Spezialisierung Wobble Bullet (Aal)
      • fliegt mit Sinuskurve
      • recht langsam
      • macht 2 schaden
    • Spezialisierung Laser
      • kurze hitbox über langer Strecke
    • Spezialisierung Leuchtkugel
      • fliegt langsam
      • macht 0 schaden
  • HP
    • ist am beginn 10
    • wenn Gegner Collider oder Bullet Collider den Spieler Collider berühren verliert er HP
    • wenn die HP auf 0 fallen wird das Spiel zurückgesetzt
      • die eigene Scene wird geladen

Entity Framework

Sowas mit GameObjects und Scene.

Entscheidung:
mit Klassen

GameObject
        |
Transform(val pos, val rot, val scaling)
      |
Player

mit Komponenten

GameObject(val Component[])

Component______
       |           \
Transform     Meshrenderer

Klaxon nativ einbauen

Das fromJson und toJson hat keine zukunft. Warum nicht das native serialisieren verwenden.
Laut (Klaxon Git)[https://github.com/cbeust/klaxon] kann hier auch Klaxon die arbeit machen.

Kamera

einfache Kamera die Matrizen setzt

cleanup

ein weiteres mal muss das Projekt mal ein wenig aufgeräumt werden

Physik Engine

Box2D (Google flow fun) als java lib implementieren
http://jbox2d.org/

    private val physicsWorld = org.jbox2d.dynamics.World(Vec2(0f, 9.81f), false)
    private val groundDef = BodyDef()

    init {
        groundDef.position = Vec2(0f, -10f)
    }

    private val ground = physicsWorld.createBody(groundDef)
    private val shape = PolygonShape()

    init {
        shape.setAsBox(50f, 10f)
    }

    private val fix = ground.createFixture(shape, 0f)

    private val bodyDef = BodyDef()

    init {
        bodyDef.position = Vec2(0f, 4f)
    }

    private val body = physicsWorld.createBody(bodyDef)
    private val boxShape = PolygonShape()

    init {
        boxShape.setAsBox(1f, 1f)
    }

    private val fixture = FixtureDef()

    init {
        fixture.shape = boxShape
        fixture.density = 1f
        fixture.friction = .3f
        body.createFixture(fixture)
    }

Hammerhead Enemy (Wobble)

Hammerhead, spawnt, schießt einen Aal und verschwindet.
Aal fliegt in Schlangenlinien zwischen x - Lanes.

Braucht:
Model
Information über die Lane, auf der er spawnt
Model für den Aal
Spawner für den Aal

Für den Aal:
Projektilgeschwindigkeit
Wobble Geschwindigkeit
Wobble Amplitude (über wie viele Lanes fliegt er hin und her)
Variable für Damage
Collider

Concept Art befindet sich im Wiki und auf Discord

Distraction Enemy

Laternenfisch, spawnt, schießt (Kugel macht keinen Schaden) und verschwindet wieder

Braucht:
Model
Model für die Kugel + glow Shader
Info über die Lane, auf der er spawnt
Spawner für die Kugel

Für die Kugel:
Projektilgeschwindigkeit
braucht keinen Collider weil es ja nur zur Täuschung sein soll

Concept Art befindet sich im Wiki und auf Discord

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.