Realspace

Übersicht Sonstiges Projekte

Neue Antwort erstellen

Silver_Knee

Betreff: Realspace

BeitragFr, Apr 10, 2015 1:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Realspace - Alpha 09.04.2015

Realspace ist ein MMO-Space-Shooter: Man fliegt mit Raumschiffen umher, sammelt herumfliegendes Zeug ein, treibt Handel, rüstet sein Schiff auf, geht auf Mitspieler los und baut schließlich eine immer größer werdende Flotte auf. Ob man dabei lieber friedliche Wege geht, selbst eine Handelsinfrastruktur aufbaut und Waffen nur zur Verteidigung nutzt oder eher auf Konfrontation mit seinen Mitspielern aus ist, ist einem weitestgehend selbst überlassen.

Ich berichte seit 2007 über das ständige Auf und Ab bei dem Projekt, doch heute sind wir an einen Punkt gekommen, bei dem wir etwas vorzeigen können:

  • Eine Raum-Station steht bei "Earth - L1" bereit, bei der man eigene Angebote einstellen kann und die einem Erz abkauft und Waffen verkauft
  • Erz abbauen, also auf Asteroide einschießen bis sie kaputt gehen.
  • Frei fliegendes Erz einsammeln
  • Auf andere Schiffe schießen, deren Schilde runterballern, Schaden zufügen und schließlich zerstören
  • 4 Sektoren, die alle verschieden sind und zwischen denen man warpen kann
  • Eine GUI mit überlappenden, in der Größe anpassbaren, transparenten Fenstern


Die Steuerung
..ist nicht ganz so intuitiv und wir sind durchaus für Ideen dankbar.

W, A, S, D - Vor, Links, Rückwärts, Rechts
Links-SHIFT, Links-STRG - Hoch, Runter
Mausrad: Trägheitsdämpfer
Zitat:
Links oben steht der Gang des Trägheitsdämpfers: 0 ist eher zum Rangieren gedacht, bei 3 ist der Trägheitsdämpfer abgeschaltet und man bewegt sich schwerelos.
Zum Bremsen in den 0. Gang schalten und gegen die Flugrichtung beschleunigen. Wer dringend weg muss, ist im 3. Gang gut beraten. Einsammeln von einzelnen Erzbrocken ist im 2. Gang schon ziemlisch schwierig; da sollte man besser niedrigere Gänge wählen, da man sonst einfach daneben fliegt.

Linksklick: Schuss
Mausbewegung: Linksherum, Rechtsherum, Aufwärts, Abwärts drehen
Q, E - Gegen den bzw. mit dem Uhrzeigersinn drehen
F - Suchmodus: Frei fliegendes Zeug wird grün markiert, Schiffe rot, Schüsse gelb, ein Pfeil über dem Schiff zeigt auf die Mitte des Sektors (Schwerkraftzentrum)
L - Ansicht wechseln: Cockpit <-> Außenansicht
LEERTASTE - Ansicht einfrieren (Beim Navigieren auf den Fenstern stört es schon, wenn das Raumschiff dabei frei dreht)

Fenster:
B - Inventar
M - Schiffliste
P - Sektorwechsel

Die erste Mission
Natürlich kannst du machen, was du willst, aber mit deinem ersten Raumschiff ohne Waffen und ohne Geld herumzufliegen ist doch eher langweilig. Daher würde ich folgendes Vorschlagen:

  • Nach dem Einloggen den ZeptorLight auswählen
  • Erst mal mit der Steuerung anfreunden
  • P drücken und entweder "Asteroid Belt - Massalia" oder "Earth - L3" wählen
  • Warten bis der Warp den Sektor fokussiert hat und er grün wird (oder ungeduldig klicken und irgendwo im Nirgendwo raus kommen. Der Warp wird dich irgendwo innerhalb des Kreises warpen.)
  • Frei fliegendes Erz (kleine braune Klötzchen) einsammeln, mit B das Inventar betrachten.
  • Zurück zu "Earth - L1" warpen
  • Gegen die Station fliegen um ihren Shop zu öffnen.
  • Auf "My Offers" ein Angebot für dein Erz einstellen. Das gibt's wie Sand am Meer. Mehr als 4 Credits pro Erz wirst du nicht verlangen können.
  • Über Geld freuen, wenn die Station einem das Erz abgekauft hat.
  • Auf "Shop" klicken und 4 GL20 kaufen. Sollten keine mehr da sein, hat die Station eventuell nicht genug Erz um neue GL20 zu produzieren. Dann einfach noch mehr Erz besorgen und verkaufen.
  • Auf "Equipment" klicken und die GL20 anwählen
  • Auf "ATTACH" klicken und anschließend einer der weißen Punkte an dem Vorschau-Schiff anwählen
  • Alle GL20 ausrüsten.
  • Aus dem Sicherheitsradius der Station fliegen und rumballern.
  • Der Spieler "World" hat nur die Besonderheit, dass er Unendlich viel Geld hat. Seine Schiffe kann man durchaus angreifen und zerstören...


Download (7,8 MB)

user posted image
Mehr Screenshots am Ende des Worklog Posts...

Alpha-Zeug
  • Anmeldung ist unverschlüsselt und registriert wird man automatisch wenn man einen Benutzernamen eingibt, der noch nicht vergeben ist. Passwörter haben keine Einschränkung und werden nirgends gespeichert. Zwischen den Feldern kann man nur mit TAB wechseln. Wenn der Server heruntergefahren wird oder abstürzt, ist alles weg.
  • Beim Betreten eines Sektors kann es für alle Spieler spürbar zum Ruckeln kommen. Der Server arbeitet Single-Treaded und ziemlich Synchron.
  • Der Server läuft für den Moment im Debug-Modus. Daher kann es generell etwas langsamer sein als später. Grund dafür ist, dass eventuell noch nicht alle NullObject-Probleme adressiert wurden und so nur die aktuelle Aktion abschmiert (z.B. Kaufen, Einsammeln etc.) und nicht der ganze Server, sollte ein Problem auftreten.
  • Keine Scrollbalken für Listen in den Fenstern
  • Keine Planeten, keine Sonne *lol* Überrascht wurde ich von der Tatsache, dass diese Dinger im Vergleich zu Raumschiffen erstaunlich groß sind. Dann ist das mit der Sichtweite gar nicht mehr so trivial und für andere Modelle ist im Moment die Verbindung Cinema4D<->MiniB3d nicht harmonisch genug. Daher auf die nächste Version verschoben.
  • Kollision funktioniert gut bei stehenden Objekten. 2 bewegende Objekte sehen eher alt aus.
  • Ziemlich viel kleines Zeug, wie das Schild, dass nach ner Kollision aufblitzt aber nicht wieder verschwindet.
  • Fenstermodus 800 x 600 hardcoded.
  • Mac und Linux Version bei Bedarf


Viel Spaß und wenn ihr Bugs bemerkt, gerne hier rein oder ins Worklog.
Silver_Knee (Code) und Evolver (Modelle/Grafiken)

Holzchopf

Meisterpacker

BeitragFr, Apr 10, 2015 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir stürzt das Spiel immer wieder ab. In unregelmässigen Abständen. Gerade eben stürzte es ab, als ich das Schiff wählen wollte Sad
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Silver_Knee

BeitragSa, Apr 11, 2015 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie stürzt es ab? Kommt ein EXCEPTION_ACCESS_VIOLATION, Connection Lost, bleibt das Spiel hängen oder was ganz anderes?

user posted image

Der Server scheint auch Probleme zu haben. Evo musste ihn wohl auch zwischendurch neu starten. Dabei kann es zum Einfrieren oder Connection Lost gekommen sein. Ich probier selbst noch mal die Mission mit dem zip durchzuspielen.

Wie war sonst dein Eindruck? Oder kamst du nie so weit, irgendetwas zu machen?

Holzchopf

Meisterpacker

BeitragSa, Apr 11, 2015 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Spiel blieb einfach hängen.

Ich kam nie besonders weit, deshalb gibt's nicht besonders viele Eindrücke Wink Die Steuerung ist nicht 100% mein Ding. Aber fast. Mich hat eigentlich nicht viel gestört. Wäre aber schön, wenn man sie selber einstellen könnte; ich fänd's angenehmer, wenn Rollen auf A / D wäre. Und wenn beim auftauchen eines Fensters automatisch die Steuerung eingefroren wird.

Planst du, ein Tutorial einzubauen? Also eines, wo auf dem Bildschirm eingeblendet wird, was zu tun ist?
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Mathias-Kwiatkowski

BeitragSa, Apr 11, 2015 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
benutzt ihr MT auf dem server?

verändert ihr daten worauf das main TH zugreifen will? weil sonst würde der server nich abschmirren


(ich mute immer das enemy bevor ich es verändere... dies mach ich bei meiner V2 bei meiner V1 gabs mutex lücken darum auch instabiel... )

hinzu kommt via millisecs ermitteln... ist das programm zu lang an so bekommste eine überdimensionale zahl. (logisch)
heisst ein auto cut des server einbauen

z.b. server bleibt für 24 std an. dann öffnet er ne bat datei und beendet
in der bat datei habe ich ein timer von 10 sek drin, danach wird mein server erneut hochgefahren. und alles funtzt....

wieviele dinge es gibt die zu beachten sind beim server ... ist mir auch erst mit den jahren aufgefallen....

aber derzeit bin ich froh ne stabel version zu haben. Smile mfg
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Evolver

Betreff: Zu wenig Arbeitsspeicher

BeitragSo, Apr 12, 2015 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
halli hallo,
ich habe mal den RAM-fresser nun für den Alpha-test ausgeschaltet! hoffe es läuft nun etwas besser!

LG
Space Threat-Ex-Entwickler, codename:RealSpace-Entwickler

Silver_Knee

BeitragSo, Apr 12, 2015 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@Holzchopf
Das einfach hängen bleiben lag an dem etwas instabilen Server und daran, dass der Client auch Singlethreaded ist. Bleibt dann socket.Write hängen, weil die Verbindung auf der Hälfte der Bytes stehen bleibt, dann hängt das ganze Spiel. Das Auslagern der Netzwerk-Sachen in einen eigenen Thread, der dann hängen bleiben kann, hab ich mir schon vorgenommen.

Die Tasten sollen natürlich in Zukunft anpassbar sein. Ein Optionsmenü ist ja noch nicht drin. Das kommt aber sicher.

Tutorial stelle ich mir im Moment in ein Missionssystem eingebettet vor:
Es gibt Missionen, wie Errungenschaften, wo steht, sammle 5000 Erz, kauf dir eine Knarre für den Schiff, Löse einen Kopfgeld-Auftrag, kauf dir eine Werft, baue eine Station... Belohnung für die Missionen kann man vielleicht mit der Monetarisierung verbinden. So.. man kann das ansonsten nur mit Echtgeld zu kaufende irgendwas auch durch das Lösen von Missionen erreichen. Das kann dann vor Pay-To-Win abhalten, weil quasi alles für alle erreichbar ist, nur zahlende User schneller vorran kommen. Und Kaufreitz besteht dann vor allem für treue, langfristige Spieler, denen die Missionen ausgehen und die eventuell, weil sie schon so lange spielen auch überhaupt Lust haben was zu bezahlen...
Die einfachsten Missionen können dann quasi ein Tutorial bilden, dass fließend in das Hauptspiel über geht. Sowas finde ich persönlich viel besser als ein "Sandkasten". Das Start-Schiff ist sehr klein und schwer zu treffen, daher gibt es kaum Gefahren für einen Neuen. Schiffe, die einen Shop haben, wie die Station bei der Erde haben ein offenes Schild und in dem Schild ist eine schussfreie Zone. Da ist man also schon im Hauptspiel und hat trotzdem nicht zu fürchten, direkt einen Spawnkill zu bekommen. Die Sammel-Missionen am Anfang, lassen einen mit der Steuerung üben und man hat auch einen Grund in der Spielewelt, warum man sie macht: Man ist Pleite und so kommt man ohne Waffen an Geld. Viel zu verlieren hat man am Anfang auch nicht, nur die Ladung auf seinem Schiff und die Zeit die man investiert hat. Geht das Schiff kaputt kriegt man halt ein Neues - ärgerlich aber keine allzu große Sache.
In z.B. Portal ist das super gemacht. Die 19 Testkammern als Tutorial gehen fließend in das eigentliche Spiel über. Stirbt man, landet man am Anfang der Kammer - kein großer Verlust. Da verliert man praktisch nur die Zeit. Das hat mir echt Spaß gemacht und die Grundidee dieser Herangehensweise würde ich gerne übernehmen.

Die Kopfgeld-Missionen sind quasi Missionen von Usern, die z.B. ein Schiff platt machen wollen und sich da viel Beute erhoffen oder einfach ihre persönliche Meinungsverschiedenheit mit anderen Usern haben. Wahrscheinlich brauch man auch noch so etwas Clans/Gilden/Allianzen/Gruppen die ganz offizielle Diplomatie untereinander haben. Die können dann auch Kopfgeld aussetzen und damit quasi unbeteiligte in ihren Krieg locken, was bestimmt geil wird Very Happy

Das mit den Fenstern und der Steuerung ist 'ne gute Idee Very Happy

@Mathias-Kwiatkowski
Server und Client sind Singlethreaded. Die Service-orientierte Architetktur würde es echt einfach machen, wenn es in bmax sowas wie synchronized wie in Java geben würde. Leider tut es das nicht und das bedeutet viel Schreibarbeit an jede Methode einmal LockMutex und UnlockMutex zu schreiben oder ich mache es gefährlicher und beauftrage quasi die aufrufende Methode den Mutex zu locken. Das ist dann richtig übel wenn man es irgendwo vergisst und da kein Try-Finally auch wenn man irgendwo was schmeißt. Außerdem weiß ich nicht wie viele Mutexe man so haben darf vom Betriebsystem her. Warscheinlich wäre ein Mutexpool sinnvoll aus dem man sich bedient... etwa BlitzMax: [AUSKLAPPEN]
Global map:TMap = New TMap
Global mutexPoolMutex:TMutex=CreateMutex()
Global pool:TList=New TList

Function LockObject(obj:Object)
mutexPoolMutex.Lock()
Local mutex:TMutex=TMutex(map.ValueForKey(obj)))
If Not mutex
mutex=TMutex(pool.RemoveFirst())
EndIf
If Not mutex
mutex = CreateMutex()
EndIf
map.Insert obj,mutex
mutexPoolMutex.Unlock()
mutex.Lock()
End Function

Function UnlockObject(obj:Object)
mutexPoolMutex.Lock()
Local mutex:TMutex=TMutex(map.Remove(obj)))
If Not mutex
Throw "WARNING: Possible race condition: Tried to unlock object that wasn't locked"
EndIf
pool.AddLast mutex
mutexPoolMutex.Unlock()
mutex.Unlock()
End Function


Das Problem mit Millisecs ist übrigens bekannt und wurde von BladeRunner hier behandelt. Ich habe (hoffe ich) an allen Stellen die Bitmaske wie empfohlen gesetzt. Dabei geht es übrigens nicht um die Laufzeit deines Programms sondern der Maschine auf der du bist. Die ist irgendwann länger als 2^31-1 Millisekunden an und dann bekommst du ein Problem.

Holzchopf

Meisterpacker

BeitragSo, Apr 12, 2015 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab's jetzt noch ein paar Mal versucht. Immer kurz nach dem Sektorwechsel bleibt das Spiel hängen. Werden da so viele Daten übertragen? Passiert das nur bei mir oder kommen andere auch nicht weiter? Dass eine BMax-Applikation bei socket.Write einfrieren kann, habe ich noch nie beobachtet. Fairerweise muss ich aber dazu noch sagen, dass ich immer nur mit Webservern kommuniziert habe, bei denen sowohl Anbindung und Software ziemlich sicher gut sind.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Evolver

BeitragSo, Apr 12, 2015 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Holzchopf hat Folgendes geschrieben:
Ich hab's jetzt noch ein paar Mal versucht. Immer kurz nach dem Sektorwechsel bleibt das Spiel hängen. Werden da so viele Daten übertragen? Passiert das nur bei mir oder kommen andere auch nicht weiter? Dass eine BMax-Applikation bei socket.Write einfrieren kann, habe ich noch nie beobachtet. Fairerweise muss ich aber dazu noch sagen, dass ich immer nur mit Webservern kommuniziert habe, bei denen sowohl Anbindung und Software ziemlich sicher gut sind.


bei mir meldet der Client auch immer (keine Rückmeldung), wenn mehrere spieler (reicht schon ein weiterer) online sind und irgendeiner ein Sektor Change macht... ist also "normal".. man muss nur warten... LANGE warten! dann fängt er sich irwann wieder
Space Threat-Ex-Entwickler, codename:RealSpace-Entwickler
 

Matthias

BeitragSo, Apr 12, 2015 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@Holzchopf
Nein du bist nicht der einzigste. Very Happy
Bei mir stürzt das Spiel auch hin und wieder ab.

Aber ich versuche es jeden Tag erneut, und hoffe das sich was verbessert. Laughing
Wie kann mann Ballern. Ich will doch nur ein paar Asteroiden kaputt schießen.
Eine kleine Waffe zu Anfang würde den kleinen Fighter gut tun. Wink


Mit den ganzen Sektoren find ich zu Anfang etwas verwirrend.
Eine Idee wäre für Geld durch den Verkauf von Erz Eintrittskarten für neue Sektoren zu erwerben.

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group