IRC Logs for #zfx


2024-03-19

01:15:43 dot joined the channel
07:14:39 joeydee joined the channel
07:14:47 joeydee: moin
08:18:19 Schrompf joined the channel
09:01:13 joeydee: Bin gerade am Überlegen ob/wie ich geschachtelte Ausdrücke zur Geometrieerzeugung am besten in C#-Code abbilden kann wie rotate(0,0,45) { cube(10,20,10) translate(15,0,0) { cube(5,5,8) } }
09:01:41 joeydee: Komme an begin(); end(); wohl nicht vorbei.
09:01:59 Schrompf: kann man das scopen?
09:02:26 Schrompf: In C++ würd ich ein State-Objekt erfinden, dass am Ende des scopes das end() automatisch aufruft
09:02:39 Schrompf: aber es gibt keine Konstruktoren in C#?
09:02:53 Schrompf: C# hat doch value types, die immer kopiert werden und nur in nem scope leben?
09:03:10 joeydee: Da bin ich gerade überfragt
09:04:19 joeydee: Ich weiß gerade gar nicht ob ich mit gechweiften Klammern Scopes generieren kann/darf, habe ich noch gar nicht probiert.
09:04:23 xq: gibt es als konstrukt
09:04:34 xq: using als Kw, IDisposable als klasse
09:04:50 xq: ja du kannst mit braces scopes generieren, bringt aber niy
09:04:57 xq: weil es kein raii ost
09:06:06 xq: using(ctx.Rotate()) { ctx.Cube(); using(ctx.Translate()) { ctx.Cube(); } }
09:06:20 xq: wenn ctx == this wirds natürlich kürzer
09:07:39 xq: am ende des using wird "Dispose" auf der value im using aufgerufen
09:07:47 xq: du kannst auch dort variablen parken
09:08:06 xq: using(var sub = Rotate()) ...
09:08:14 joeydee: Stimmt, using gibts ja auch noch. Hm, muss ich mal schauen ob die Notation dann lesbar bleibt.
09:08:53 xq: ich mein der unterschied zu openscad wäre halt dann literally "using()"
09:09:56 joeydee: ja, ich muss mal vergleichen ob das im Gegensatz zu begin/end wirklich ein Vorteil ist in der Syntax/Übersichtlichkeit.
09:12:37 joeydee: Weil prinzipiell geht das mit dem CSG-Scripten schon ganz gut :) https://www.phoximages.de/uploads/2024/03/i72037bj73ev.jpg
09:17:25 joeydee: generierender Aufruf: CSG wall1 = myWall(30, 20, "WD W"); CSG wall2 = myWall(40, 20, " WW W ");
09:17:43 joeydee: Und das Modul "wall" ist dann nur 20 Zeilen lang. Ähnlich OpenSCAD.
09:17:58 joeydee: "myWall" natürlich.
09:19:44 joeydee: Und aktuell nur mit Methoden-Punkt-Notation, da ich sowieso immer in absolute Geometrie umrechnen muss. Also z.B. wall = wall.subtract(windowCut.at(seg * i + (seg - 5) / 2, 0, 0)); wobei "at" transform ist.
09:35:39 xq: ja sehr geil :)
09:36:05 xq: ich hab vielleicht noch ne andere idee für dich :)
09:39:08 Schrompf: !kaffee
09:39:08 zfx-logger-v3: Command kaffee not found. Try "!help"
09:39:20 Schrompf: ok, stellt sich heraus, ich habe keine idee
09:39:54 Schrompf: oh doch, der neue PM hat einstandskuchen mitgebracht
09:40:21 xq: joeydee: https://bpa.st/TTKA
09:40:29 xq: !coffee Schrompf
09:40:30 zfx-logger-v3 gives Schrompf a cup of coffee!
09:40:51 Schrompf: ich bin sehr gespannt, wie der prozedurale meshgenerator wird. wäre sehr nützlich
09:40:57 Schrompf: !thanks
09:40:57 zfx-logger-v3: Command thanks not found. Try "!help"
09:41:58 Schrompf: input geht nich, oder? dann ist der using-style wirklich der hübscheste, finde ich
09:42:10 xq: wie meinste mit input?
09:42:22 joeydee: danke xq, schau ich mir an :)
09:42:29 xq: ach, ketzt
09:42:35 xq: ja, input ist openscad
09:42:41 xq: in lua wäre das fast legit :D
09:43:14 xq: https://bpa.st/B64A
09:43:17 xq: lua-code wäre das hier
09:43:37 xq: ich muss mal gucken, ob ich mein adventure-kram den ich gezeigt habe, weiter in Lua baue
09:43:45 xq: ich will eigentlich schon gscheides typechecking
09:43:49 xq: und das hab ich da leider nicht :(
09:44:03 xq: oder ich bau mir PlutoLÖVE
09:44:10 xq: mit https://pluto-lang.org/ statt Lua
09:45:55 Schrompf: ordentliches type-checking macht das leben echt leichter
09:46:47 Schrompf: weiß nich, ob es für einzeiler-adventure-logik nen vorteil bringt, aber da bin ich alter sack: ich mag das gefühl, dass es jemand merkt, wenn ich mist baue
09:50:15 xq: same
10:02:38 Hannes joined the channel
10:12:53 Schrompf: hannes! voxelt es noch?
10:14:06 Hannes: hat sich ausgevoxelt
10:14:25 Schrompf: schade :-(
10:14:28 Schrompf: kommst nicht weiter?
10:17:09 joeydee: "ordentliches type-checking macht das leben echt leichter" sag ich schon immer. Daher war für mich auch früher AS3>JS, auch wenn ich dadurch an eine Runtime gebunden war.
10:18:07 Hannes: voxel aus abgerundeten tiles sind irgendwie eine menge schreibarbeit und das model aufzubereiten auch
10:19:28 Schrompf: ja, das glaube ich gern. muss es denn echt gerundet sein?
10:19:54 Schrompf: wenn du erstmal Würfel machst, kämst Du sicher einfacher zum Ziel.
10:20:16 Schrompf: und mit was Laufendem fühlt es sich dann vielleicht auch besser an
10:21:42 Hannes: ich fange wieder einen sci fi dungeon generator an
10:22:52 Schrompf: ebenenbasierte dungeons? grid?
10:25:48 Hannes: ich hab mal wieder "Blame!" durchgeblättert und will sowas was ich in Monogame gemacht hatte wieder anfangen
10:26:52 Hannes: diesmal in godot. und für VR passt das auch besser als eine voxelwelt, finde ich
10:28:07 Schrompf: hm, scheichs hat von seinem ... ähm... Discovery oder so? Seinem Minecraft-Bastelgarten ne sehr beeindruckende VR-Version gezeigt
10:28:11 Schrompf: das geht also ganz sicher
10:28:48 Hannes: mir macht minecraft nur nicht wirklich spaß
10:29:19 Schrompf: ja, sicher, ich meine den grafikstil aus würfeln, weil du meintest, dass ne voxelwelt nicht so gut in VR passt
10:30:19 Hannes: ich will ballern
10:30:32 Schrompf: :-D
10:34:45 Hannes: mal sehen wie weit ich diesmal komme
10:39:49 Schrompf joined the channel
11:05:57 Essex20 joined the channel
11:06:43 Essex20: Guten Morgen
11:07:12 Hannes: hab kein hunger
11:08:04 Essex20: Ich jetzt auch nicht mehr, hab gerade gut gefrühstückt :-)
11:16:03 joeydee: Ich hab noch 2 kleine Schnitzel übrig, die kommen demnächst mit Zucchini und Käse überbacken zwischen Toastscheiben denk ich mal.
11:16:32 joeydee: Demnächst = in 3 ... 2 ... 1 ...
11:18:13 Essex20: Nur weil ich keinen Hunger mehr hab, heisst das nicht, dass nix mehr reinpasst... ich komm dann gleich mal vorbei :P
11:20:04 Hannes joined the channel
11:24:13 joeydee: Es sind KLEINE Schnitzelchen. Die sind weg in 3 ... 2 ... 1 ...
11:43:56 Essex20: kleine > keine
11:43:58 Essex20: :P
11:51:47 Schrompf joined the channel
12:06:54 joeydee: Dabei hätte ich gerne mit dir geteilt. Wirklich. Und jetzt raus hier.
12:07:12 xq: bei mir gibts hier leckere spaghetti aglio e oglio con pepperoncion
12:08:33 joeydee: Und wenn sie zu lange gekocht werden, sind es Spaghetti uglio.
12:12:04 Schrompf: hrhrhr
12:12:11 Schrompf: spaghetti maccio
12:34:26 Essex20: Boah.. ich war eben an Packstation mein Krempel holen. Ich hab nach all den Jahren mal den Mut gefasst und mir ne Waage geholt. Ok, eigentlich war's Faulheit und für mich unnötig Geld ausgeben. Hab mich eben mal gewogen. Holy.. ich hab mit ~90 gerechnet... es waren ~98
12:34:40 Essex20: Ich hätte die Finger von dem Teufelswerk lassen sollen ^^
12:35:20 Essex20: 1,81
12:35:25 Essex20: mal so als kontext
12:35:48 Essex20: Ihr BMI ist 29.9.
12:35:48 Essex20: Sie haben Übergewicht.
12:35:52 Essex20: DANKE
12:36:31 Essex20: Alter.. ich bin haarscharf am Adipositas 1 vorbeigeschrammt?!?
12:37:21 dot joined the channel
12:43:41 Essex20: Ich hab Hunger
13:25:52 Hannes joined the channel
13:28:57 Essex20: @xq: Morgen kommt endlich mein Oszilloskop.. ich hab hier alles Mögliche an Werkzeug aber das Wichtigste bisher nicht. Sogar nen LA der aber auch nur rudimentär ein Oszi abdecken kann ^^
13:29:37 Essex20: https://www.amazon.de/dp/B01M74UKKC ersma klein anfangen :D
13:30:05 Essex20: Lustigerweise ist da noch ein LA dabei, dachte mir why not bei 10€ mehr
13:36:55 joeydee: Essex20 ist so schwer, der muss sich auf der Industriewaage an der Packstation wiegen.
13:43:09 Schrompf: check dann auch mal deinen blutdruck, Essex20
13:43:13 Schrompf: ernstgemeint
13:47:17 xq: schickes ding, Essex20
13:47:40 xq: jop, auf jeden fall blutdruck checken lassen
13:57:49 joeydee: xq, dispose funktioniert in c# nur mit Klassen, d.h. Syntax wäre "using(new rotate(0,0,45)) { ...", oder?
13:58:14 xq: nö, muss nicht
13:58:15 xq: sekunde :)
13:58:19 xq: ich bau dir was funktionierendes
13:58:33 joeydee: ok, hatte dazu nichts gefunden
13:59:00 xq: :)
13:59:02 xq: also, ja
13:59:04 xq: muss mit klassen
13:59:08 xq: aber nicht wie du das zeigst :)
14:02:56 Essex20: Danke euch allen :P
14:03:14 Essex20: Und using ist ne schnuckelige Sache für Wegwerfkram .. ^^
14:03:57 Essex20: bzw. für faule leute wie mich die hinterher ned aufräumen wollen und es lieber das system machen lässt :D
14:04:10 joeydee: xq, klar, ich kann mir ne Funktion cRotate rotate(...) return new cRotate() schreiben für die Syntax.
14:05:34 joeydee: Essex20, hier gehts nur um geschachtelte Klammersyntax in C# abzubilden für Transformationen
14:05:51 Essex20: ICH HAB SCHWERE KNOCHEN
14:06:25 Hannes: das argument für alles
14:07:08 Essex20: :D
14:07:24 xq: https://bpa.st/SNNA
14:07:27 xq: so hätte ich das geftan
14:15:51 joeydee: thx schonmal, schau ich mir nachher näher an. Stack<> gibts übrigens als Aufzählungstyp.
14:16:22 xq: ja, aber stack ist kacke :D
14:20:44 joeydee: Wer wird denn kleinlich sein wenn ich sowieso mit Geometriekanonen unschuldige kleine Polygone in 10.000 Stücke schieße ;)
14:41:53 Schrompf: das bild gefällt mir :-) Geometriekanonen
14:42:08 Schrompf: ich hirsch heim und kann dort eventuell noch an was coolem arbeiten
14:43:59 Essex20: Ich werd jetzt gleich zum Babba hirscheln und dort ordentlich was Essen.. muss den Schock erstma Verdauen .. wortwörtlich
15:01:21 Biolunar joined the channel
15:29:02 Schrompf joined the channel
15:52:26 Schrompf: ei, jetzt zweifle ich schon wieder am grafikstil
15:52:43 Schrompf: also ganz konkret an der entscheidung für ultra-lowres
15:53:13 Schrompf: weil ich in 4x8 pixeln so richtig wirklich gar nix gemalt kriege
15:57:55 xq: das ist auch fucking klein
15:58:12 xq: ich finde 8x8 ist schon untere grenze
15:58:39 xq: oder du machst halt 4x8 und dann sowas wie [Baum Links, Baum Mitte, Baum Rechts]
15:58:46 xq: also multi-tileobjekte
15:58:59 Schrompf: hier geht's um die spielfigur
15:59:04 Schrompf: da reicht auch erstmal kopf und körper
15:59:10 xq: örks
15:59:15 xq: ja, da wird 4x8 kuschlig
15:59:23 Schrompf: aber ja, 4x8 wäre 1x2 tiles, und jetzt mach ich so vielleicht 2x4 tiles groß
15:59:30 Schrompf: da ist zumindest bissl platz für bewegungen.
15:59:35 Schrompf: nicht nur ein zylinder
16:03:21 Schrompf: Oder ich mal halt in doppelter Auflösung und render dann kleiner. MipMapping der GPU dürfte dafür sorgen, dass man das trotzdem sieht
16:03:25 Schrompf: in der bewegung
16:18:18 joeydee: Lemminge (1) hatten etwa diese Größe, daran würde ich mich orientieren.
16:20:36 joeydee: Filter-Skalieren würde ich nicht, sieht dann i.d.R. immer noch aus wie ne HiRes-Bewegung, nur hinter Glasbausteinen, das gibt nicht den Flair von Pixelart.
16:25:42 xq: bzgl. filterskalierung
16:25:48 xq: ich finds immer noch unverschämt, wie gut Dead Cells aussieht
16:49:18 Hannes joined the channel
16:54:53 Schrompf: hm. ok. ich muss wohl auch rotieren, von daher... ich denke darüber nach
18:17:54 Schrompf joined the channel
19:49:26 Hannes joined the channel
19:51:05 Schrompf: die drehung des sprites mit weichem texfilter find ich ganz akzeptabel
19:51:44 Schrompf: aber in bewegung ist das gezuckel anstrengend. die kamera, obschon genau auf dem sprite drauf, wird auf ganze pixel gerundet, das sprite selbst bewegt sich mit subpixel-genauigkeit
19:51:55 Schrompf: und das rappelt dann sichtbar bei der größe eines pixels
19:52:01 Schrompf: ich mach mal nen screenshot
20:03:01 Schrompf: http://www.splitterwelten.info/privat/tiny_driller.png
20:07:16 Hannes joined the channel
20:08:18 xq: Forwarded from ikskuh: cohost! - "Rotation with three shears"
20:08:19 xq: https://cohost.org/tomforsyth/post/891823-rotation-with-three
20:08:40 xq: Schrompf: Hier ein Artikel zu Pixel-Perfekter Sprite-Rotation für low res pixelart
20:09:56 Schrompf: Der Trick ist knuffig :-)
20:10:18 Schrompf: aber es ist ne farbgetreue Rotation, und die sieht - sorry - entsetzlich aus.
20:10:46 Schrompf: auch wenn sie pixel-korrekt wäre
20:10:59 Schrompf: oder besser: eben gerade weil sie pixelperfekt ist
20:51:56 Schrompf: ich hab's mal im Forum vorgestellt, obwohl ich das doch so voreilig nicht mehr tun wollte
20:52:04 Schrompf: https://zfx.info/viewtopic.php?p=73334#p73334
21:26:03 starcow joined the channel
21:26:15 Schrompf: Warum kommst Du immer so spät, hm?
21:26:16 starcow: n'Abend zusammen :-)
21:26:16 Schrompf: HM?
21:26:23 Schrompf: Chip?
21:26:31 starcow: Hi Schrompf! :-)
21:26:42 Schrompf: "Sourcreme-Dill-Geschmack". Geht schon
21:27:04 starcow: Meine Tage sind grad bisschen zu lang :-/ Kennt ihrs?
21:27:16 Schrompf: jeder tag :-(
21:27:25 starcow: ^^
21:27:36 starcow: Wie gehts dir Schrompf?
21:27:39 Schrompf: arbeit ist erledigt, frauen sind im bett, endlich ich und mein rechner. dann überzieh ich immer fies, und am nächsten morgen hasse ich mich dafür
21:27:52 starcow: Haha, kenn ich ;-)
21:28:11 starcow: Dann gelobt man Besserung - und machts dann wieder genau gleich ^^
21:28:17 Schrompf: aber ich hab ein neues projekt, und gerade hab ich dieses schöne kribbeln von großen vorahnungen von möglichkeiten
21:28:32 Schrompf: das find ich sehr cool, und deswegen vernachlässige ich dinge, um daran weiterbauen zu können
21:28:36 starcow: Ahhhh, das ist grossartig! :-)
21:28:51 starcow: Welches Projekt?
21:28:56 starcow: Kenn ich es?
21:28:58 Schrompf: arbeit, tja, da gibt's keine arbeitszeitabrechnung, und niemand traut sich, mir was vorzuwerfen, auch wenn sie es sicher ahnen
21:29:12 Schrompf: morgen abend ist bandprobe und ich habe meine hausaufgaben dazu auch vernachlässigt
21:29:29 Schrompf: und ich hab nen neuen patch für Splatter in der Pipeline, aber nix daran gemacht seit >2 monaten
21:29:32 Schrompf: tja
21:29:43 Schrompf: egal, manchmal muss man auch egoistisch sein
21:29:48 starcow: Du singst? Oder Gitarre?
21:30:04 Schrompf: nein, du kennst das projekt nicht, außer du has in der letzten halben stunde ins Forum geschaut
21:30:14 starcow: Oh ^^
21:30:14 Schrompf: ich singe. ich "singe". ist ja black metal.
21:30:31 starcow: Oha! :-) krass!
21:30:51 Schrompf: diese band hat ansprüche. ich hab ne rudimentäre gesangsausbildung, außerdem flüster ich, ich mach kopfstimme, ich kreische, ich brülle, ich grunze, und ich arbeite am pigsqueal
21:31:21 starcow: Oh, ein schöner Thread hast du gemacht! Mit Bildern! Muss ich mir bei Zubettgehen zu Gemühte führen!
21:32:29 starcow: Heftig! Metal find ich ohnehin richtig gut!
21:32:46 Schrompf: es rockt, es macht mächtig spaß
21:33:00 Schrompf: und danach hast du gute laune, egal wie's dir vorher ging
21:33:19 starcow: :-)
21:33:22 Schrompf: aber das ist mit jedem gesang so, da muss man nicht kreischen auf stark verzerrten gitarren
21:33:30 starcow: Glaub ich gern! Nette Leute in der Band?
21:35:25 Schrompf: https://www.youtube.com/watch?v=hCFBrQWYe3o
21:35:31 Schrompf: ich komm so bis zur hälfte davon :-)
21:35:39 Schrompf: ja, prima, alles ITler
21:35:46 Schrompf: einer lebt von Vollzeit-Delphi
21:35:57 Schrompf: D. E. L. PH. I.
21:36:11 starcow: Oh! :-D
21:36:22 starcow: Bist das du? 8-)
21:37:04 starcow: Dann hättest du dich aber unglaublich gut gehalten! Siehst ja aus wie mitte 20!
21:37:09 Schrompf: ach quatsch, ich hab nur fix "pig squeals" gegugelt
21:37:29 Schrompf: ich bin da hier: https://www.youtube.com/watch?v=d-5m0vRpnas
21:37:44 Schrompf: ach, kennst du ja schon, hast sogar kommentiert
21:38:11 starcow: Stimmt! Welcher bist du? Echt KLASSE!
21:38:58 Schrompf: in der band war ich Bass und "Gesang"
21:39:20 starcow: Bist du auf dem Foto drauf?
21:39:35 Schrompf: ja
21:39:43 Schrompf: aber ich verrat nicht wer.
21:39:45 Schrompf: DATENSCHUTZ!
21:39:46 Schrompf: :-D
21:39:56 starcow: Links DU, rechts dein Bruder? :-D
21:40:25 Schrompf: ich rechts, links Lenny, alter Freund und mein Festival-Gemahl
21:40:37 starcow: :Daumen:
21:40:41 Schrompf: mitte oben Benny, unser damaliger Schlagzeuger
21:40:53 Schrompf: unten Marvin, Gitarrenzauberer und Grund, warum es die Band nicht mehr gibt
21:41:09 Schrompf: "ich hab keine lust mehr, Lieder zu reproduzieren. Musik muss frei fließen!"
21:41:19 Schrompf: knifflig, damit Songs zu schreiben und einzuüben
21:41:24 starcow: Ja, hat was!
21:41:50 Schrompf: der typ hatte es echt raus, nen generischen riff mit bissl chromatischer Magie anzureichern
21:41:59 xq: Schrompf: lange nicht mehr gehört. schön aufs maul
21:42:04 Schrompf: <3
21:42:07 starcow: ^^
21:42:12 starcow: Hehehe
21:42:22 Schrompf: mein kind hatte ne phase, wo es das album im auto hören wollte und mir tausend fragen gestellt hat
21:42:25 Schrompf: allein das war's wert
21:42:51 Schrompf: außerdem hab ich noch ~10 physische exemplare hier.
21:42:53 starcow: Oh! Sehr gut! Beste Vorbereitung! ^^
21:43:11 Schrompf: aktuell will es nur noch Coppelius, Knorkator, Prodigy
21:43:26 Schrompf: auch alles sachen von mir, sicher. aber in der wiederholungsdichte hab ich inzwischen SO DIE NASE VOLL
21:43:50 Schrompf: und bald wird sie ja durch freund*innen selbst auf mucke kommen
21:44:27 starcow: Dann wirds spannend ;-)
21:44:46 starcow: Schrompf, du baust ja gerne "from scratch"...
21:45:30 starcow: Wie ist das eigentlich... Wenn man da so eine Kleine (kleine) Physik-Enginge für sein Spiel bauen würde...?
21:45:51 xq: also ich würds nicht tun wollen
21:46:03 starcow: Kann man da Ärger kriegen, weil da allenfalls Patente drauf sind? Ohne dass man es weiss?
21:46:05 xq: aber Schrompf: die kleine hat geschmack! und der große scheinbar auch
21:46:15 xq: solange du niemandem nachbaust: nope
21:46:30 Schrompf: ne, software-patente sind allgemein ungültig in der EU
21:46:47 Schrompf: und es gibt so viele OpenSource-PhysikEngines, dass ich mir wegen Patenten keine Platte machen würde
21:47:14 starcow: Ich bin auf nen alten Thread im Forum gestossen, da hattest du mal was angemerkt, bezüglich Valve und PhysicX oder wie das noch hiess
21:47:18 Schrompf: ich habe vereinzelt schon physik gecodet, und es ist ein thema, wo du mit gesundem menschenverstand und Abi-Physikwissen weit kommen kannst
21:47:38 Schrompf: aber ne wirklich stabile solide grenzfall-freie physik-engine ist ein lebenswerk
21:47:48 Schrompf: und ich würde das heutzutage nicht mehr selbst angehen
21:48:06 starcow: Aber es kann viel Spass machen oder?
21:48:08 Schrompf: für 2D gibt's Box2D - solide, bequem, machbar
21:48:51 Schrompf: für 3D gibt's PhysX - zuviel NVidia - oder Bullet - hab ich, geht schon, leidet an Software-Architektur - oder Jolt - viel gutes darüber gehört, will ich mal ausprobieren
21:48:57 Schrompf: ja, spaß macht's :-)
21:49:11 starcow: Ich meine: Wie hatten es denn die Devs früher auf den alten Konsolen gemacht? PlayStation, N64, etc. Die hatten ja nur sehr begrenzt Resourcen und Zeit...?
21:49:24 Schrompf: man kann das selber coden, kein problem
21:49:34 Schrompf: du kennst impuls und drehmoment und du bist bereit
21:49:38 starcow: Sind das keine "grenfall-freie" Physikengines?
21:49:54 Schrompf: aber es wird schnell hässlich, wenn du dann paar kisten aufeinander stapelst und erwartest, dass die zur ruhe kommen
21:50:06 starcow: Hahaha, genau!
21:50:08 xq: starcow: die alten games hatten meist keine "physikengine" :D
21:50:08 Schrompf: doch, die sind alle grenzfall-arm, im gegensatz zu allem, was ich selbst geschrieben habe
21:50:39 xq: glaubwürdig kommt man schon mit ner 2.5D-Physikengine für 3D-Games
21:51:00 starcow: Generation Half-Life 1998 würde man hinbekommen? Was denkt ihr? Oder Quake?
21:51:17 Schrompf: ja, auf jeden fall
21:51:36 starcow: Hmmmm, spannend! :-)
21:51:41 Schrompf: die haben ja keine physik außer "dinge explodieren bei schaden" oder "abprallen mit energieverlust"
21:52:33 xq: das andere extrem wäre ja sowas wie OpenDynamics Engine
21:52:36 starcow: Aber ich glaube man könnte ne Kiste runter schieben - von oben auf ne andere drauf z.B. Oder zählst du sowas alleine noch nicht als Physik?
21:52:41 xq: welche halt so scheiß wie interior friction richtig mahct :D
21:53:00 xq: starcow: die antwort hängt wohl von deiner definition von "physik" ab
21:53:09 starcow: Stimmt...!
21:54:03 starcow: Kann man sich bei euren Lösungen "durch die Wände buggen"? :-)
21:54:40 Schrompf: manchmal :-)
21:55:00 Schrompf: afk urination
21:57:57 Schrompf: das hier, verehrte damen und herren und logger
21:58:07 Schrompf: ist gerade der übergang von nem freundlichen abend mit freunden
21:58:18 Schrompf: zu nem "oh gott, warum habe ich gestern noch dieses bier aufgemacht"
21:58:32 starcow: rofl ^^
21:58:32 Schrompf: aber das muss mein morgiges ich mit sich selbst ausmachen
21:58:40 xq: starcow: wir hatten bei "Lotter Vs. The World" das Problem
21:58:46 xq: man konnte basically durch ALLE wände gehen
21:58:55 xq: am ende haben wir doch wieder BSP-Level von der Engine für Kollision verwendet
21:59:00 Schrompf: ich mag's gerade hier, ich hab laute musik an, und ich code jetzt noch die kollisionsphysik für meine kleine taucherin
21:59:03 xq: weil BSP den geilen Vorteil hat, dass es eben NICHT geht
21:59:14 Schrompf: ja, da merkste auch, wenn du ein bissl in der wand bist
21:59:17 xq: weil du weisst, welche seiter deiner plan "in der wand" ist
21:59:47 starcow: Oh, interessant! Ist das echt so bei BSP? Quasi prinzipbedingt?
21:59:55 xq: https://ackcon.de, das Spiel von 2018
22:00:04 Schrompf: ja, bsp ist binary space partitioning
22:00:08 xq: ja, BSP ist nen Baum aus "raumhalbierenden Ebenen"
22:00:10 Schrompf: also die binäre raumunterteilung
22:00:11 Schrompf: genau
22:00:20 Schrompf: du zieht eine ebene quer durch deinen raum
22:00:27 xq: im endeffekt kannst du nen würfel ja als schnittmenge von 6 halbräumen (hust, mathe)
22:00:29 xq: bauen
22:00:38 Schrompf: es gibt nur "dieseits der ebene" oder "jenseits der ebene"
22:00:48 Schrompf: und damit teilst du deinen raum in zwei hälften
22:00:53 xq: exakt, und du definierst eben eine seite der ebene als "solid" und eine als "air"
22:01:02 Schrompf: und jetzt kannst du für jede der zwei hälften weitere ebenen hinzufügen
22:01:07 Schrompf: genau
22:01:15 Schrompf: und damit kannst du durch dann durchhangeln
22:01:29 Schrompf: "diesseit? ok, dann gilt dieser satz an weiteren ebenen"
22:01:32 starcow: Heisst: Du detektierst sofort, wenn du auf der falschen Seite stehen solltest und setzt die Figur zurück?
22:01:39 Schrompf: genau
22:01:48 Schrompf: geht halt nur für lowpoly-gedöns
22:01:53 Schrompf: wurde für Quake erfunden
22:02:02 starcow: Ja? Wieso nur lowpoly?
22:02:08 Schrompf: und ein Assassins Creed oder ein LastOfUs wird das nie verwenden
22:02:18 Schrompf: weil du für jedes einzelne dreieck mindestens eine ebene einziehst
22:02:39 Schrompf: kein problem, wenn dein level aus paar hundert besteht, so wie Quake
22:02:47 Schrompf: ein problem bei millionen polys einer modernen engine
22:02:52 starcow: Dann explodiert der Baum? Wegen der Grösse?
22:03:03 Schrompf: jap, Gigabyte an Collision Data
22:03:10 starcow: echt?!
22:03:20 Schrompf: vielleicht auch terrabyte, ich rate nur
22:03:29 starcow: Wächst nicht linear an?
22:03:39 Schrompf: ne, quadratisch
22:03:48 starcow: oh, mist ^^
22:03:54 Schrompf: weil jede ebene, die hinzukommt, jede existierende ebene in zwei teile schneidet
22:04:04 xq: yep
22:04:06 Schrompf: das ding zu iterieren ist dann wieder log
22:04:09 Schrompf: das ist super
22:04:09 starcow: Aber bisschen mehr als "früher" müsste mit der Technik ja heute möglich sein, also mit BSP?
22:04:16 Schrompf: aber das zu bauen ist tödlich
22:04:17 xq: aber: man braucht ja selten die static collision map in so einer krassen auflösung
22:04:26 xq: aber ja, was Schrompf sagt
22:04:31 xq: ist trotzdem geile tech
22:04:34 xq: vorallem für hobbygames
22:04:34 Schrompf: auja
22:04:48 xq: https://trenchbroom.github.io/
22:04:54 Schrompf: und wenn man das mathematisch verstanden hat, findet man erstaunlich oft noch gelegenheiten, wo es einem weiterhilft
22:04:55 starcow: Also, wenns so sauber funktioniert, ists ja eigentlich traumhaft!
22:05:08 xq: trenchbroom ist nen generischer BSP-Editor
22:05:14 Schrompf: wir haben in der pauschalreise-preisberechnung nen BSP eingesetzt
22:05:21 Schrompf: in dr fickenden PREISBERECHNUNG
22:05:24 xq: lol nice :D
22:05:26 starcow: wow sehr cool! :D
22:05:33 xq: arithmetic compression macht quasi auch BSP
22:05:53 Schrompf: weil du damit halt komplexe multidimensionale räume schnell in relevante bereiche unterteilen kannst
22:06:10 Schrompf: und quasi JEDES problem ist ein multidimensionaler raum, wenn man bissl die augen zusammenkneift
22:06:19 Schrompf: wie ein berühmter mensch mal sagte:
22:06:23 starcow: Für Grafik nimmst die Quake Engine auch, oder? Irgendwie fürs Rendering... Stimmt das?
22:06:55 Schrompf: jedes beliebige software-produkt, genügend optimiert, wird entweder ne Datenbank oder ein Parser
22:07:10 starcow: :-))
22:07:14 Schrompf: ich glaub, ich habe das gerade nicht korrekt wiedergegeben
22:07:22 Schrompf: aber egal, der gag wurde verstanden, denke ich
22:07:35 starcow: Ja ;-)
22:07:43 Schrompf: quake macht damit kollision
22:07:47 Schrompf: und hat portale
22:07:58 Schrompf: also polygone, wo ein raum in einen anderen übergeht
22:08:04 Schrompf: und wenn du jetzt ne kamera in einem raum bist
22:08:09 Schrompf: mit ner position im raum
22:08:32 Schrompf: und du stellst dir jetzt vor, du würdest mit so nem disco-laser-projektor von der kameraposition aus eine linie des polygons nachzeichnen
22:08:39 Schrompf: dann hast du quer durch den raum ein dreieck
22:09:06 Schrompf: und anhand der ebene dieses dreiecks kannst du wieder ganz easy mit log(n)-komplexität bestimmen, welche teile des nächsten raums von hier au ssichtbar sind
22:09:24 starcow: Also gehts um culling?
22:09:30 Schrompf: wie gesagt: wenn du einmal diese geistige einteilung in "auf dieser seite" oder "auf jener seite" im kopf hast
22:09:35 Schrompf: dann kannst du das echt oft benutzen
22:09:37 Schrompf: ja
22:09:55 starcow: culling für die Kollision? Und fürs Rendering?
22:10:03 Schrompf: für beides
22:10:07 starcow: K!
22:10:16 starcow: Hoch spannend! :-)
22:10:23 Schrompf: wahrscheinlich kannst du auch noch pathfindung darauf basieren, wenn du bissl genauer hinguckst
22:10:42 Schrompf: hab ich schon erzählt, dass ich inzwishen von recast/detour enttäusch tbin?
22:10:44 starcow: Ihr wisst wirklich alles! Find ich extrem heftig! ^^
22:10:57 Schrompf: ne, aber einiges, und wir schwatzen gern
22:11:09 starcow: Find ich sehr gut! ^^
22:11:39 starcow: @recast/detour - enttäuscht?
22:12:42 xq: Schrompf: Das Zitat zu Parser/DB ist gut. Ich hatte auch mal nen schöne Definition von "Parser" gefunden
22:13:06 xq: "Ein Ding, was die Anzahl möglicher Zustände in die Kategorien 'legal' und 'illegal' aufteilt"
22:13:14 Schrompf: :-)
22:13:33 Schrompf: recast/detour
22:13:41 Schrompf: echt sympathisches opensource-projekt
22:13:44 xq: dementsprechend ist auch `uint to_uint(int i) { if(i < 0) throw; else return (uint)i; }` ein parser :D
22:14:04 Schrompf: du kannst ihm triangle soups zuwerfen, oder heightmaps, oder voxelgedöns, keine ahnung
22:14:17 Schrompf: der macht alles zu ner voxelwelt definierter auflösung
22:14:26 Schrompf: definiert darin begehbare segmente
22:14:45 Schrompf: mit vorgegebener treppenstufen-höhe, abstand zu wänden und so
22:15:09 Schrompf: und aus den übrig gebliebenen "begehbaren" voxel-oberseiten baut er wieder einen strauß triangles
22:15:17 Schrompf: über die die detour-lib dann pathfinding machen kann
22:15:36 Schrompf: und das ist echt fix, das ist alloc-frei, das baut ohne ansprüche mit jedem buildsystem
22:15:42 Schrompf: ich mag so ego-freie libs
22:16:06 Schrompf: aber es ist halt hardcoded auf ne voxelauflösung, auf einen abstand zu wänden, auf eine maximale stufenhöhe
22:16:23 xq: klingt schon geil
22:16:38 Schrompf: du kannst nicht mal eben nen Oger (1m Radius) und einen Goblin (20cm Radius) losschicken, das sind zwei verschiedene NavMeshes
22:16:45 starcow: Was heisst "alloc-frei"?
22:16:53 Schrompf: keine news und deletes
22:17:09 Schrompf: das ding allokiert schon, aber halt wohldefiniert und selten
22:17:14 Schrompf: früher war das wichtiger als heute :-D
22:17:17 starcow: Alles aufm Stack oder im Data-Segment? Kein Heap?
22:17:20 xq: ist heute immer noch wichtig
22:19:44 starcow: Mist, 23:20! :-()
22:19:52 Schrompf: er spricht wahrheit
22:20:01 Schrompf: aber jetz hab ich noch ein halbes bier
22:20:09 Schrompf: und du bsit schuld :-)
22:20:15 starcow: Hahaha! :-)
22:20:46 Schrompf: wie geht's dir?
22:20:47 starcow: Ist das "zentral" - so wenig wie möglich
22:20:53 Schrompf: irgendwas bewegendes in deinem leben?
22:21:05 starcow: auf dem Heap zu haben? Also selten zu allozieren?
22:21:39 Schrompf: gestern: konsolen haben wenig speicher, und kein virtual memory, wo adressraum umgemappt wird
22:21:51 Schrompf: wenig allokieren heißt da "überleben"
22:21:52 starcow: Einige meiner Schlüer (Mahte) mögen mich wohl nicht so :-(
22:22:10 starcow: (Ja, ich unterrichte fürs Brot Mahte - aber keine hohe Stufe!)
22:22:21 Schrompf: heute: PCs und Konsolen sind 64bit-Maschinen, haben Adressraum von hier bis Marokko
22:22:35 Schrompf: und Heaps sind heutzutage astronomisch geil ultraschnell implementiert
22:22:51 Schrompf: da isses nicht mehr sooo wichtig, allokationsarm zu arbeiten
22:23:00 starcow: Aber es ist "eleganter" wenn ich nach möglichkeit mit Stack und Data-Segment auskomme?
22:23:23 Schrompf: aber immer noch jede Alloc, mehr noch jedes free(), jede Stringoperation, jedes Vector::push_back sind einige hundert Cycles
22:23:50 starcow: Verstehe!
22:23:50 Schrompf: ja, weil a) keine Alloc, paar hundert Cycles gespart und b) lokal, nah, keine heftige Pause beim ersten Zugriff
22:24:22 Schrompf: Hauptspeicher, der in keinem Cache ist, hat >100 Taktzyklen Latenz
22:24:35 Schrompf: in den 100 zyklen hast du mal locker 200 floats multipliziert
22:24:43 Schrompf: 50 pixel geshadet
22:24:43 starcow: Ist der ganze Stack denn im Cache?
22:24:48 Schrompf: meistens
22:24:51 Schrompf: kommt drauf an :-)
22:24:55 Schrompf: ich weiß, kacke antwort
22:25:08 Schrompf: standard-cache pro thread ist ... keine hanung... 64kb?
22:25:15 starcow: Könnte man es forcieren?
22:25:19 Schrompf: das ist zweimal der first level cache pro CPU-core, das ist nicht viel
22:25:33 starcow: Ok, reicht wohl nicht, oder? Unter Windows ist der Stack ja irgendwie 1MB bis 2MB, oder?
22:25:36 Schrompf: alles, was du aufm cache anlegst, ist quasi zwangsweise im 1st level cache
22:25:43 Schrompf: und damit ~10 zyklen entfernt
22:25:54 Schrompf: schneller wird's in dieser welt nicht
22:25:58 starcow: Das ist heftig!
22:26:02 Schrompf: exakt
22:26:11 Schrompf: aber es ist nicht einfahc, sein dataset so klein zu kriegen
22:26:17 Schrompf: normal ist mindestens 2nd level cache
22:26:26 Schrompf: 256kb, shared zwischen ein paar cores, glaube ich
22:26:38 Schrompf: intel und AMD nehmen sich da nicht viel, soweit ich weiß
22:26:52 starcow: Kann ich es ohne Assembler irgendwie forcieren, dass er es in den Cache legt?
22:26:55 Schrompf: achtung: ich bin betrunken und reproduziere diffuses wissen aus überschriften
22:27:03 starcow: Hehehe ^^
22:27:18 xq: meanwhile, die neue amd-server-cpu hat 1G L3-Cache
22:27:24 Schrompf: ja, pre-caching. aber ehrlich, *ich* habe das noch nie gebraucht, daher würde ich mutig behaupten, dasss du da nie hinkommst
22:27:29 xq: starcow: kannst du gsr nicht
22:27:43 starcow: Kann man nicht?
22:27:47 Schrompf: doch
22:27:55 xq: alles, was du liesst, wird gecached anhand deiner page configs
22:27:56 Schrompf: ah) alles kommt in den cache, was du anfasst
22:28:03 Schrompf: weil es üblich ist, dass du das nochmal anfasst
22:28:04 Schrompf: genau
22:28:05 xq: die sind aber vom OS vorgegebem
22:28:25 Schrompf: und b) es gibt spezielle instructions in x86, um speicher vorzucachen
22:28:25 xq: und die caches sind mit allen os-threads shared, welche auf dem hw-thread laufen
22:28:25 starcow: Ok, da macht einem das OS ein "Strich durch die Rechnung"?
22:28:31 xq: jop
22:28:40 xq: cache preheating und thread pinning hilft
22:28:52 starcow: wow! :-)
22:29:04 Schrompf: wenn du wirklich vorher weißt, was du brauchst, dann kannst du paar hundert cycles vorher mit speziellen x86-instructions zeugs vorcachen
22:29:20 Schrompf: aber wie gesagt: ich hab das noch nie gebraucht, und ich behaupte, du wirst so weit auch nie kommen
22:29:30 starcow: Ich muss mehr mit euch Jungs abhängen! :-D Sehr geil!
22:29:36 xq: die factorio-revs haben es ausprobiert
22:29:38 Schrompf: es reicht, seine daten sinnvoll nah beieinander und klein anzuordnen, und du holst das meiste aus CPUs raus
22:29:56 starcow: @Schrompf - Wie meinst du das? Weil so kompliziert (schwierig) ist?
22:30:04 xq: das ergebnis: ihr code war so gut, dass die eine instruction mehr den instruction cache mehr kaputt gemacht hat, als es dem datacache geholfen sht
22:30:13 Schrompf: weil du selten vorab die exakte speicherpos benennen kannst
22:30:23 starcow: OK!
22:30:24 Schrompf: du machst da irgendwelche index- und pointer-berechnungen
22:30:28 xq: starcow: je kleijer der diff zwischen den pointern, desto besser
22:30:31 Schrompf: und erst am ende weißt du, was du eigentlich wissen willst
22:30:48 xq: avgesehen von mutexes, die sollten alle exakt 64 Byte voneinander weg sein, sonst klemmts
22:30:57 starcow: Verstehe!
22:30:58 Schrompf: üblich ist es eher, seine daten so anzuordnen, dass die hübsch nacheinander gebracht werden
22:31:16 Schrompf: xq: oh hör auf mit mutexes und false sharing, das thema ist so schon kompliziert genug :)
22:31:29 starcow: ^^
22:32:00 starcow: Leute, ich muss leider in die Kiste! :-[
22:32:22 xq: D
22:32:24 xq: gn8!
22:32:27 xq: und komm wieder!
22:32:32 xq: wir labern gerne über dinge
22:32:44 starcow: War enorm spannend! Ich danke euch! :-)
22:33:00 starcow: Wirklich faszinierend, was ihr alles wisst!
22:33:15 Schrompf: war eine freude!
22:33:15 starcow: Bis bald! Und gute Nacht!
22:33:16 Schrompf: nachti
22:33:33 starcow: (Kein Bier mehr nachher @Schrompf!)
22:33:40 starcow: :-)
22:33:54 starcow: N8
22:33:58 Schrompf: versprochen! ist jetz tschon zu spät