Seite 30 von 55

Re: [Projekt] Devader

Verfasst: 06.11.2017, 20:29
von marcgfx
hab den Post mal auf eine neue Seite geholt.

Bild
Ich bin am testen wie es ausschauen würde mit einem vordefiniertem Untergrund. Weiss nicht ob es mir gefällt, oder ob sich das beisst... Der Sand kommt auch wieder drüber, aber später im Spiel wird der ganze Untergrund sichtbar. Ich könnte mir auch vorstellen den Untergrund mit der Struktur stärker zu verbinden, also vielleicht noch irgendwelchen technischen Konstrukte.

Bild
mir war es jetzt doch noch zu stark gesättigt... ich muss mal was essen :)

Re: [Projekt] Devader

Verfasst: 08.11.2017, 19:27
von marcgfx
Bild
Es hat mich ganze zwei Tage gekostet um ein elendes Hintergrundbild einzubauen... schrecklich. Probleme gabs beim import in den Framebuffer und ich habs einfach nicht geschnallt woran es lag. Bei einem Fall hats geklappt, beim zweiten nicht und ich bin fast wahnsinnig geworden. Schlussendlich war es eine falsche Zoom-Einstellung die das Bild ganz klein unten rechts (nicht im sichtbereich) platziert hat. Dann gabs aber noch x andere Fehler die zusammen mit dem Zoom Problem den Spass vergrössert haben. Jetzt gibt es einen Hintergrundlayer auf den gewisse Risse entstehen. Dieser Layer ist unter dem Sand und kommt beim hier gezeigten Turmboss dann zum Vorschein.

Re: [Projekt] Devader

Verfasst: 09.11.2017, 00:21
von xq
Sieht schon irgendwie verdammt geil und farbenfroh aus, muss unbedingt mal wieder nen aktuellen Build spielen!

Re: [Projekt] Devader

Verfasst: 09.11.2017, 00:43
von marcgfx
Danke! Ich sollte mal wieder nen aktuellen Build hochladen :D :roll:

Re: [Projekt] Devader

Verfasst: 20.11.2017, 16:59
von marcgfx
Bild
Bild
Bild
Ein paar aktuelle Screens. Ich habe wieder mal 1000 kleine Sachen gemacht, geschraubt, gedreht, poliert. Das waren die wichtigen Sachen:
- Ich habe alle glow-Effekte von den Schüssen entfernt. Bisher habe ich oft zwei Bilder pro Schuss gezeichnet. Ein normales Schussbild und ein grösseres, leicht transparentes, additives Bild. Ich habe die zwei Bilder jetzt mit einem Ersetzt und etwas Shader code. Via Shader werden hellere Bereiche additiv, andere normal gerendert.
- Gegnerische Schüsse sind jetzt vorwiegend dunkel mit heller Silhouette. So soll es einfacher sein zu erkennen was gut und böse ist. Es gibt noch eine Aussnahme bei den Kurzdistanzattacken von Spinnen.
- Ich habe entdeckt, dass mein Shader kein absolutes Schwarz zuliess. Beim Spielen viel mir das nicht auf, aber ich war immer enttäuscht über die Screenshots und hab gar mein Bildbearbeitungsprogramm beschuldigen wollen... Ich war selber schuld.
- Ich glaube das Problem mit dem Sound in den Griff bekommen zu haben. Ich benutze jetzt einen GainNode (volume) nach einem DynamicCompressorNode (verhindert, dass die Amplitude zu krass ausschlägt). Muss aber noch beobachtet und abgestimmt werden.

Ich schlage mich momentan mit dem Linux Build rum. Dazu habe ich Ubunto auf Virtualbox installiert. Es läuft schrecklich langsam und irgendwie krieg ich es nicht gebacken Dateien auszutauschen.

Ende November will ich eine neue Demo veröffentlichen. Releasetermin ist Ende Januar.
Für die Demo werde ich vermutlich wie beim ersten Mal die 3 Anfangslevel bis zum 3ten Boss veröffentlichen. Jetzt aber mit allen Schwierigkeitsstufen. Highscore wäre auch noch cool. Eventuell muss ich schauen ob ich dafür noch Facebook oder Google Logins ermöglichen soll. Könnte beim Vermarkten helfen...

Re: [Projekt] Devader

Verfasst: 20.11.2017, 23:19
von xq
Hey, gut zu hören, dass es vorangeht!
Es läuft schrecklich langsam und irgendwie krieg ich es nicht gebacken Dateien auszutauschen.
Versuchs mit SSH-Dämon auf der VM und SCP auf Windows (WinSCP o.ä.), das funktioniert immer prima bei mir

Re: [Projekt] Devader

Verfasst: 23.11.2017, 14:08
von marcgfx
Danke! Ich hab dennoch eine bessere Lösung gefunden. Es lag noch ein alter Laptop rum, flugs Ubuntu installiert. Bis auf ein bisschen rumspacken (wollte nicht mehr starten nach einem ersten Update) hats ganz gut geklappt. Habe Devader auch schon zum laufen gebracht, es lief mit ganzen 20fps... die GPU war massiv überfordert. Naja vielleicht kann ich das Gerät ja nutzen um die Performance nochmal zu verbessern.

Ich mühe mich mit komischen Sachen ab unter Ubuntu. Ich habe .desktop files angelegt um NWjs starten zu können, bekomme aber fehlermeldungen und danach sind die .desktop Dateien versteckt. Echt mühsam. Ich versuch mal einen Build auf Steam hochzuladen, man muss es halt leider vom Terminal aus starten (ich noob zumindest). Obwohl... mal sehen, bei Steam muss man das Start-Programm angeben. Wird spannend.

Re: [Projekt] Devader

Verfasst: 24.11.2017, 18:36
von marcgfx
Manchmal könnte ich in die Wand hauen wegen meiner gewählten Tech. Ich hab schon so vieles verbessert und dennoch läuft es nicht wirklich gut auf meinen Laptops. Der Linux-Laptop ist eigentlich gar nicht so schlecht, mein MacBook ist 4 Jährig. Beide etwa gleich gut/schlect. 20fps reichen lustigerweise aus zum spielen, die Steuerung reagiert leider nicht so gut wie sie sollte. Ich habe 4 Layer im Spiel: Hintergrund, Splatter, Objekte, Sturm. Bis auf die Objekte kann ich alle einzeln Ein/Ausschalten. Wenn alles bis auf die Objekte ausgeschaltet sind, habe ich um die 40-50fps. Ich muss noch ausgiebiger testen. Es spielt sich besser, sieht einfach nicht so schön aus. Ist sowas überhaupt vertretbar? ...

Re: [Projekt] Devader

Verfasst: 25.11.2017, 12:05
von scheichs
Alter des Laptops sagt wenig aus. Es kommt ja auf die Specs an. Aber generell gesagt: Ich habe damals (vor 3 jahren?) Cyberlympics unter Firefox ausprobiert und war mässig beeindruckt. Später hatte ich nochmal unter Chrome getestet und es machte wirklich Spass. Warum? Wegen der Framerate! Dasselbe gilt auch für Devader. Unter 60FPS (EDIT: Vsynced!) würde ich nicht gehen wollen. Dazu muss es auf voller Qualität laufen. Diesen Anspruch musst du haben! Das muss an allen Ecken und Enden knallen!
Ich vermute auch, dass Du Dich mit deiner Dev-Env da selber limitierst. Ich würde Dir empfehlen auf Unity (bevorzugt wegen 2D) oder Unreal zu portieren. Das dauert vermutlich genausolang wie weitere Versuche zu optimieren. Dann stehen Dir auch von den Releasewegen viel mehr Türen offen (Konsolen!!!). Du hast jetzt soviel Arbeit da rein investiert (speziell auch von den Gegnern). Schau dass Du Dich da auch belohnst dafür.

Re: [Projekt] Devader

Verfasst: 25.11.2017, 14:28
von marcgfx
Danke für deinen Input scheichs, womöglich hast du recht. Nur ich glaube das Portieren wäre nicht so eine einfache Geschichte, wissen tue ich das nicht. Vermutlich fange ich besser bei null an mit einem neuen Projekt. Meine Tech ist schon arg limitierend, aber es ist halt was ich habe. Ziel ist es in zwei Monaten das Ding rauszuhauen, sonst wird es zu nem Endlosprojekt. Aufregen werde ich mich genug in der Zeit, hoffentlich gibts auch ein paar Jubelschreie :lol:

Ich rede mir manchmal gut zu und sage: Es gibt erfolgreiche Projekte die eine fixe Framerate von 30 haben (nuclear throne).

Interessant an meinem jetztigen Problem ist allerdings, dass ich mit der GPU kämpfe. Der Einfachheit halber hat es noch ein paar Branches im Shader, eventuell könnten die ein Teil vom Problem sein.
Ich schäme mich etwas für den code :P aber kann es ja mal posten. Warscheinlich lacht ihr euch einen ab :D

Code: Alles auswählen

//bg_1

precision mediump float;
uniform vec2 u_resolution;
uniform float u_time;

uniform float u_sandtime;
uniform float u_sandscale;
uniform float u_sandopacity;
uniform float u_sandoffset;
uniform vec4 u_sandpos;
uniform vec4 u_sandbump;
uniform vec4 u_sandcol;

uniform vec4 u_enva;
uniform vec4 u_envm;

varying vec2 v_tex;
varying vec2 v_coord;
varying vec2 v_size;
varying float v_mode;
varying vec2 v_pos;

uniform vec2 u_imagesize;
uniform sampler2D u_image;
uniform sampler2D u_fb;

vec3 rgb2hsv(vec3 c) {
    vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
    vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
    vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
    float d = q.x - min(q.w, q.y);
    float e = 1.0e-10;
    return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
vec3 hsv2rgb(vec3 c) {
    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
    vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
    return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}

void main(void) {
    //mode bestimmt wie ein poly gezeichnet wird
    float stp = step(0.0,v_mode);
    float mode = mix(-(v_mode+1.0), v_mode, stp);
    vec2 pos = v_coord + v_tex * v_size;
    
    //hässlicher branch
    if(mode>53000.0) {
        //sand code, wird ausgeführt wenn der framebuffer aufs canvas gezeichnet wird 
        float dune = 0.0;
        float base = 1.0;
        if (u_sandopacity != 0.0) {

            float opacity = abs(u_sandopacity);
            float time = u_sandtime;
            float offset = u_sandoffset;
            float choice = sign(u_sandopacity) * 0.5 + 0.5;
            vec4 tpos = mix(u_sandbump, u_sandpos, choice);

            dune = (0.4 + 0.4*texture2D(u_image, (tpos.ba + mod((pos-time*0.0037)*tpos.rg*2.288*u_sandscale,tpos.rg))/u_imagesize).r)
            * (offset + opacity*texture2D(u_image, (tpos.ba + mod((pos-time*0.0227)*tpos.rg*4.8*u_sandscale,tpos.rg))/u_imagesize).r
            //* (texture2D(u_image, (tpos.ba + mod((pos+time*0.00061)*tpos.rg*0.2*u_sandscale,tpos.rg))/u_imagesize).r*2.0)-0.25)
            * (texture2D(u_image, (tpos.ba + mod((pos+time*0.01187)*tpos.rg*1.31*u_sandscale,tpos.rg))/u_imagesize).r*1.5)-0.25)
            +  texture2D(u_image, (tpos.ba + mod((pos-time*0.12327)*tpos.rg*11.8*u_sandscale,tpos.rg))/u_imagesize).r*0.06;

            //dune *= v_tex.x;
            base = mix(max(0.0, 1.0-dune), 1.0-dune, choice);
        }

        vec4 c = texture2D(u_fb, pos);
        c = c*base + dune*u_sandcol;
        if(u_envm.r>0.0) c.rgb = c.rgb * u_envm.rgb + u_enva.rgb;

        gl_FragColor = c;
    }
    else
    {
        //code für splatter effekte die auf den hintergrund gezeichnet werden (unter sand)
        vec4 c = texture2D(u_image, pos);

        float dec = floor(mode);
        mode = fract(mode);
        float smode = fract(mode*10.0);
        float sat = mix( u_envm.a, u_enva.a, stp);
        float nmode = 1.0-smode;

        //0.9<mode additive blending
        c.a *= (mode>0.9) ? nmode : 1.0;
        //0.8<mode<=0.9 saturation
        sat *= (mode>0.8 && mode<=0.9) ? smode : 1.0;
        //0.6<mode<=0.7 make red
        c.rgb = (mode>0.6 && mode<=0.7) ? c.rgb*nmode + vec3(min(c.r+c.g+c.b,1.0)*smode* c.a, 0.0, 0.0) : c.rgb;
        //0.4<mode<=0.5 brightness
        c.rgb *= (mode>0.4 && mode<=0.5) ? (1.0+c.a*9.0)*max(smode-0.1,0.0) : 1.0;

        float cen = mod(dec,1000.0);
        float d = (dec/1000.0);
        float alpha = floor(d)/50.0;
        if(alpha>0.0){
            c.rgba *= alpha;
        }

        float condition = float(cen>=500.0);
        float l = min(min(c.r,c.g),c.b);
        vec3 lvec = vec3(l,l,l);
        vec3 lcol = c.rgb-lvec;

        float m = mix(1.0,c.r-l,condition);
        vec3 ref = mix(lcol,vec3(1.0,0.0,0.0),condition);

        vec3 hsv = rgb2hsv(ref);
        float hue = fract(cen/100.0);
        hsv.x += hue;
        //hsv.z *= huez; //könnte auch zum abdunkeln verwendet werden
        hsv.y*=sat;

        //abdunkeln, 5 stufen 500 weiss - 900 schwarz
        float dark = mod(cen,500.0);
        float gray = 1.25-(dark/400.00);
        vec3 tmp = mix(hsv2rgb(hsv),vec3(gray,gray,gray),(1.0-mod(hue*33.0,1.0))*condition);

        tmp *= mix(1.0,gray,float(cen>=100.0));
        c.rgb = vec3(l,l,l) + tmp*m;

        gl_FragColor = c;
    }
}

Re: [Projekt] Devader

Verfasst: 26.11.2017, 10:57
von scheichs
Ich bin zwar jetzt kein Shadergott, aber der da birgt allein vom Branchen wohl schon einiges an Optimierungspotenzial. Würde ich auf jeden Fall mal in seperate Shader aufdrösseln.

Re: [Projekt] Devader

Verfasst: 26.11.2017, 14:12
von marcgfx
Also zwei Shader sollten definitiv daraus entstehen, ob ich sonst noch was rausholen kann weiss ich nicht. Die ternary Operatoren sollten eigentlich schnell sein. Da ich mit alpha blending arbeite, ist es so weit ich verstehe nicht möglich in mehreren passes zu rendern um den depth buffer zu nutzen. Mein Verständnis davon ist sehr beschränkt.

Re: [Projekt] Devader

Verfasst: 26.11.2017, 17:23
von scheichs
marcgfx hat geschrieben:Die ternary Operatoren sollten eigentlich schnell sein.
EDIT: Ja Du hast recht.

Re: [Projekt] Devader

Verfasst: 27.11.2017, 16:14
von marcgfx
Danke scheichs. Ich weiss zwar nicht was du ursprünglich geschrieben hast, aber danke dass du dir dafür die Zeit genommen hast. Mir wär lieber ich hätte nicht "recht" und könnte was optimieren. Wenn jemand noch was doofes sieht :D, ich wäre echt froh drum.

Re: [Projekt] Devader

Verfasst: 27.11.2017, 17:55
von marcgfx
Bild
Ich weiss nicht ob sich jemand dran erinnert, in der ZFX-Action Version war das Gefährt eine Art Panzer. Den gibt es immer noch, ich habs heute per Zufall gefunden und wieder zum laufen gebracht. Eigentlich sollte ich an der Demo feilen... Ich denke die Panzerversion würde sich gut als Belohnung für das durchspielen auf Schwer oder sowas eignen. Eventuell sollte ich mir noch ein paar andere alternative Vehicle einfallen lassen. Eilt aber nicht ;)

Re: [Projekt] Devader

Verfasst: 27.11.2017, 18:08
von marcgfx
Ich habe in letzter Zeit etwas an meinen Imgur Alben geschraubt, Texte ergänzt und das jeweilige Datum eingefügt. Ist das interessant oder nur für mich was?
https://imgur.com/a/Pks3o

Re: [Projekt] Devader

Verfasst: 27.11.2017, 21:19
von xq
Also ich finde so "early stages"-bilder immer sehr cool, weil man dann immer auch sieht, wie sich das spiel entwickelt hat :)

Re: [Projekt] Devader

Verfasst: 29.11.2017, 19:30
von marcgfx
Bild
Ich will morgen eine neue Demo veröffentlichen, was denkt ihr?

Re: [Projekt] Devader

Verfasst: 30.11.2017, 18:17
von marcgfx
Die Links sind wieder weg. Jetzt muss man sich bei ner mailing liste anmelden :P
Es wird auch nicht gespamt werden, versprochen.
http://www.falkenbrew.com/demo.html

Re: [Projekt] Devader

Verfasst: 06.12.2017, 00:12
von marcgfx
Ich schätze mal der signup für die Demo verschreckt mir die meisten?

Mir wurde gesagt ich muss E-Mail-Adressen sammeln, ich würde lieber die Demo einfach zur Verfügung stellen und hoffen dass den Leuten das Spiel gefällt und sie es dann Wishlisten auf Steam... Naiv?

Nachdem mich Binding of Isaac etwas zu stark abgelenkt hat (Recherche), habe ich mein eigenes Spiel mal wieder durchgespielt. Wird inzwischen richtig farbenfroh zum Schluss :)
Bild

Was mir im Vergleich zu Binding of Isaac auffällt, ist dass ich viel weniger gestresst bin wenn ich spiele... Vielleicht liegt es daran, dass ich schon alles so gut kenne. Ich habe nicht die Randomisierung die in BOI verhängnisvoll sein kann, vielleicht aber süchtig macht? Braucht es Frust um ein richtiges Erfolgsgefühl zu haben?

Re: [Projekt] Devader

Verfasst: 06.12.2017, 08:19
von xq
Ich schätze mal der signup für die Demo verschreckt mir die meisten?
Jop, würde ich auch nicht machen... Hab so schon genug Spam und jedem, dem ich meine E-Mail geb, macht es potentiell schlimmer... (Auch wenn ich dir das mit dem no spam glaube ;) )
Ich habe nicht die Randomisierung die in BOI verhängnisvoll sein kann, vielleicht aber süchtig macht? Braucht es Frust um ein richtiges Erfolgsgefühl zu haben?
Gute Frage... Ich spiel ja selber lauter so Rogue-like Kram, wo "sterben → neustart" gilt, aber ich bin da auch recht frustresistent, mich zieht da eher die Herausforderung, wenn die Spiele richtig schwer sind, ohne unfair zu sein... (was leider viele AAA games verkacken, wo "je schwerer, desto bullet sponge" gilt)
Kann dir aber auch nicht genau sagen, was mich dazu bringt, hunderte stunden in solche Spiele zu stecken...

Re: [Projekt] Devader

Verfasst: 06.12.2017, 13:09
von marcgfx
Ich wollte bei Devader das Gefühl der Unzufriedenheit verhinden. Ich bin immer unzufrieden, wenn mich ein Spiel wieder in den Bann zieht mit eher fiesen Methoden. Im Stil von, ich habe ja nur Pech gehabt, nächstes Mal gehts besser. Oder wie in Civ mit "just one more turn". Die alten Games wie Contra waren halt schon etwas anders. Man hat gespielt und versagt. Ein neues Spiel dauert dann wieder recht lange und man überlegt es sich zwei mal ob man wieder von vorne beginnen möchte.

Ich habe jetzt eine Landingpage gebaut: http://www.devader.space/index.html

Fehlt was?

Re: [Projekt] Devader

Verfasst: 12.12.2017, 00:36
von marcgfx
Wieder gehts bei mir nur um Performance. Eigentlich sollte ich ganz andere Sachen machen (was ich nebenher auch tue, nur nicht was ich sollte).

Ich habe kürzlich bei Reddit rumgeklönt wegen meinen Performance-Issues und habe interessantes Feedback bekommen. Unter anderem habe ich erfahren, dass ich die CPU in den DevTools von Chrome drosseln kann. Jetzt drossle ich also meine CPU immer auf 25% was mir das Erkennen von Performanceproblemen massiv erleichtert. Dies hat dazu geführt, dass ich gewisse sehr teure Operationen weniger oft Aufrufe. Die Anfangsszene mit vielen Assistenten macht mir aber noch Probleme (Boids, Line of Sight, viele Spinnen), läuft aber schon besser.

An der Spinnen-KI habe ich auch geschraubt, dabei entstand dieses Bild mit den Farbkodierten aktionen der Spinnen.
Bild

Vor einiger Zeit habe ich die Schüsse optimiert, indem ich aus zwei Bildern ein Bild gemacht habe. Hat die Bilderzahl bei den Schüssen schön halbiert. Mir viel heute nacht ein, dass es da noch einige andere Möglichkeiten gibt. Ich trenne in Devader alle Objekte von ihren Schatten, da die meisten ja vom Himmel fallen. Allerdings sind die meisten Objekte am Boden -> Ich brauche ein zusätzliches Bild mit Objekt und Schatten, somit spare ich mir das zeichnen des Schattenlayers sobald das Objekt am Boden ist. Diese Umstellung ist optisch kaum zu erkennen (beim zerstören ist es sogar besser) und reduziert die Anzahl Polygone.

Mit der Maus habe ich auf dem Laptop komisches erlebt, bei tieferen Frameraten laggt der Cursor, was sehr unangenehm ist. Die Ursache für Cursor-Lag muss ich noch finden. Da ich vor kurzem "Binding of Isaac" getestet habe, kam mir die Idee eine ähnliche Steuerung zu implementieren. Wer es nicht kennt, in "BoI" kann man mit WASD in 4 Richtungen laufen und mit den Pfeiltasten in 4 Richtungen schiessen. Meine Umsetzung erlaubt auch das diagonale Schiessen, es spielt sich so erstaunlich gut. Auf dem Laptop habe ich noch nicht getestet.
Das doofe daran ist: Ich müsste das im Spiel klar dokumentieren, vermutlich noch die Tasten konfigurierbar machen. Wieder Arbeit.

Dann hatte ich noch die blendende Idee mal kurz was für Farbenblinde zu machen. Nach dem ich mich etwas eingelesen hatte, war mir klar, dass ich nicht wusste was ich tun soll. Ein simpler Filter finden viele Farbenblinde anscheinend nicht schön. Da rot meine Hauptfarbe ist, werden Rot-Grün Farbenblinde eventuell Probleme haben. Ich hatte mal die Idee den HSV Farbraum zu warpen, so dass Rot und Grün viel näher bei einander sind. Das war mir dann aber zu kompliziert für eine schnell-schnell Aktion, also habe ich mal mit Hue-Rotationen gespielt. Die Idee war dass ich so weit rotiere, dass der Robo blau wird. Am Schluss ist folgendes entstanden:
Bild
Aktuell kann man mit Shift-G/H den Hue von Objekten anpassen. Ich weiss nicht genau was ich damit machen soll :) ... Ich könnte ja in den Settings einen Regler einbauen.

Re: [Projekt] Devader

Verfasst: 13.12.2017, 01:13
von marcgfx
Bild
Ich arbeite weiter daran das Spiel endlich Laptop tauglich zu bekommen. Heute war die GPU auch etwas an der Reihe, allerdings habe ich mir die Aufgabe recht einfach gemacht. Beim Einkaufen kam mir die Idee einfach den Sand und den Sturm komplett zu streichen. Früher war das keine Option, weil der Hindergrund ohne Sand mega langweilig war. Im Low/Medium Modus zeichne ich nur noch den Hintergrund. Alle Splattereffekte werden ebenfalls auf diesen Hintergrund gezeichnet. Im Gegensatz zum High Mode verblassen die Splattereffekte nicht mit der Zeit, aber das sieht gar nicht mal so schlecht aus finde ich.

Somit bin ich im Low/Medium Mode auf 3 Drawcalls unten. Die Shader selbst sind noch nicht verbessert. Werde es morgen mal am Laptop testen, drückt mir die Daumen.

Re: [Projekt] Devader

Verfasst: 21.12.2017, 19:34
von marcgfx
Meine Mission Devader auf meinem Laptop zum laufen zu bringen geht weiter. Heute morgen ist mir etwas naheliegendes eingefallen was ich bislang noch nicht versucht hatte: Die Bildschirmauflösung drosseln. Mein MacBook hat ein Retina Display mit 2560x1600 Auflösung. Leider lässt sich das alles nicht so einfach auf OSX umstellen, aber ich habs dann geschafft und Devader mal mit 800x600 laufen lassen. Die Framerate war statt <20 bei 50fps. Jetzt muss ich einen Weg finden die Auflösung via NWJS verändern zu können. Leider gibt es dafür noch keine Lösung. SFML scheint Cross-Browser Display Management zu haben, aber ich habe keine Ahnung ob ich das zusammenführen kann.

Re: [Projekt] Devader

Verfasst: 21.12.2017, 21:13
von xq
Hey Marc!

Du kannst auch das upsampling in deinem Spiel machen:
Rendere dein Spiel in ein Rendertarget mit niedrigerer Auflösung (zum Beispiel ¼ Bildschirmauflösung) und zeichne das auf volle Bildschirmauflösung.

Was hierbei sinnvoll wäre: UI trotzdem auf nativer Auflösung, Spiel aber nicht. Damit fällt die Matschigkeit nicht so sehr auf. Damit kannst du nämlich dann auch am Filtering rumspielen und eventuell sogar mit nearest hochskalieren anstelle von linearem Filtering.

Grüße
Felix

Re: [Projekt] Devader

Verfasst: 21.12.2017, 23:01
von marcgfx
Hey Felix, ich rendere bereits in einer geringeren Auflösung. Mein Canvas hat 1280x800 trotz der Retina-Auflösung von 2560x1600. Deshalb habe ich auch kaum Verbesserung erwartet. Der Unterschied für die Performance ist wieder erwarten enorm. Ich weiss nicht genau warum, ich vermute das GUI kostet was + das Canvas muss auf 2560x1600 gerendert werden für das Compositing. Die animierten Zwischensequenzen laufen ebenfalls viel flüssiger, was definitiv Sinn macht.

Am liebsten würde ich jemanden Beauftragen ein NWJS modul zu machen das SFML wrapt... Selber traue ich mich grad nicht eine weitere Baustelle aufzumachen. Mal sehen.

Re: [Projekt] Devader

Verfasst: 21.12.2017, 23:07
von xq
Okay, krass. Dachte nicht, dass sich das so stark niederschlägt... Wie stehts um DPI Scaling für dein Spiel? Hast du da schon mal rumgespielt, ob man da was ändern kann?
Ansonsten viel Erfolg beim optimieren!

Re: [Projekt] Devader

Verfasst: 22.12.2017, 00:22
von marcgfx
Danke Felix. Ok, hab es noch mal getestet 1280x800 vs 2560x800. Die Anfangsszene ist 35-40 vs 20-25 fps. 800x600 ist dann bei 50-60fps.

DPI scaling? Ich weiss nicht was du meinst.

Re: [Projekt] Devader

Verfasst: 22.12.2017, 08:55
von xq
Soweit ich weiß, kannst du in Windows (wie es bei Linux/MacOS steht, weiß ich nicht), für Programme DPI-Skalierung aktivieren.
Das sorgt dann dafür, dass das Programm vom OS gesagt bekommt, dass die Bildschirmauflösung niedriger ist als tatsächlich und damit sind Programme, die nicht DPI-aware sind, nicht winzig klein.

Ich musste das zum Beispiel für Gamestudio auf nem Surface Pro aktivieren, da dessen Standard-Schrift nur 8 Pixel hoch ist und das ganze bei 216 DPI dann nur 0,9 Millimeter waren. Mit DPI-Scaling waren es dann Fake-96-DPI und damit ca. 2,1 mm