IRC Logs for #zfx


2024-11-15

07:17:01 joeydee joined the channel
07:17:24 joeydee: moin
07:51:44 Biolunar: moin
08:18:11 Schrompf joined the channel
08:23:15 Schrompf: moin
08:24:16 Hannes joined the channel
08:24:24 Hannes: aloha
08:28:00 Schrompf: das ist jetzt nur deine moinung
08:31:13 joeydee: Ich habe diese Woche an der Maussteuerung gearbeitet, durch die Szene klicken und ziehen und so. Weiß nicht wieviele Stunden. Auf dem Papier sah immer alles ganz logisch aus, aber gab immer Fälle wo es selbst in der Theorie dochh nicht sauber funktionieren konnte. Aber so gaaanz langsam bin ich zufrieden.
08:34:21 Schrompf: oh wow, so richtig iteriert!
08:34:55 joeydee: UND ich habe die Tage das Rendersystem speziell für das Projekt überarbeitet. Also nur im Testbed, muss es noch im Projekt implementieren.
08:35:28 Schrompf: na dann husch husch raus ausm testbed!
08:35:55 Schrompf: ich meete noch, dann geh ich in die schule zur vorlese-stunde, und ab heute mittag hab ich dann hoffentlich zeit für erstes gameplay
08:36:17 joeydee: Je Chunk gibts einen Drawbuffer, 20 wurden immer gecached, 4 gerendert, und wenn ein neuer benötigt wird wird der Drawbuffer neu geschrieben. So wars bisher.
08:37:03 Schrompf: und jetzt? das klingt doch sinnvoll, wenn die chunks groß genug sind
08:38:30 joeydee: Für kleine Projekte mit einfachen Meshes läuft das auch zügig. Skaliert natürlich nicht gut je komplexer die Meshes werden, da werden die Chunkdaten die im Zweifelsfall neu angelegt und auf die Graka geschoben werden müssen riesig. Und Mesh-Instancing wollte ich nicht.
08:39:56 joeydee: Und jetzt will ich nur einen einzigen statischen Drawbuffer für alle Chunks. Wo einmal alle potenziellen Bäume, Gräser und alles überhaupt drin sind.
08:40:16 Schrompf: ahso, du haust alle statischen meshes einer gegend in einen riesigen buffer?
08:40:18 Schrompf: warum?
08:40:33 Schrompf: und damit brauchst du doch auch einen riesen-shader
08:40:44 Schrompf: und dein riesiger-upload-problem wird noch größer
08:43:28 joeydee: Der Buffer ist für alle Chunks gleich, der bleibt unberührt. Die Verts haben nach Mesh-Zugehörigkeit einen Index. Ich schiebe dann ein Array hoch mit neuen Positionen etc. die dann je Index angewendet werden. Eine Art Instancing, aber die Meshes die drinliegen sind völlig flexibel, müssen keine Duplikate sein.
08:44:11 joeydee: Also ich muss dann je Chunk nur noch ein Array speichern. Sachen ausblenden kann ich so auch (auf 0 skalieren).
08:45:52 joeydee: Also im Testbed sah das gut aus ;) bin dann mal gespannt ob ich am WE fluche ;)
08:48:25 Schrompf: also einen riesen buffer mit den mesh-daten aller instanzen? und du nummerierst die einfach durch, dass sich sich dann ihre instance properties (wie transform-matrix) aus nem array ziehen?
08:51:55 joeydee: ja. Instancing wäre: Ich habe ein einziges Baum-Modell, schiebe den Buffer einmal hoch, und für den Drawcall dann ein Array mit z.B. 100 Transformations für den Chunk. Ich mache: Ich habe schon 100 Bäume im Buffer (alle im Origin, alle mit Index im Vertex), und schiebe auch ein neues Array hoch, eigentlich gleiche Größe wie beim Instancing, nur dass meine Meshes alle individuell anders sein können.
08:52:40 Schrompf: und wenn du nur 50 bäume brauchst, drehst du die restlichen positionen auf NAN
08:52:57 Schrompf: (was der offizielle weg ist, die triangles vorm rasterizer zu droppen)
08:52:59 joeydee: In dem Fall hieße das, jeder Chunk kann max. 100 Bäume haben, aber ich kann auch welche auf 0 skalieren.
08:53:24 Schrompf: ich muss los, sorry. 2h
08:53:32 joeydee: Ach, NAN geht auch? :)
08:53:37 Schrompf: google mal nach dem NAN, das ist etvl. der bessere weg
08:53:43 joeydee: ok thx
08:55:09 joeydee: (Ich werde das in dem Game sowieso nicht ausnutzen, meine Buffer für das gezeigte sind für heutige Tage eigentlich winzig, aber es ist spannend das so umzubauen)
09:08:15 joeydee: Ich bin da natürlich an das Limit der Max. Arraygröße gebunden, aber für den Zweck ist das ne feine kleine Lösung. Zumal ich keine Lichter oder andere Daten hochschieben muss. Und mir bei Bedarf auch mehrere Drawcalls gönnen könnte.
09:53:57 Hannes joined the channel
11:29:52 Schrompf: joeydee... ich will dir ehrlich nicht dein zeugs zerreden, aber: warum haust du die dinger nicht einfach als einzelne drawcalls raus und nennst es einen tag?
11:30:01 Schrompf: geht gut für bis zu 10k objekten heutzutage
11:53:22 joeydee: Wahrscheinlich denk ich einfach nur zu klein.
11:54:16 joeydee: Weiß nicht woran es lag dass ich mal zu viele Drawcalls vermeiden wollte
11:55:59 Schrompf: weiß ja nicht... wenn du ne große spielwelt hast, kann es sich lohnen, die chunks in nem separaten thread zu konsolidieren, anstatt jedes frame die liste der 500k bäume durchzugehen und die sichtbaren 30 zu ermitteln
11:57:14 Schrompf: wenn's hingegen nur 5k bäume sind... tja. plumpe schleife, nächstes problem, 0.2ms vom framebudget
12:02:29 joeydee: Irgendwie war das bei mir immer so, dass ich zu viele einzelne Drawcalls teuer spürte. Aber stimmt, ist auf dem aktuellen Rechner wahrscheinlich völlig irrelevant in meiner Größenordnung.
12:03:09 Schrompf: Ja, ich vermute. Hab kurz noch überlegt, ob der C#-Wrapper so hart reinhauen könnte, aber ich bezweifle es.
12:03:28 joeydee: ne sicher nicht
12:03:30 Schrompf: Also wird's wirklich einfach ein altes Gefühl von "das sollte man vermeiden" sein, das heutzutage nicht mehr so pressierend ist
12:05:10 joeydee: Wahrscheinlich. Das Gros ist im Moment aber sowieso nicht das Rendern, sondern die Steuerung zu polishen.
12:05:23 joeydee: Heute abend gehts da wieder ran.
12:06:07 Schrompf: dazu:
12:06:14 joeydee: Im Thread hatte ich ja auch geschrieben woher die Renderidee ursprünglich kam: Vom Char-Rendering.
12:06:46 Schrompf: was, wenn du die klickposition nur beim MouseButtonDown bestimmst und danach die Zielpositionen nur auf der gedachten Ebene durch diese Stelle rechnest
12:07:16 Schrompf: auf nem größtenteils ebenen Boden wäre das bequem, nachvollziehbar, und ist absolut sicher gegenüber plötzlich im Vordergrund auftauchenden Hochebenen
12:08:36 joeydee: Natürlich war ich so weit schon, für geneigte Flächen war das ein (kleines) Problem, aber ich habe jetzt morphende Planes dazu.
12:09:14 joeydee: Also Ebene der Klickposition wird nach und nach der Lage an der Fußposition angepasst.
12:10:06 joeydee: Und der laufenden Höhe angepasst. Mache ich das direkt (Ebene and der Fußposition) gibts harte Probleme an Kanten.
12:12:11 joeydee: Nervig war vor allem aber immer Lauf-Sprung-Sequenzen, da möchte ich jeden Zusatzklick vermeiden.
12:13:28 joeydee: Also man zieht ihn wohin, lässt los, klickt ne andere Ebene für Sprung, und soll die Maustaste gedrückt halten können um direkt weiterzulaufen.
12:13:55 joeydee: Nur wenn der Mausray eben noch ganz in der Nähe des Chars war, ist er nach dem Kameraschwenk ganz woanders.
12:14:27 Schrompf: tja, ich sehe, du bist schon weiter
12:15:20 joeydee: Aber auch da hab ich ne Lösung, ich hab nen Catchradius, ist der Cursor plötzlich außerhalb, muss ich den Char dort wieder "abholen", aber muss nicht neu klicken.
12:17:02 joeydee: Noch was ist: 2 Blöcke auf gleicher Ebene, mit Lücke. Ziehe ich den Cursor drüber fällt er rein (soll auch so). Klicke ich neu, kann ich einen Sprung auslösen. Wäre intuitiv. Aber macht er natürlich auch auf normaler Ebene, wenn ich einfach nur zum Laufen neu ansetzen will, gar nicht springen.
12:18:26 joeydee: Also werde ich u.a. bei Klick Entfernung, Höhenunterschied und Geländeverlauf mit einbeziehen müssen, ob er springen oder gehen soll.
12:19:19 joeydee: Bei Klick immer springen ist nervig. Auf einer Ebene nur bei Doppelklick springen, sonst gehen, führt auch zu vielen Unfällen.
12:20:37 joeydee: Ich *könnte* natürlich auch Tasten einsetzen, aber sehe es als Herausforderung :)
12:21:56 Schrompf: hab mich tatsächlich auch schon gefragt, warum Du auf Klicksteuerung bestehst :-)
12:22:09 Schrompf: mit WASD kriegst Du potentiell auch GamePad geschenkt
12:22:23 Schrompf: aber so klassische Diablo-Steuerung ist auch cool
12:22:35 Schrompf: und die hatten das Problem nie, weil es in den Diablen immer bügelflach war
12:23:25 joeydee: Im Hinterkopf ist Point'n'Klick-Adventure (wo es aber Pathfinding gibt), aber das zu verhochzeiten mit nem Platformer.
12:23:50 joeydee: Für euch bau ichaber evtl. sowieso noch WASD ein.
12:24:18 joeydee: Ist dann nur ein anderes Spielgefühl. Mit den Sprüngen weiß ich dann halt nicht.
12:25:12 joeydee: Aber schwer zu erklären ...
12:30:43 joeydee: Ich glaube, wenn ich da erstmal die richtigen Context-Cursorsymbole einbaue was in bestimmten Fällen geschehen wird, wird die Maussteuerung ganz cool und auch leicht erlernbar.
14:02:30 Essex20 joined the channel
14:04:18 Essex20: Halloooouuuu
14:34:07 Essex20: Ersma was futtern
14:51:21 Schrompf: schmecken lassen
14:51:54 Schrompf: kind war heimgekommen. bissl haushalt, bissl sozial, kind wollte kurze haare haben, als sie dann welche hatte, hat sie losgeheult, dass sie das jetzt doch nicht mehr kurz haben will
14:52:04 Schrompf: und nun mit aufgewärmtem kaffee zurück am rechner
14:55:33 Hannes joined the channel
15:50:08 Hannes: klebst du die haare wieder an?
15:53:32 Schrompf: du musst mir schon die chance zur antwort geben :-(
15:54:06 Schrompf: hab einfach den kompletten kopf in epoxidharz eingegossen. atmen ist was für loser
16:02:18 Schrompf: nein, wir trösten sie, und bestätigen sie, dass das jetzt auch keine katastrophe ist
16:02:33 Schrompf: und dann hat sie sich beruhigt. und in ein paar monaten isses wieder rausgewachsen
16:02:58 Schrompf: das kind hat hammer-haare, ich mit meinem mittvierziger metaller-restegras bin neidisch
16:18:36 Essex20: Das erklärt dann wahrscheinlich auch, wo die abgeschnittenen Haare hingehen werden ;-)
17:59:31 Essex20: So, nachdem ich eben meinen Tiefpunkt überwunden hab, Zeit für etwas Produktives
18:01:27 Essex20: wtf youtube... mein firefoy hängt bei nem stream, ich kann nichts mehr machen, nicht mal neu laden, der hat 16 prozesse gestartet und hängt bei 3gb ram
18:01:35 Essex20: 25% cpu auslastung von 16 kernen
18:01:36 Essex20: WTF
18:02:44 Essex20: das moderne web kotzt mich so an
18:03:16 Essex20: die tage auch, hab ich was nachgeschaut wegen css... und die seite hatte eine DREI MEGABYTE komprimierte CSS geladen...
18:03:32 Essex20: 3 MB reiner text.. das ist doch wahnsinn
18:10:51 Essex20: Merke, wenn du ne größere Änderung machst und ne fette CSV erstellst, mach kein ordinäres git diff in der Konsole... sonst siehst du nur noch grüne zahlen '-)
18:41:35 Schrompf: sorry, dass ich Deinem Gewetter nicht angemessen Aufmerksamkeit schenke, aber ich hab Familie und Dinge zu erledigen
18:41:51 Schrompf: Aber Du und Dein TaskManager, ihr werdet gute Freunde bleiben :-)
18:42:05 Schrompf: ja ne spaß. bin irgendwann ab 21 uhr wieder da, und dann wird ein Inventar gebaut
18:43:17 Essex20: :-)
18:43:38 Essex20: Mir reicht es schon, dass ich mich hier ausventilieren kann, unabhängig von der Aufmerksamkeit :D
18:43:46 Essex20: Und bis später :-)
18:44:30 Essex20: Ich weiss auch nicht, was mich geritten hat das Windows zu booten. Aber kaum bin ich ne Weile da drin krieg ich schon wieder das Kotzen. Zeit zum Umbooten
19:06:56 joeydee joined the channel
19:07:15 joeydee: moin
19:09:32 Essex20: Ah, die Spätschicht
19:10:44 joeydee: Die Nerdschicht, die sonst keine Freunde hat und Freitagabend zuhause am PC sitzt.
19:11:38 Essex20: Welcome aboard, Sir!
19:13:25 joeydee: Morgen muss ich auf Geburtstag. Iiih, Menschen.
19:13:40 Essex20: ich auch, babba wird 70 :-)
19:13:54 Essex20: Hab eben noch nen Kuchen gebäckelt :-)
19:20:28 joeydee: Bei mir ne Freundin, wird etwa halb so alt :D
19:50:45 Essex20: Aber danach hab ich dann Zeit und kann das ganze Wochenende durchknüppeln, wupp wupp. Auch nächste Woche wird es entspannter
19:53:52 Essex20: Visual Studio Update... da steht explizit, dass es automatisch geschlossen wird.. bullshit, ich bekomm nen fehler, dass devenv noch läuft und muss es selbst schliessen
20:03:25 Hannes joined the channel
20:06:01 Essex20: Uh, langsam wird's hier kuschelig
20:06:30 Hannes: Herzlich willkommen im Wochenende
20:18:47 Essex20: Hoch die Hände, Wochenende :-)
20:25:30 Schrompf: Hände hoch! Ende Woch'
20:36:22 Essex20: Frauen und Rinder zuerst
20:47:14 Schrompf: :-D
23:22:22 Schrompf: jaja, verstanden. ich geh auch