[Projekt] Cyberhive

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.

[Projekt] Cyberhive

Beitragvon joeydee » 29.06.2017, 23:42

Ich habe einfach mal den Beschluss gefasst, aus diesem Prototyp/Experiment ein ausführlicheres Projekt zu machen.

prototype.jpg

Die Grundlage kennt man noch aus dem allgemeinen Vorstellungsthread: Eine selbstgebastelte Minimal-Engine für einen kleinen Drohnen-Shooter aus Egoperspektive.
Eine tolle Renderengine ist dabei Nebensache, mir geht es bei dem Projekt hauptsächlich um möglichst bequeme und wiederverwendbare Wege, um Standardaufgaben wie Kollision, AI, irgendwas treffen/sammeln/schalten, Türen öffnen, Trigger, States usw. immer weiter auf einen übersichtlichen Nenner zu bringen. Sprich, mein persönliches Framework zu erweitern und aufzuräumen. Und das geht für mich besser anhand von Miniprojekten als durch pure Planung.

earlyconcept.jpg

Irgendwann hatte ich die grauen Texturen satt, obigen Screenshot übermalt um mal eine grobe Idee für ein Thema zu bekommen, und dann erste Texturen gemacht.

texture_workflow.jpg

Der Texture-Workflow sollte dabei auch möglichst einfach bleiben. Ich habe schon Texturen mit x Maps gemacht und weiß wie sehr das alles aufhalten kann, bis einmal ein ganzes Set zusammengestellt und mit den Shadern durchgetestet ist.
Daher: Nur 3 WYSIWYG-Kanäle, keine Effektlayer, Grundlage ist immer ein Vektor-Tiefenlayout, darüber eine Art SSAO-Filter, der Rest wird mit möglichst neutraler Lichtrichtung gemalt, Illu wird für ein paar HDR-Werte im Shader per Exponent aus den hellsten Werten der Diffuse geschätzt und am Ende auf den Fog-Pass addiert. Keine (dynamische) Beleuchtung. Einfacher gehts kaum, wenn man statt reinen DevTexes ein klein wenig Atmo haben möchte. Erinnert an die frühen Shooter, aber die Geometrie ist besser lesbar als damals.

Tatsächlich hat mich "Descent" bei dieser Idee geprägt. Entsprechend auch die obligatorische Story:

Weit unter dem Wüstensand hat sich in den vergangenen Jahrzehnten, unbemerkt von der Menschheit, eine autonome unterirdische Anlage entwickelt.
Gebaut von Maschinen, die sich selbst reproduzieren und weiterentwickeln können, zieht sich die Anlage bereits wie ein Nervennetz mit unzähligen Etagen und Knotenpunkten tief durch das Grundgestein.
Langsam aber mit stetem Fortschritt bewegen sich die Adern auf die ersten Großstädte und Kraftwerke zu ...


Oder die Kurzfassung:
Schieße auf alles was sich bewegt bevor es dich erwischt, und sammle alles ein was schön blinkt.

Was noch an Gameplay-Elementen Einzug halten wird, steht noch nicht fest. Sicher noch was mit Codes für Türen.
Auch wenn das hier jetzt der Einfachheit halber in einem Grid-Level spielt, nichts davon ist an ein Grid/Zellen/Portale oder überhaupt ein Levelprinzip gebunden. Entsprechend geht keine Optimierung flöten, wenn man mal große Räume haben will. Oder mal gar keine.

Und so sieht das aktuell aus, mit vorläufig generisch erstellten Drohnen:
screen01.jpg

screen02.jpg
joeydee
Establishment
 
Beiträge: 620
Registriert: 23.04.2003, 15:29

Re: [Projekt] Cyberhive

Beitragvon marcgfx » 30.06.2017, 00:19

Sieht schon ziemlich cool aus! Für Concept-Art scheinst du auch ein gutes Händchen zu haben. Womit hast du das gemacht? Hast du womöglich ein Tablet zum malen (ich wollte mir sowas immer mal zulegen...)?
Benutzeravatar
marcgfx
Establishment
 
Beiträge: 1130
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberhive

Beitragvon MasterQ32 » 30.06.2017, 00:51

Schließe mich meinem Vorredner an, sieht schon sehr cool aus! Aber wofür brauchen den selbstreplizierende Würfelstrukturen eigentlich diese Bildschirme auf allen Blöcken?
Duct tape is like the force. It has a light side, a dark side, and it holds the world together.
Benutzeravatar
MasterQ32
Felix Queißner
Establishment
 
Beiträge: 1160
Registriert: 07.10.2012, 14:56

Re: [Projekt] Cyberhive

Beitragvon scheichs » 30.06.2017, 03:17

yummy yummy.... das hört sich alles sehr clever an, was Du Dir überlegt hast!
scheichs
Establishment
 
Beiträge: 289
Registriert: 28.07.2010, 20:18

Re: [Projekt] Cyberhive

Beitragvon joeydee » 30.06.2017, 07:37

Danke euch.
@marcgfx: Richtig geraten. Ich habe Jahre mit einem A5-Intuos verbracht (sowas würde ich dir als Einstieg empfehlen) und mir vergangenes Jahr ein Cintiq 22" zugelegt. Programm ist PSD CS2, aber das ist eher zweitrangig.

@MasterQ32, die ehrliche Antwort: Ich weiß noch nicht wofür die überall Monitore brauchen könnten, ich brauche sie aktuell für ein wenig Abwechslung, "sense of scale", sowie einen Vorwand warum der Nebel im Hintergrund grün leuchtet. Zur Zeit des Concept-Art stand noch keine Story fest, ich habe einfach mal 3-4 passende Texturideen umgesetzt und zufällig über die Wände verteilt. Sollten mir Monitore am Ende noch gefallen, wird sich dafür sicher ein Story-Hint einflechten lassen.
joeydee
Establishment
 
Beiträge: 620
Registriert: 23.04.2003, 15:29

Re: [Projekt] Cyberhive

Beitragvon Krishty » 30.06.2017, 11:03

Das gefällt mir, und wie du entwickelst, klingt so wunderbar effizient :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
 
Beiträge: 6508
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy

Re: [Projekt] Cyberhive

Beitragvon joeydee » 14.07.2017, 12:25

Nachträglich noch danke, Krishty, solche Worte aus deinem Mund in meinem Thread ... :)


Auch wenn es nicht die angepeilte Zielplattform ist - ich habe es einmal gewagt eine sehr frühe Version für Browser/Flashplugin zu compilieren. Nur aus Neugierde:
http://develop.diehlsworld.de/hive/

Steuerung:
- WASD2X zum "strafen" (2 und X für steigen/sinken),
- Maus (klicken+ziehen) oder Cursor zum Umschauen,
- Space zum Ballern.
Klick auf die halbtransparente Fläche am Anfang startet das Ganze.

Es wird ein Zufallslevel generiert; theoretisch kann man in einer kleinen Blase (Levelabschnitt ohne Verbindung zum Rest) gefangen sein, dann einfach nochmal laden.
Sterben kann man in dieser Demo nicht, ist einfach mal zum umschauen gedacht.
Kästchenreihe oben: Punkte; kann man durch Sammeln gelber Chipkarten erhöhen. Unten: Verbleibende Chipkarten und Drohnen im Level. Wenn man eine Drohne zerstört hat (3 Treffer notwendig), bleibt eine Chipkarte übrig. Kann sein dass man nicht alles findet - die Objekte können nämlich ebenso in Blasen gefangen sein.
Und wenn man alles hat, passiert ... tadaaa ... nichts. Das ist nur die Basis, auf der man evtl. ein Spielprinzip aufsetzen könnte, mehr noch nicht.

Wenn ein oder mehrere größere Kästchen links oben in der 2. Zeile blinken, heißt das, man wurde gesehen und wird verfolgt. Innerhalb eines Zeitrahmens fliegt die Drohne bis zur zuletzt gesichteten Position. Keine aktive Suche oder patrol. Das ist momentan die ganze KI.
Den Drohnen fehlen noch ein paar LEDs damit man sie besser sieht. Denen fehlt eigentlich noch alles. Die Box-Art ist nur generischer Platzhalter, mit ebenso generischen Gittertexturen. Das verschwindet noch arg im aktuellen Hintergrund.
Das Fadenkreuz fehlt, Schüsse werden noch nicht dargestellt, Einschläge passieren mit Lichtgeschwindigkeit und ergeben grundsätzlich eine kleine Explosion. Eingesteckte Treffer merkt man höchstens an einem kleinen Pusher.
Insgesamt fehlt also noch sehr viel Feedback an den Spieler.

Was bzgl. Flash zu erwarten war und ist:
- Einem unbekannten Browser mitzuteilen, dass er einem Plugin Zugriff auf Hardwarebeschleunigung geben soll scheint ein größeres Ding zu sein. Bin mir nicht sicher ob das überall reibungslos klappt.
- Der Garbage Collector im Flash-Plugin ist totaler Müll. Schon immer. Da noch einige quick'n'dirty-Aktionen drin sind, kann der öfters mal gnadenlos zuschlagen.
- In manchen Testumgebungen ruckelte das an Stellen, wo es gar nicht nachvollziehbar war.
- Manche Browser scheinen ein grundsätzliches Problem damit zu haben, wenn mehrere Tasten dauerhaft gedrückt sind und dazu noch Mausaktionen kommen. Fühlt sich wie ein Tastaturüberlauf an, sowas hatte ich auch schonmal mit JS/WebGL. Lässt sich softwareseitig leider nicht abfangen.
- Flash ist tot. Gottseidank. Die Performance ist viel zu abhängig vom verwendeten Browser bei ressourcenkritischen Projekten.
- In einer AIR-Installation läuft das alles deutlich besser. Mac & PC Desktop wäre dann auch das primäre Ziel. Dazu wirds auch mal einen Download geben, bei Gelegenheit.
joeydee
Establishment
 
Beiträge: 620
Registriert: 23.04.2003, 15:29

Re: [Projekt] Cyberhive

Beitragvon marcgfx » 14.07.2017, 14:38

Das Spiel hat auf meinem Macbook Pro einwandfrei funktioniert. Ich habe mit WASD und Pfeilen gespielt Eine Drohne ist mir nicht über den Weg gelaufen, aber ich habe einige dieser gelben Kärtchen gesammelt. Die Rotation war mir etwas zu langsam, mit der Maus wärs sicher besser gewesen. Orientierung hatte ich überhaupt keine, das Fliegen an sich hat mir aber gut gefallen :)
Benutzeravatar
marcgfx
Establishment
 
Beiträge: 1130
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberhive

Beitragvon joeydee » 02.05.2018, 09:21

Dank der einen und anderen Action sowie dem Beschluss, die zugrundeliegende Technik komplett auf C++ umzubauen, war die Weiterentwicklung an diesem Projekt etwas stehengeblieben. Aber noch nicht auf Eis gelegt. Hier ein kleines Zwischenupdate, da man seit ein paar Tagen auch mal wieder Farbe sieht statt nur graue Dev-Texturen und Linien.

Bild
Ob es Außenlevel geben wird bin ich mir noch gar nicht sicher. Farbiger Nebel mit etwas "Zero-Dawn"-Farbschema funktioniert aber immer, innen wie außen.

Bild
Vieles wird in Retro-Flat-Optik bleiben, aufgemalte Details und Alpha-Testing statt echte Geometrie. Der Font ist nicht final, bleibt aber monospaced.
Im Moment teste ich ausschließlich in prozedural erstellten Levels, um mir das ständige Anpassen eines Levelformats zu ersparen. Bis mal das Wesentliche enthalten ist. Bis dahin sieht es überall relativ gleich aus.
Gameplay- bzw. Missionsmäßig wird es ein einfacher Verschnitt aus allgemein Bekanntem. Von den drei hier gelisteten "Missionszielen" ist aktuell nur das mittlere keine Fake-Anzeige :D
joeydee
Establishment
 
Beiträge: 620
Registriert: 23.04.2003, 15:29

Re: [Projekt] Cyberhive

Beitragvon scheichs » 02.05.2018, 11:52

Super atmosphärisch! Vor allem die monströse Struktur im Hintergrund sieht super geil aus!
scheichs
Establishment
 
Beiträge: 289
Registriert: 28.07.2010, 20:18

Re: [Projekt] Cyberhive

Beitragvon joggel » 03.05.2018, 06:17

Sieht sehr fett aus (y)
bald mit neuem Avatar
Benutzeravatar
joggel
Establishment
 
Beiträge: 1334
Registriert: 06.11.2007, 19:06
Wohnort: Dresden

Re: [Projekt] Cyberhive

Beitragvon joeydee » 12.05.2018, 20:13

Passt jetzt noch nicht direkt zu Hive, eher zum Framework/Engine im Allgemeinen, aber die Technik wird hier dann natürlich auch Einzug halten.

Meine Entity-Verwaltung war schon immer in Richtung Data-oriented inspiriert, d.h. Komponenten in gemeinsamen Listen gesammelt welche von einem jeweils dafür spezialisierten System am Stück abgearbeitet werden können, statt jeweils einzeln in einer vererbten Entity-Klasse zu liegen mit update()-Methode, Komponenten-Aufzählungen, Typkennungen oder was einem sonst so einfällt um die typischen Probleme zu lösen.

Meine bisherige Lösung (mit Querverweisen zwischen Komponenten) war allerdings noch sehr unflexibel, je komplexer die Aufgaben wurden desto weniger wiederverwendbar in anderen Projekten.
Nun habe ich das Data-oriented noch etwas konsequenter umgesetzt, ganz weg von Klassen, Instanzen, Referenzen und Methoden für ein Entity. Hin zu reinen Daten(paket)listen und Systemverarbeitern. Nicht wegen Geschwindigkeit und möglicher Parallelisierung (dafür sind meine Lookups viel zu unoptimiert und meine Projekte viel zu klein), sondern einfach wegen der Flexibilität.

Das Handling fühlt sich jetzt praktisch wie eine riesige Partikel-Engine an: jede Komponente (Position, Bewegung, Mesh, KI, ..., MyNewHyperFancyAspectTomorrow) "ist" praktisch ein Partikel und wird per spawn(id) in seiner Liste (System) aktiviert. Ein festes Paket/Struct/Klasse welches die Komponenten bündelt in der Form "Entity{unsigned id, Vector3D position, AiComponent ai, ...}" gibts nicht mehr.
Wenn ich im Render-System dann spontan entscheide, dass ich z.B. die Lebensenergie von KI-Elementen als Balken mitrendern will, frage ich die KI-Liste, welche ihrer Elemente dieselbe id wie mein aktuelles Renderelement haben. "Entities" existieren also gar nicht mehr physikalisch in ihrer Komponenten-Zusammensetzung, sondern werden on-the-fly bei Bedarf lose "zusammengesetzt", und zwar nur das was gerade für die Aufgabe von Belang ist, und am Ende vom Scope wieder verworfen.

Da es nun jedes System/Liste nur einmal gibt, und jedes System zwecks spontaner Anfragen jedes andere kennen muss, und die einzelnen Datenpakete nicht mehr an eine Klassenstruktur gebunden sind, entfällt praktisch jeglicher OOP-Ansatz. Weswegen das dann auch Data-oriented-Design genannt wird.

Jetzt mal weiterwurschteln, bischen Aufräumen, möglichst praktische Framework-Schnittstelle überlegen und testen ob es in anderen Projekten auch tatsächlich was taugt.

Obligatorischer Screenshot. Zwei Sorten Bots die sich jagen, hab ich ja schon öfter gemacht, das ist nichts Neues. Jetzt eben kleiner Stresstest, viele Spawns, viele Kills, viele Neugeburten (jede Komponentenliste ist ein Pool für sich, d.h. das eben gestorbene Partikel stellt sein Positionsobjekt im nächsten Frame einem zu spawnenden Bot zur Verfügung usw.).

Bild
joeydee
Establishment
 
Beiträge: 620
Registriert: 23.04.2003, 15:29


Zurück zu Vorstellungsbereich

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste