• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[Aufgabenstellung] Programmierwettbewerb Nr 4

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Perlin-Noise sieht interessant aus. Nur die Implementierung und Übersetzung der Algebra dahinter ist für mich ein bömiches Dorf. Hab schon gegoogelt und Libs und Lösungen gefunden, aber das Verständnis für die Umsetzung fehlt.

Aktuell ist es etwas anders gelöst, mit einer abstrahierten, aber ebenfalls zufällig generierten Landschaft:


Ist nur zu sehr zufällig, als dass man irgendwie gewichten kann wie die Punkte für eine Landung verteilt werden.

Hier ein Update, man kann zwischen beiden Maps (theoretisch) wählen:


Quelle, aber modifiziert:
https://codepen.io/Tobsta/post/procedural-generation-part-1-1d-perlin-noise
 
Zuletzt bearbeitet:

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Folgend das Video mit Optionen in Aktion:
Ist glaube ich aber auch vorerst vorletzte bis letzte Video.



Es fehlen noch schöne "Win" und "Lose" Ereignisse, die würde ich noch einbauen, ansonsten ist das Projekt zu 95% fertig.

Der Quellcode findet sich hier: https://github.com/jrie/moonlander

Edit:
Win and Lose Screens sind implementiert und ein verbessertes Design (weg vom grauen Hintergrund!).
Eine Einreichung bzw. eine Score fehlt noch, hatte überlegt das nicht über den Landeplatz zu regeln, sondern eher über nicht verbrauchten Sprit (Effizienz) und andere Startbedingungen die das Spiel erschweren könnten.

 
Zuletzt bearbeitet:

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Ahoi, jetzt auch als Live Version online direkt spielbar: https://jrie.github.io/moonlander/
Ja, es fällt da ein Raumschiff von oben nach unten. Aber sobald ich eine Taste drücke, schmiert regelrecht mein Browser ab, da vermutlich übermäßig viele Partikel simuliert werden, wenn ich mich nicht täusche. Ist ein Firefox.
Edit: Es ist unabhängig von der Partikelanzahl, nach wenigen Sekunden hängt das Spiel regelrecht.

Aber lob dafür. Du hast im Endeffekt alle meine Einstellungsmöglichkeiten bei dir irgendwie integriert und dazu noch was ansehnliches gebaut. Respekt dafür. Ich werde zwar meine Version hier auch posten / hochladen, aber die ist nicht mehr mit deiner zu vergleichen, allerdings ist meine, wie schon mehrfach von mir erwähnt (ja, ich wiederhole mich ab und an mal), unfertig und wird es ziemlich sicher auch bleiben.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
@Roin: Frame drop hatte ich erst, wenn man auf die Höhe der Landschaft kommt, dabei wird eine Kollisionsabfrage aktiv - die kann je nach Terrain sehr viel Leistung ziehen.
Falls es nicht spielbar ist, der einfachheit halber das "Spitze Terrain" wählen, dann sollte auch die Systemlast massiv heruntergehen. Ist aber nur eine Vermutung woran es liegen könnte.

Falls dich die Details interessieren, du kannst mit dem Performance Tab in den Firefox Developer Tools die Performance aufnehmen und dann siehst du genau wie viele Frames per second gerendert werden können.
Im Optimalfall ~40-60 pro Sekunde. Ich muss aber auch sagen, die checkCollision - Funktion verursacht viel Systemlast, könnte man sicherlich aber auch noch beschleunigen, falls dass das Bottleneck ist.

Aktuell "scant" die Funktion 4 Hitboxen am Raumschiff um die Kollision/Landung auf dem Terrain zu analysieren. Und das kann recht viel Performance kosten. Das hatte ich stellenweise auch in meinem Test und habs dann minimal verbessern können. Wobei, da ist noch Luft, so das wirklich nur die "Randpixel" der Hitboxen gescannt werden, nicht der gesamte "Inhalt" - weil der eigentlich uninteressant ist....

Edit: Habe das drawLanderSVG verbessert, nun werden die Hitboxen nur ein einziges mal erstellt und nicht bei jedem Aufruf der Zeichenfunktion des Landers.
 
Zuletzt bearbeitet:

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.728
Ort
in der Zukunft
Also bei mir läuft es (am Handy...) man kann nur nicht steuern *g (klar Handy war nun auch nicht eingeplant)...
Aber das fallende Raumschiff schaut schick aus ;D

Und explodiert so schön :beer:
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Habe das drawLanderSVG verbessert, nun werden die Hitboxen nur ein einziges mal erstellt und nicht bei jedem Aufruf der Zeichenfunktion des Landers.
Das hat keine Verbessung gebracht. Nach etwa 3 Sekunden nehmen die Grafiken übermäßig viel Ressourcen in Anspruch, so als wenn du einfach immer nur weitere Bilder obendrüber legen würdest, ohne dass du die alten zuvor beseitigst.
Weder spitzes Terrain noch reduzierte Partikel bringen da eine Besserung, vermutlich müllst du den DOM mit deinen alten Grafiken voll oder sowas und der Firefox optimiert das nicht von alleine.

Es geht halt auf unter 5fps runter.

Potentiell könnte an irgendeiner Stelle dein dc Objekt löschen oder so weiterhelfen, wo du einfach das Ding vor dem neuen Zeichnen leerst oder so. Oder ein "neues" erstellst und dann wenn alles in diesem Vorhanden ist, an Stelle des alten anzeigen lässt. So hast du auch weniger / keine Verzögerung zwischen Löschen und Anzeigen.
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
@darksider3: Mit Chrome funktioniert es ohne Probleme. Mit Firefox 66 (64 bit) allerdings nicht. Und sonst ist mein Rechner eigentlich ziemlich potent. Also Arbeitsspeicher und Co. hat der auf jedenfall genug.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
@Roin: Ich verwende Firefox Version 66.0.1, damit funktioniert es bei mir.

Am einfachsten zu Troubleshooten wäre es, wenn du 3-4 Performance Aufnahmen erstellen, speichern und hochladen würdest. - Diese kann ich dann importieren und feststellen, wo die Performance Einbrüche herkommen.

Zu deiner Frage, Grafiken werden keine gecached, man kann "optional" das Terrain als Bild speichern lassen, aber Lander SVG, Terrain werden nur einmal geladen und angelegt. Andere Grafiken werden "on the fly" gezeichnet - und das Canvas "cached" auch nicht.

Und letzte Frage, bist du unter Windows oder Linux?
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
Ich bin unter Windows unterwegs.

Aber ich sehe es richtig in deinem Code, dass du einfach immer wieder eine deiner draw() Funktionen aufrufst und mehr Elemente reinmalst?
Wie nehme ich ne Performance-Aufnahme auf?

Edit sowas?:Anhang anzeigen profile.rar
Ich habe die Aufzeichnung gestartet, die Seite neu geladen und ein paar Sekunden aufgezeichnet. Das sollte ja wohl reichen, um zu erkennen, was da passiert ist.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
@Roin: Sagen wir so, [kw]clearStage()[/kw] überschreibt alle Pixel mit einer Hintergrundfarbe. Und die globalComposit-Methode des Cavas ist immer im Default ("source-over") ohne Änderungen. Werden also 1:1 übernommen, ohne weitere Berechnungen.

Die Performance Aufnahme kannst du in den Developer Tools (F12) dann "Laufzeitanalyse" und dann "Laufzeitanalyse starten", aufnehmen.

Wenn du eine Aufnahme aufgenommen hast, durch manuelles "starten" und "stoppen" (nach Aufprall des Landers) - kannst du diese dann "Speichern" als "profil.json" . - Am besten du machst zwei Aufnahmen, mit und ohne Interaktion mit entsprechenden Namen.
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
  • Thread Starter Thread Starter
  • #56
@theSplit:

Ich habe es gerade unter W10 FF66.0.3 in 4 Tabs zeitnah gestartet und es stürzt nicht ab, es ruckelt nicht und der Lüfter dreht auch nicht hoch.

Ich fange jetzt auch mal langsam an. Allerdings bedeutet das erst einmal Gimp. Sound lasse ich erst mal weg. Das gehört ja nicht zum Wesentlichen. Das kann man immer noch machen.

Finde ich bei Dir keine Winkelbeschleunigung oder hast Du die gar nicht implementiert?
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
@Roin: Also, das ist sehr komisch... ich hab einmal getestet mit "Canvas" eingeschaltet und ausgeschaltet in den Dev-Tools.

Und eine Aufnahme sieht bei mir so aus: Anhang anzeigen profile_test.json.rar

Was ich festgestellt habe, entweder hast du, weil die Garbage Collection so oft greift, andere(?) bzw. besondere Einstellungen in [kw]about:config[/kw] - und dann nach ".gc" suchen (siehe Screenshot). Oder irgendwas was die Garbage Collection triggert?

gc_options.png

Das zweite was ich festgestellt habe, wenn Canvas in den DevTools aktiv ist oder eingeschaltet, hat es bei mir auch geruckelt. Deaktivieren und den Browser neu gestartet -> Ruckelfrei.

Ansonsten bin ich etwas überfragt aktuell, woran es liegt.

--- [2019-04-18 17:47 CEST] Automatisch zusammengeführter Beitrag ---

@KaPiTN: Endlich! - Ich freu mich schon auf deine Lösung. :)

Aber eine Winkelgeschwindigkeit ist nicht integriert, nein, hier gehe ich nur um den Faktor 1 hoch oder runter, je nach gezündetem Triebwerk (links, rechts)
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
@theSplit: Das hast du ja super hinbekommen.


Winkelgeschwindigkeit gibt es bei mir auch nicht, das ist frühestens für die "extended Version" geplant, die aber wohl kaum innerhalb des Zeitraums fertig wird. Aktuell hänge ich ein bisschen bei der Kollisionserkennung mit dem Boden fest. Ich habe mir da etwas zu viel vorgenommen, eventuell wechsle ich noch auf ein einfacheres Modell. Wenn ich das über Ostern noch hinbekomme versuche ich noch zumindest so viel Grafik einzubauen dass es eingermaßen spielbar wird. Ansonsten bleibt es bei "Kreis landet auf Ebene".
 

Roin

Freier Denker

Registriert
22 Juli 2013
Beiträge
581
entweder hast du [...] besondere Einstellungen in [kw]about:config[/kw] - und dann nach ".gc" suchen (siehe Screenshot).
gc.PNG
Ich habe allerdings den FF auf einer SSD installiert und da irgendwas mal deaktiviert, dass der nicht ganze Zeit seinen Müll auf die SSD schreibt, sondern im Arbeitsspeicher lebt. Aber sonst... Keine Ahnung.
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
Kurzes Update von mir:
- Kollisionserkennung funktionert eingermaßen
- Planetenoberfläche wird aus einfachen Vierecken zusammengesetzt
- Eine Raumschiffgrafik gibt es schon mal


Es sind nur noch ein paar kleine Schritte zur Minimalversion:
- Schönere Grafik für den Boden
- Schönere Grafik für den Antrieb
- Ein paar Änderungen an den Sieg/Niederlage Bedingungen
- Dynamische Planetengenerierung (ich habe aber schon eine Idee wie ich das mache)
 
Oben