Beiträge von HToneill

    ?????? ??????,

    ????? ?????? ??????????? ??????????? ??? ?????? ?ü? ??? ???? ??? ???? ??? ????? ??? ???? ???????. ?????? ??????? ???? ????? ????? ?????? ??? ??????? ??? ???????? ???? ?????? ???? ??????.



    ??????? ??????? ??? ?? ????? ??????? ?????????? ?ü? ???????????? ?????????????.

    ?? ??????? ???? ????? ?? ????? ??? ??? ???????????? ???????? ??? ??????? ?????????????????????.


    das.png

    ?? ????? ??? ?????? ????? ????????????????? ??? ???% ???? ?? ?????- ?ü?????????


    ???? ??? ??? ?? ????? ??? ?ö????????, ??? ?????????? ?????? ?? ??? ????? ?? ??ü???, ????? ??? ?????? ?????????? ????????? ????.

    ???????: ?? ????????? ?? ??????? ?ä??? ????? ??????????????, ??? ??? ??? ?????????? ??????????? ??? ??? ????? ????? :)

    ???? ??? ??? ????????? ?ü?? ????, ???? ??? ?? ???? ?????????? ?????.

    ???? ????? ??? ?????? ???. (???? ??? ??????, ????????????)



    ?????????? ???????, ???? ????? ????:

    ?? ???? ?? ????? ??????, ??? ?? ?????? ????


    ????? ????ß?,

    ????????




    Vielleicht sollte ich mal die Codelock Klasse ändern, zu einem cooleren Namen.

    Wird bestimmt nichts verursachen und alle werden sich freuen!


    Oder lass mal den Schränken und Stashes custom Namen geben wie Ikea... Schrank_DagiWeh zum Beispiel.


    Das wird die Spieler bestimmt freuen, wenn sie in die Types des Servers einstellen und gewiss

    keine weiteren Probleme mit sich ziehen.

    </HoneyBadger>

    ^^


    Hier gibt es einen Hintergrund zu GLSL:

    https://en.wikipedia.org/wiki/OpenGL_Shading_Language

    Es ist C ähnlich, aber alles nur auf das Mindeste reduziert und mit speziellen Funktionen für die Grafikkarte.



    Ich habe ein kleines Geschenk für euch generiert:



    preview.jpg


    Sämtliche Ortschaften habe ich durch ein Script laufen lassen, der diese in Transparente Bilder rendert.

    Diese könnt ihr über eure Videos oder Bilder legen und zeigen wo ihr gerade wütet.

    Ich habe diese euch in drei verschieden Auflösungen zur Verfügung gestellt.


    Sieht in der höchsten Auflösung so aus:


    Chernogorsk.png



    Diese könnt ihr hier runterladen:

    Download!

    Der Moment wo einem klar wird, dass man einen besseren Pixel Font Renderer geschrieben hat wie in Photoshop implementiert ist

    best.png

    links: CPU lastiges Photoshop

    rechts: Eigenerer GPU Renderer


    beides hat eine Kantenglättung. Anti-Aliasing.

    Jedoch hat Photoshop immer einen eigenen Algorythmus gehabt der sowas wie Mittelwert für alle Einsatzfälle sein sollte, aber eher dazu führt, dass dieser nirgends optimal gepasst hat.


    Somit wirkt das Photoshop Bild (Vektor Font + Kontur) entweder unschärfer oder wahlweise ganz ohne Anti-Aliasing.



    F: Zur Hölle Oneill, wie sieht so ein Code aus, der sowas macht?

    A:


    Das ist ein GLSL Shader, der genau so an die Grafikkarte geschickt wird.

    Code
    uniform sampler2D texture0;

    ist hierbei die Textur, die in den Shader reinkommt. Der Pixelshader wird dann für jeden Pixel einmal berechnet, und zwar auf einer Fläche, die eine UV Koordinate haben muss, sowas wie der Texturausschnitt auf der Fläche (Face).

    Code
    varying mediump vec2 uvVarying;

    Somit wird Pixel für Pixel mit dem was in in der main{} Klammer ist, berechnet.


    Die neue Farbe für jeden Pixel wird im RGBA format in

    Code
    gl_FragColor 

    gespeichert. Das kann man dann direkt auf den Bildschirm klatschen, wenn man ein Window mit OpenGL Kontext erstellt hat.


    Die Kunst beim Shader programmieren ist, einen Algorythmus zu finden der 1. das macht was du willst und 2. für jeden Pixel funktioniert.

    20210302022215-1.jpg

    20210302022231-1.jpg


    Es geht gerade darum die Hitboxen soweit anzupassen, dass das Placement bündig funktioniert.

    Aktuell ist es nur auf einer Seite optimal, die andere erzeugt eine zu große Lücke.


    Es ist so, dass beim Placement irgendwie nicht oder nicht nur die Geometry LOD Verwendung findet,

    sondern eher die VIEW Geometry oder die Fire Geometry. Außerdem voller Spaß mit Proxies, da muss der

    schmarren ebenfalls bearbeitet werden - Der Zaun besteht aus 10 Proxies.... Das ergibt etwa 40 mögliche Stellen wo man ähnliche Polygone hin und her schieben kann, damit es bündig wird.


    Wer zum Teufel soll so arbeiten können?

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Okay, also vom technischen Hintergrund sieht die Sache so aus:


    Wir haben Objekte, die, wenn diese in der Bubble vom Spieler sind, vom Server nachgeladen werden müssen (infos z.B wo das Objekt ist, und welchen Status es hat, ob und welche proxies da hängen usw...) Wenn die Daten nicht alle eingetroffen sind

    => Client Pause, bis alles da ist für euch als Lag bekannt, da sichergestellt werden muss, dass alle die gleichen Daten haben, sonst async (ja passiert auch)

    Dann haben wir noch bei allen Objekten mit denen man interagieren kann einen Skript, der ebenfalls dauerhaft ausgeführt wird, solange sind das entsprechende Objekt in der Bubble des Spielers befindet.


    Da wir von Bohemia mit den besten Diagnosetools augestattet wurden ( Mittelfinger und breites Grinsen von BI ) stechen wir entsprechend im dunkeln, ob und wo das problem liegt.

    Wenn ich wüsste wie man den Ping zum spieler Skriptseitig misst, würde ich halt jeden mit Ping über 120 oder so kicken (pvp wäre natürlich mit pings weniger als 80 besser), wie in anderen Games auch üblich. Bei CS gehörst du mit einem Ping über 20 schon zum Präkariat.

    Ich weiß nicht einmal ob sowas Auswirkung hat, es ist nur stark davon auszugehen. Die Frage liegt im Backend von ihrem Netzwerkcode in der Enfusion Engine.



    Ergo nur mit Diagnosesoftware zu machen - von uns kann das nur Halfmoon

    Frage: Sorgen einzelne, schlechte Client Verbindungen mit Ping>120 für ärger bei allen?

    Die Frage ist heftig, da die Diagnose schwer fällt und viel Kummer kosten wird.




    Ocullision Culling


    Ich gebe zu, es ist ein mießes Wort, aber auch für euch von zentraler Bedeutung. Dieses Verfahren dient in einer 3d Engine dazu Polygone, die nicht von der Kamera gesehen werden können, im Vorfeld nicht zu rendern. DayZ hatte das mal nicht und ihr hattet mit euren Mega Maschinen trozdem nur 20fps in Cherno, weil auch die Häuser hinter den Häusern berechnet wurden, auch wenn ihr nicht mal einen Pixel davon sehen konntet.


    Dann haben die Devs gesagt: "so geht das nicht weiter!111!!111einself " somit gibt es in jedem Haus neben Kollisions und Hitboxen auch eine Art Ocullision Hitbox, die sagt, ob die Wand durchsehbar ist oder nicht.

    Dann muss man das im Vorfeld berechnen lassen, geht bei Cherausrus so etwa 40 Minuten dann erstellt er eine art Baumdiagramm was man von wo sehen kann. Das wird dann in Realtime in die Engine gepresst und voila der Client zeigt nur das an, was der Client von der Position auch sieht!


    Und jetzt kommts: Diese Berechnung wird nur einmalig gemacht, wenn die Map erstellt wird!

    Folgedessen werden Häuser in Cherno, die bereits im Editor gesetzt sind "gecullt", ergo weggemacht, wenn man diese nicht sehen kann,

    D.h alle nachträglich hinzugefügten Objekte (gemoddet oder reguläre Items und Spieler) fallen nicht under das Ocullision Culling von DayZ.

    Weil ihre Vorberechnung nach Polygon (alles was gecullt werden soll muss da sein) erfolgt und nicht nach Volumen (alles was in dem Volumen steht wird gecullt).




    Da wir auch nicht einen Script Heap auslesen können (wieviele Skripte aktuell laufen und wieviel Zeit diese in Anspruch nehmen für einen Durchgang)

    gibt es auch keine Diagnoseitems die wir euch verteilen können.

    Kombiniert mit etwas was die GPU und Memoryauslastung anzeigen könnte wäre es ein Traum.


    Denn mit den Daten wäre jegliche Ursache sofort sichbar...