SpaceInLasers 3.0: Unterschied zwischen den Versionen
Tut (Diskussion | Beiträge) (→Besondere Controller) |
Tut (Diskussion | Beiträge) (→Besondere Controller) |
||
Zeile 101: | Zeile 101: | ||
Muss diesmal auch das UFO befehligen - dieses muss Treffer empfangen und selbst schießen können. | Muss diesmal auch das UFO befehligen - dieses muss Treffer empfangen und selbst schießen können. | ||
− | Wichtige Befehle fürs Ufo: | + | Wichtige Befehle fürs Ufo (immer Node ID 'r'): |
* rA302xx : xx Helligkeit Prim. Waffe | * rA302xx : xx Helligkeit Prim. Waffe | ||
* rA702xx : xx Helligkeit Sek. Waffe | * rA702xx : xx Helligkeit Sek. Waffe | ||
Zeile 113: | Zeile 113: | ||
* re0xx : xx Energielevel für Auto 0 übertragen | * re0xx : xx Energielevel für Auto 0 übertragen | ||
* re1xx : xx Energielevel für Auto 1 übertragen | * re1xx : xx Energielevel für Auto 1 übertragen | ||
+ | * sst : u = Primärwaffe Triggern (0x91), t = Sekundärwaffe triggern (0x92) (ungenutzt) | ||
+ | |||
Generelle Befehle für Radiomaster: | Generelle Befehle für Radiomaster: | ||
Zeile 126: | Zeile 128: | ||
Achtung: Es wird eine Soft-Serial verwendet. | Achtung: Es wird eine Soft-Serial verwendet. | ||
+ | |||
+ | Wichtige Befehle für SlaveRxTx Controller (_ durch Node-ID ersetzen): | ||
+ | * scd : c = Primärwaffe Triggern (0xa8), d = Sekundärwaffe triggern (0xac) (genutzt bei Abwehrtürmen) | ||
+ | * _eNxx : xx Energielevel für Objekt N (0..7) übertragen | ||
=== Virobi Controller === | === Virobi Controller === |
Version vom 13. März 2017, 22:46 Uhr
Inhaltsverzeichnis
Grundlegende Idee
Unten eine Kulisse aus Häusern, Kühen etc. Oben Alien-UFO Spider mit Scheinwerfer nach unten. Die Treffer-Logik soll beibehalten werden wie bei der vorherigen Version. Die Bodenkulisse soll der Hauptfokus sein und modular aufgebaut werden.
Spielprinzip
Single Player bzw. kooperative Single Player (wenn mehrere Leutes das Ufo und deren Waffen steuern).
Angelehnt an Flipper bzw. Moorhuhn: Möglichst viele Punkte durch Zerstörungen von Zielen am Boden sammeln. Das Ufo hat Energie, die langsam runtergeht. Wird das Ufo von Bodenwaffen getroffen, geht gleich eine ganze Menge Energie verloren. Beamt das Ufo spezielle Dinge wie Atomkraftwerk oder den Würgerking-Burger, kann es Energie hinzugewinnen. Ist die Energie zu Ende endet das Spiel.
Wo
Auf der Make_Rhein-Main_2017 - diese Seite zeigt auch den Raum, wo wir das Ganze aufbauen wollen.
Wer macht was?
- Spider UFO: Jochen, Axl
- Steuerpult UFO: Christine
- UFO-Lampe: Shintaro
- UFO Modell: Shintaro
- Tentakel: Shintaro
- Bus mit Neopixelansteuerung / Treffersensoren (Wiederverwertung von Space'n'Lasers 2.0 Kram): Lutz
- Bodenkulisse:
- Kühe: Lutz
- Kühe wollen ein schönes Atomkraftwerk: Lutz
- Abwehrtürme: ? (Lampen von Lutz) Alex und Volker
- Weißes Haus: Björn
- Gräber (Ufo erzeugt Zombies): ?
- Skyline: ?
- Zerstörbarer (über Beleuchtung)
HollywoodHACKFFM.DE Schriftzug - Vergnügungspark: ?
- Würgerking oder Mäc-Doof (Ufo klaut Burger, zerstört das M ...): ?
- Massenziele wie Autos, Tiere, Leute, Häuser, Statuen etc. am Boden: ?
- Hat jemand Playmobil-Zeug, was hier her passen würde und was er leihweise zur Verfügung stellen könnte?
- Schokoladen/Bonbon-Fabrik (wenn von Ufo getroffen kriegt der Spieler Schoki/Bonbons):
- ...weitere Ideen?
Energy Level Parser
Mit diesem Beispiel-Arduino-Sketch kann der Parser fürs Energie-Update implementiert werden. Er empfängt per serieller Schnittstelle auf 2400 Baud einen Energie-Update Befehl. Dieser Befehl muss mit einem kleinen "e" beginnen, danach kommt der neue Energie-Wert als Dezimalzahl gefolgt von einem Return-Zeichen. Der Parser unterstützt viele Arten von Return-Zeichen sowie Backspace - sollte also stressfrei klappen.
Ein Energiewert von 0 bedeutet das Objekt ist zerstört (Beispiel: Kuh kippt um), ein Energiewert von 100 bedeut das Objekt ist voll Einsatzbereit bzw. in den Ursprungszustand zu versetzen (Beispiel: Kuh klappt wieder hoch). Energiewerte dazwischen können nach eigenen Ideen behandelt werden (oder auch einfach gar nicht, Beispiel: bei der Kuh blitzt das Sklett auf).
// Space'n'Lasers 3.0 example code to receive energy levels. // send "e100" + Return to via serial terminal (2400 Baud) to update energy level. int Energy = 100; int OldEnergy = 0; void setup() { // put your setup code here, to run once: Serial.begin(2400); } void loop() { // should be called regulary receive_serial_cmd(); // test if energy has changed if(Energy != OldEnergy) { OldEnergy = Energy; // Energy level has been changed - react here Serial.println("Energy changed!"); } // Do other stuff like animation updates here } void receive_serial_cmd(void) { static uint8_t cmd[18]; static uint8_t cmdcount = 0; uint8_t c; while(Serial.available()) { c = Serial.read(); if(c > ' ') cmd[cmdcount++] = c; if((c == 8) && (cmdcount > 0)) cmdcount--; if((c == 0x0d) || (c == 0x0a) || (cmdcount > 16)) { cmd[cmdcount] = 0; if(cmdcount > 0) { switch(cmd[0]) { case 'e': if((cmdcount > 1) && (cmdcount < 7)) { int temp = atoi((const char *)&cmd[1]); Energy = constrain(temp, 0, 100); Serial.print("Value received:"); Serial.print(temp); Serial.print(", Energy set to:"); Serial.println(Energy); } break; // other commands can be decoded here the same way } } cmdcount = 0; } } }
Besondere Controller
Radiomaster
Bediehnt nur den NRF24L01+ als Master. Muss diesmal auch das UFO befehligen - dieses muss Treffer empfangen und selbst schießen können.
Wichtige Befehle fürs Ufo (immer Node ID 'r'):
- rA302xx : xx Helligkeit Prim. Waffe
- rA702xx : xx Helligkeit Sek. Waffe
- rAb02xx : xx (0-180) Pos X Servo
- rAf02xx : xx (0-180) Pos Y Servo
- suv : u = Primärwaffe Triggern (0x81), v = Sekundärwaffe triggern (0x82)
- re3xx : xx Energielevel für UFO übertragen
Wichtige Befehle für die Autos:
- re0xx : xx Energielevel für Auto 0 übertragen
- re1xx : xx Energielevel für Auto 1 übertragen
- sst : u = Primärwaffe Triggern (0x91), t = Sekundärwaffe triggern (0x92) (ungenutzt)
Generelle Befehle für Radiomaster:
- rtr : Target-Codes abfragen ( AABBCCDDEEFFGGHH, AA Auto 0, BB Auto 1, CC frei, DD Ufo, EE FF GG frei, HH Radio-Fehler-Code)
Ufo Controller
Angebunden über NRF24L01+. Im Grunde wie Abwehr Controller, schießt, empfängt Treffer und sendet Energie-Level und Anderes weiter.
Problem: Durch Radio entsteht beim Senden ein (hoffentlich immer gleicher) Zeitversatz. Dieser muss irgendwie ausgeglichen werden.
Abwehr Controller
Bodenstations-Controller, der Energie-Levels sendet, Treffer empfangen und schießen kann.
Achtung: Es wird eine Soft-Serial verwendet.
Wichtige Befehle für SlaveRxTx Controller (_ durch Node-ID ersetzen):
- scd : c = Primärwaffe Triggern (0xa8), d = Sekundärwaffe triggern (0xac) (genutzt bei Abwehrtürmen)
- _eNxx : xx Energielevel für Objekt N (0..7) übertragen
Virobi Controller
Angebunden über NRF24L01+. Im Grunde wie bei Space'n'Lasers 2.0, leitet neben "a" und "A" nun auch Energie-Level weiter.
Waffen Controller
Arduino, direkt über USB mit Gamemaster verbunden.