Showroom - Aktuelle Arbeiten und Projekte

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
scheichs
Establishment
Beiträge: 385
Registriert: 28.07.2010, 20:18

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von scheichs » 07.04.2019, 19:05

Hatte mir mal überlegt es noch an Musik zu koppeln... ich bin auch nicht masslos enttäuscht von der Performance damals. Die App wurde massiv von Microsoft promoted im Windows Phone Store. War super oft als Recommended auf der entsprechenden Kategorieseite (Unterhaltung).
Waren aber trotzdem niedrige Umsätze weil das Ökosystem halt wenig Nutzer hatte und weil es wie Du schon sagst iwo limitiert ist. Auf den anderen Plattformen habe ich es meist als "Pipecleaner" eingesetzt, um zu schauen wie das mit dem Publishing Prozess läuft, etc.
Nun es war mal wieder schön was schnelles zu prototypen neben dem ernsthaften Kram.

scheichs
Establishment
Beiträge: 385
Registriert: 28.07.2010, 20:18

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von scheichs » 07.04.2019, 23:49

Hab mal nochn 3D FlowField dazugemacht

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 09.05.2019, 23:39

Ich wurstel mal wieder an neuen Projekten

Das ganze läuft auf meinem Gammel-Laptop bei ~300 Metern/Blöcken Sichtweite mit 60 FPS (ohne Culling, also auch 300 Meter "nach hinten") und bei 1000 Metern Sichtweite mit 30 FPS. Das Level ist endlich (1024² mit Chunks a 16×128×16) und soll auch nicht "unendlich" groß werden.

Was neben dem Renderer schon funktioniert: Physik bzw. der Raycaster für die Kollision sowie die Bestimmung der getroffenen Block-Seite. Jetzt steht also einem Character Controller und "Buddeln" nix mehr im Wege.

Bild
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 11.05.2019, 02:35

Überraschend einfacher Terrain-Generator mit GIMP: Plasma → Grayscale → Oil Painting (Großer Radius) → Blur (wenig Radius) ergibt Hügellandschaft:

Bild

Nachtrag: Mehr Screenshots, jetzt auch mit 30% mehr Wasser:
Bild
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
marcgfx
Establishment
Beiträge: 1320
Registriert: 18.10.2010, 23:26

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von marcgfx » 11.05.2019, 03:16

Coole Sache! Jetzt noch mit Schatten bitte!

scheichs
Establishment
Beiträge: 385
Registriert: 28.07.2010, 20:18

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von scheichs » 11.05.2019, 11:39

Boah ich kann keine Klötzchen mehr sehen ... *Duck ...
Nee, schönes Ding! Bin ma gespannt was de draus machst.

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 11.05.2019, 18:36

marcgfx: Schatten wird wohl noch eine Weile brauchen… Ja, sind cool, aber die fressen auf meinem Laptop so viel Leistung, dass ich dann nix mehr sinnvoll testen könnte ;)

scheichs: Bin auch gespannt... Grade hab ich einfach massig Spaß, den Renderer zu optimieren und zu tunen.

Darum: Jetzt neu! Frustrum Culling und noch weniger Polygone als vorher. Von 60 FPS bei 200 Block Sichtweite auf 60 FPS bei 600 Block Sichtweite hat sich auf jeden Fall gelohnt. Die Activity Map zeigt mir jetzt auch an, in welchen Chunks gerade Änderungen passieren (Neugeneration des Meshes), zudem sieht man auch, welches Areal gerendert werden soll und was davon tatsächlich gerendert wird...

Bild
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 11.05.2019, 23:40

Wenn man beim Bug suchen vergisst, eine Zeile Code wieder einzukommentieren und in gefühlt den letzten 50 Screenshots kein Shading aktiviert ist...

Sieht doch mit gleich viel besser aus!

Bild

Hier noch ein Screenshot der kompletten Map:
Bild

Und hier noch ein kleines Video, weil warum nicht:

Die Activity Map zeigt an, welche Chunks noch kein Mesh haben (matschgelb), gerade aktualisiert werden (lila), gerendert werden (weiß), in Sichtweite, aber geculled werden (hellgrau) oder nicht gerendert werden (dunkelgrau)
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

joeydee
Establishment
Beiträge: 667
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von joeydee » 03.08.2019, 20:11

Bild
Weil hier so wenig los ist: Ich fahre z.Zt. mit einem blauen Sessel über eine grüne Wiese mit Baum-Wänden und sammle rote Punkte ein.

Mal wieder an meinem Entity-Component-System weitergeschraubt, sowas lässt sich am besten in 2D topdown testen, ist aber natürlich nicht daran gebunden. Die Physik ist nun endlich auch komponentenbasiert, und die gefundenen Kollisionen werden an die custom Game-Logik übergeben. Mit dem Komponentensystem lassen sich dann leicht komplexere Entscheidungen formulieren was alles ausgelöst werden soll wenn A auf B trifft, und ob z.B. rigid response stattfindet oder nicht.

michismail
Beiträge: 4
Registriert: 06.08.2013, 21:20
Benutzertext: Grafiker
Echter Name: Michael

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von michismail » 22.09.2019, 17:58

Hi an alle Spiel entwickelnden Kollegen :)

wir haben nach einigem schwitzen und Knobbeln unsere erste Game App in einem kleinen Dreiköpfigem Team relased. Da wir uns nun nach und nach etwas tiefer in die Materie vorwagen wollten, hatten wir uns vorgenommen in einem ersten Durchlauf einfach mal eine kleine App in den Google Play Store zu bringen.

Unsere Game-App ist ein knobbliges Puzzle Spiel, in welchem der Spieler dem "tapferen Schneiderlein" helfen muss, Kleidungsstücke für verschiedene Märchenfiguren anzufertigen. Dabei muss der Schneider effizent mit seinen Materialien umgehen und die vorgegeben Formen so aus dem Stoff ausschneiden, dass möglichst wenig Ausschuss entsteht...

Wenn ihr Lust habt, würde mich euer Feedback sehr interessieren. Die App hat zugegeben noch ein paar Schwächen. :) Als Artists müssen wir in UX noch einiges dazulernen.

Link zum Game: https://play.google.com/store/apps/deta ... hneiderApp
Name: Das tapfere Schneiderlein

Wir haben einiges spannendes dazugelernt, was Monetarisierung von Unity Ads - bis hin zu den Hürden der Platzierung im Google Play Store angeht.
Wir hoffen dieses gelernte hilft uns in Zukunft manche Fehler zu vermeiden.
Wenn sich also hier jemand austauschen mag - sehr gerne.
Ansonsten freue ich mich über euer Feedback und eure Eindrücke.

Bild
Zuletzt geändert von xq am 22.09.2019, 19:13, insgesamt 1-mal geändert.
Grund: Link gefixed

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 22.09.2019, 19:19

Gratulation zum Release! Aus Mangel an einem Android-Gerät kann ich das Spiel leider nicht testen :(
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 01.10.2019, 00:45

Starcow hat mich dazu inspiriert, mal ein Kollisionssystem auf Basis von 2D-SDFs zu implementieren:



Die gesamte Kollision sind vllt. 50 Zeilen Code, wenn überhaupt. Das ist alles schön übersichtlich. Morgen mal schauen, wie sich das ganze mit komplexeren SDFs schlägt.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
Jonathan
Establishment
Beiträge: 1293
Registriert: 04.08.2004, 20:06

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von Jonathan » 01.10.2019, 10:02

Sieht nett aus. Ich nehme an, du hast einen kreisförmigen Avatar und testest auf Kollision in dem du seinen Radius mit dem Ergebnis der Abstandsfunktion vergleichst?

Was mich dann noch interessieren würde: Wie bekommst du die Oberflächennormale bzw. den Kontaktpunkt? Im Video ist der ja mit eingezeichnet, aber mir ist nicht direkt klar, wie man den aus der SDF bekommt.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 01.10.2019, 10:12

Jonathan hat geschrieben:
01.10.2019, 10:02
Sieht nett aus. Ich nehme an, du hast einen kreisförmigen Avatar und testest auf Kollision in dem du seinen Radius mit dem Ergebnis der Abstandsfunktion vergleichst?
Korrekt. Für die meisten Top-Down-Spiele reicht das ja völlig aus an Kollisionscode (alles Player Characters sind ein Kreis, wenn man nur fest genug daran glaubt).
Jonathan hat geschrieben:
01.10.2019, 10:02
Was mich dann noch interessieren würde: Wie bekommst du die Oberflächennormale bzw. den Kontaktpunkt? Im Video ist der ja mit eingezeichnet, aber mir ist nicht direkt klar, wie man den aus der SDF bekommt.
Tja, der Trick hier nennt sich "Gradient" und ist dieses feine Stückchen Code hier:

Code: Alles auswählen

glm::vec2 gradient;
{
	float x0 = get_distance_to_point(player_pos + glm::vec2(1, 0));
	float x1 = get_distance_to_point(player_pos - glm::vec2(1, 0));
	float y0 = get_distance_to_point(player_pos + glm::vec2(0, 1));
	float y1 = get_distance_to_point(player_pos - glm::vec2(0, 1));

	gradient.x = x1 - x0;
	gradient.y = y1 - y0;

	gradient = normalize(gradient);
}
Man bestimmt einfach die Richtung der größten Änderung, damit hat man dann quasi direkt die Oberflächennormale von der Oberfläche, die einem am nähsten ist. Das tolle an diesem Trick ist, dass man sich nicht mal darum kümmern muss, was passiert, wenn man mit zwei Oberflächen gleichzeitig kollidiert. Denn dann ist der Gradient der Mittelwert beider Normalen und das ganze verhält sich automatisch korrekt. Sieht man auch hier ganz schön:

War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
Jonathan
Establishment
Beiträge: 1293
Registriert: 04.08.2004, 20:06

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von Jonathan » 01.10.2019, 23:53

Ah ja, natürlich, ich hatte auf der Webseite geschaut, ob dort auch irgendwo analytische Ableitungen stehen, was ja prinzipiell auch eher nervig als schwer sein sollte. Mit finiten Differenzen geht das natürlich auch, die Funktionen sind ja alle eigentlich nicht so groß, dass die Extraauswertungen groß stören würden. Ich war spontan nur irgendwie nicht auf die Idee gekommen, dass so zu lösen, weil mir der Aufwand zu groß vorkam, bevor ich darüber nachgedacht habe.
Du könntest evtl. in der Gradientenberechnung den Offset (bzw. das Epsilon) noch wesentlich kleiner machen (z.B. 1e-4 anstatt 1). Da du eh hinterher normalisierst ist das nicht teurer, dürfte das Ergebnis in manchen Situationen aber genauer machen.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 02.10.2019, 09:50

Jonathan hat geschrieben:
01.10.2019, 23:53
Du könntest evtl. in der Gradientenberechnung den Offset (bzw. das Epsilon) noch wesentlich kleiner machen (z.B. 1e-4 anstatt 1). Da du eh hinterher normalisierst ist das nicht teurer, dürfte das Ergebnis in manchen Situationen aber genauer machen.
Die Präzision ist schon völlig ausreichend, zudem sind mein Kreise hier zwischen 32 und 96 groß, ich bin also schon gut Faktor 50 unter Strukturgröße. Wenns Probleme macht, kann man das natürlich immer noch reduzieren, aber bisher funktioniert's einfach und damit bin ich dann zufrieden
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

scheichs
Establishment
Beiträge: 385
Registriert: 28.07.2010, 20:18

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von scheichs » 04.10.2019, 11:49

xq hat geschrieben:
01.10.2019, 00:45
Starcow hat mich dazu inspiriert, mal ein Kollisionssystem auf Basis von 2D-SDFs zu implementieren...
Schöne Sache. Danke für's zeigen!

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 04.10.2019, 12:39

Ich bin immer noch überrascht, wie stabil und "glitchfrei" das ganze funktioniert. Ich hab mal noch nen kleinen Stresstest gecodet, der auch die drei "Betriebsmodi" des Systems (bounce, glide, nix) zeigt:



Man sieht aber auch grade bei "nix", dass das System bei weitem nicht perfekt ist (und ich noch nicht alle Edge Cases abgearbeitet habe)
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 06.10.2019, 21:13

Dieses Wochenende hab ich wieder "von vorne" angefangen: Ein neues Framework auf Basis von Zig und OpenGL ES 2.0:
Bild

Seit sehr langer Zeit mal wieder einfaches Shadowmapping implementiert, als nächstes ist Postprocessing dran.
Meine Erfahrung mit Zig bisher ist ein: "Läuft". Läuft sogar richtig gut, die Sprache tippt sich angenehm und ist gut lesbar. Hier mal ein kleiner Auszug aus dem OBJ-Loader:

Code: Alles auswählen

pub fn load(allocator: *std.mem.Allocator, path: []const u8) !Model {
    var file = try std.fs.File.openRead(path);
    defer file.close();

    var stream = file.inStream();

    var model = Model{
        .positions = std.ArrayList(Vec4).init(allocator),
        .normals = std.ArrayList(Vec3).init(allocator),
        .textureCoordinates = std.ArrayList(Vec3).init(allocator),
        .faces = std.ArrayList(Face).init(allocator),
        .objects = std.ArrayList(Object).init(allocator),
        .allocator = allocator,
    };
    errdefer model.deinit();

    while (true) {
        var line = stream.stream.readUntilDelimiterAlloc(allocator, '\n', 1024) catch |err| switch (err) {
            error.EndOfStream => break,
            else => return err,
        };
        defer allocator.free(line);

        // parse comments
        if (std.mem.startsWith(u8, line, "#")) {
            continue;
        }
        // parse vertex
        else if (std.mem.startsWith(u8, line, "v ")) {
            var iter = std.mem.separate(line[2..], " ");
            var state: u32 = 0;
            var vertex = vec4(0, 0, 0, 1);
            while (iter.next()) |part| {
                switch (state) {
                    0 => vertex.x = try std.fmt.parseFloat(f32, part),
                    1 => vertex.y = try std.fmt.parseFloat(f32, part),
                    2 => vertex.z = try std.fmt.parseFloat(f32, part),
                    3 => vertex.w = try std.fmt.parseFloat(f32, part),
                    else => return error.InvalidFormat,
                }
                state += 1;
            }
            if (state < 3) // v x y z w, with x,y,z are required, w is optional
                return error.InvalidFormat;
            try model.positions.append(vertex);
        }
        // parse uv coords
        else if (std.mem.startsWith(u8, line, "vt ")) {
        	…
        } else {
            std.debug.warn("read line: {}\n", line);
        }
    }

    return model;
}
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
xq
Establishment
Beiträge: 1322
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von xq » 11.10.2019, 00:28

Es geht weiter mit "von vorne Anfangen": Level-Laden mit Zuordnung zu Game Logic, Input, Game Logic ausführen:
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

scheichs
Establishment
Beiträge: 385
Registriert: 28.07.2010, 20:18

Re: Showroom - Aktuelle Arbeiten und Projekte

Beitrag von scheichs » 11.10.2019, 08:56

Total süss! Bin auch -ab und an- an 'nem Soccer Projekt dran.

Antworten