Jump to content
Unity Insider Forum

Leaderboard


Popular Content

Showing content with the highest reputation since 03/20/2018 in all areas

  1. 7 points
    Ohwe ohwe war ich hier lange nicht mehr unterwegs... Kennt mich hier überhaupt noch jemand? Das Studium frisst einen auf... Aber: Ich kann endlich mal wieder was (öffentlich) von meiner Arbeit zeigen! Und noch dazu ein Unity-Projekt, was doch eher untypisch ist. In den letzten 4 Monaten habe ich im Rahmen des 5. Semesters ein Augmented Reality Sandbox Game entwickelt - vielleicht kennt ihr das aus Museen, Sea Life, etc, manchmal gibt es da so Sandkästen, auf die mehr oder weniger in Echtzeit Höhenlinien projeziert werden. Ich habe das gesehen und mir gedacht: Da muss man doch mehr mit machen können. Und nach viel viel Arbeit kann ich euch meine erste Installation präsentieren: Basic Info: Man nutzt den Schatten seiner Hände um herumwirbelnde Natur-Teilchen einzufangen, diese kann man in vorher gegrabenen Mulden sammeln und so Stück für Stück die Landschaft vergrößern. Technischer Breakdown: Ich nutze eine Microsoft Kinect 2 um die Höheninformationen des Sandes und der Hände zu bekommen. Aber: Das "Raw" Kinect Tiefenbild ist für diesen Zweck eigentlich komplett unbrauchbar. Das rauscht wie verrückt, und immer wenn es eine harte Kante gibt werden die Höheninfos an dieser Kante einfach null - lauter so Zeug. Deshalb war mein erster Schritt das Kinect Bild möglichst performant und vor allem schnell zu filtern und zu smoothen. Dieses GIF zeigt den Effekt. Normalerweise ist es ja so, dass wenn man seine Hand jetzt über den Sandkasten hält, diese Höheninformation auch in die Projektion aufgenommen wird und dort ein sehr hoher Berg entsteht (einer der Gründe für die große Verzögerung der bekannten AR Sandboxes). Ich wollte das auf keinen Fall, weshalb ich nach einem Weg gesucht habe, die Hände aus den Höheninformationen herauszufiltern. Das funktioniert viel billiger als man vielleicht annimmt: Man kalibriert den Tisch einmal ohne Hände und ab diesem Moment werden alle Informationen, die über einem bestimmten Threshold sind, einfach ignoriert. Sobald man die Hand 3cm über den Sand hält, wird diese wieder als Terrain wahrgenommen (Es gibt dann mehrere Thresholds für schnelle Bewegungen etc.) Das Resultat fühlt sich nach einer sehr "magischen" Interaktion an, da eben nur die wirklichen Sandinteraktionen auch Änderungen in der Projektion hervorrufen. Zugleich bekomme ich aus den gefilterten Höhendaten dann eine Maske für die Hände, mit der ich über OpenCV Handgesten und Formen für den Game Input erkennen kann. Da dieses ganze System dann doch immer langsamer und nicht richtig "befriedigend" auf den Input reagiert habe ich das Kinect Bild in 8, sich überlappende Teile aufgeteilt, die auf unterschiedlichen Threads verarbeitet werden. Threading (und vor allem Multi Core Threading) ist in Unity ja bekanntermaßen eher, nennen wir es mal: kompliziert. Aber für ein Spiel wie dieses war es super essentiell, dass alles so schnell wie möglich reagiert. Ich berechne die Positionen der Hand Schatten aus der Projekterposition und den Kinect Daten, um die Spieler damit Objekte einfangen zu lassen - da will man natürlich keinen Lag haben. Und auch das Graben fühlt sich so richtig gut an. Visuall Stuff Das Terrain wird aus einer Displacement Map (die aus den verbesserten Höheninfos generiert wird) erstellt. Der Rest passiert dann in einem Shader: Ich berechne mir die Normalen aus der Heightmap, indem einfach ein Vektor aus einem umliegenden Dreieck von Höhendaten berechnet wird - die Normalmap brauche ich für die richtige Beleuchtung der Landschaft. Wenn man jetzt die Höhe vom Mittelpunkt dieses Dreiecks mit der Höhe von den Eckpunkten vergleicht, kann man eine Realtime Curvature Map berechnen - die ist für schöne Schneebedeckte Bergspitzen und saftig grüne Täler. Die Steigung der Normalen wird auch noch dazu berechnet um Felsen an Steilwänden zu erzeugen und die Wälder an solchen Stellen auszumaskieren. Hier mal eine kleiner Debug Ansicht davon: Der ganze Landschaftsshader ist dann doch sehr groß - es gibt eine Art "Fake"-Erosion, damit die Felsen schick aussehen und eine riesige Anzahl Noises um die Sandstrände, Schneeverteilung, Wälderfarben, Meereswellen etc. zu erzeugen. Das ist aber nur die Landschaft! Es gibt auch noch die dunkle, zerglitchte Welt mit dem selben Setup, aber eben anderen erzeugten Effekten. Da sich das Spiel ja um das Fangen und Verbinden von Natur-Fragmenten dreht sollte diese "Verbindungs-Interaktion" etwas ganz besonderes werden und dem Spieler das visuelle Feedback geben, etwas richtiges getan zu haben. Mithilfe eines Voronoi Effekts habe ich die ganzen Natur-Teile sich miteinander verbinden lassen - jedes Natur Objekt kann sich über einen Shader so hin morphen, dass es in seine umgebenden Voronoi Positionen passt. Das erzeugt einen sehr coolen, snappy Effekt als ob man ein passendes Puzzlestück gefunden hat. Solltet ihr in zwei Wochen zufällig in Stuttgart sein könnt ihr gerne auf der FMX Conference 2018 vorbeischauen, wo das Spiel öffentlich präsentiert wird und dann auch tagsüber spielbar ist. Wenn nicht - ich versuche gerade Museen und Ausstellungen ausfindig zu machen, die sich für so ein Exponat interessieren könnten. Wenn ihr da Ideen habt, schreibt mir doch gerne! Zum Abschluss noch zwei schöne Making Of Bilder Vielen Dank fürs Lesen & ich freue mich auf Fragen und Feedback!
  2. 5 points
    Hallo zusammen, ich habe die letzten 10 Monate neben einem Spiel auch an einem Video gearbeitet. Ich dachte mir, dass eventuell einige von euch das Thema interessieren könnten. Es geht um eine relativ stark verallgemeinerte Erklärung, wie eine Game Engine realistische Modelle/Materialien darstellt.
  3. 5 points
    Moin zusammen, wir bei PHOS Digital, mein Kollege und ich, arbeiten an einem "postapokalyptischen racing shooter" im Stil von Mad Max und Co. und ich möchte euch unseren Titel kurz vorstellen. Seit Anfang des Jahres arbeiten wir daran und noch sind wir mitten in der Preproduction, aber ich denke zum zeigen ist es schon ganz ordentlich. Wer Interesse an dem Titel gefällt, kann uns gerne auf www.phosdigital.com über den Newsletter folgen oder uns auf Facebook / Twitter finden. Es wird typische Rundenrennen und andere Spieltypen gegen KI oder Online Konkurrenten geben, in denen ihr euch gegenseitig bekämpfen könnt... Ob mit guten Zeiten oder Waffen, ist euch selbst überlassen. :-) Hier ein paar Screenshots
  4. 5 points
    Hey, Ich experimentier aktuell mit meiner eigenen Idee rum, Oberflächen aus Distanzfunktionen (signed distance function, SDF) zu generieren. Ihr könnt meinen Ansatz in diesem Thread verfolgen, falls ihr euch für so Voxel Zeugs interessiert: https://www.gamedev.net/forums/topic/697431-a-novel-approach-to-non-manifold-dual-contouring/ Im Grunde gehts darum Eckpunkte (vertices) durch Schnittpunkte von Oberflächenkanten (surface edges) ausfinding zu machen. Die 2D Methode scheint ohne probleme zu funktionieren, und ermöglicht so auch scharfe geometrische Features wie Ecken. (dabei ist's auch deutlich einfacher zu verstehen, als 2D Dual Contouring) Mit dem 3D Ansatz bin ich aktuell noch ein wenig am kämpfen, aber erste Ergebnisse gibts dazu auch schon, wie ihr hier nochmal sehen könnt:
  5. 4 points
    Ich hab den Algorithmus ein wenig angepasst, um das Problem mit den weichen Ecken zu lösen. Im Grunde schau ich mir einfach die vertices an, die nicht ganz korrekt sind, addier alle Normalen zusammen (nennen wir das Ergebnis einen Vektor A) und interpoliere dann von diesem Vertex aus in die Richtung A bis die SDF an diesem Punkt = 0 ist. Ich musste allerdings einen kleinen Bias einbauen, aber ich denke das sind einfach bloß Genauigkeitsprobleme, da die Implementation aktuell komplett auf floats setzt. Die schwarzen Linien am Ende zeigen das Ergebnis der Normalen (Vektor A) bei den Vertices, die zunächst gesmoothed wurden. Ich werd noch mehr testen müssen, um zu schauen, ob die Lösung so allgemein aufrecht erhalten werden kann.
  6. 4 points
  7. 3 points
  8. 3 points
  9. 3 points
    @Helishcoffe Oder halt Gizmos.DrawWireCube bzw Handles.DrawWireCube
  10. 3 points
    Das ist normal, man kann den Ordner ohne Probleme löschen, jedoch müssen die Shader dann neu kompiliert werden (-> ggf. längere Ladezeiten im Editor). In der Dokumentation von Unity findet man viele Antworten: https://docs.unity3d.com/Manual/class-Shader.html Strg + F drucken und "Cache" eingeben, und schon findet man die Erklärung
  11. 3 points
    Es gibt Neuigkeiten! Wir sind nicht auf der faulen Haut gelegen und haben allerhand Grafiken und Funktionen implementiert. 90% der Sprites sind allerdings Neuauflagen und ich will euch nicht damit zuspammen.🤓 Schaut euch einfach den unterschied zwischen den Kanonen an. Wir haben allerdings einen Neuzugang in Form eines Mörsers (dem dicken kleinen Bruder der Kanone). Im Gegensatz zur Kanone ist er ein NPC und soll später im Editor vielseitig modifizierbar sein. Munition mit verschiedenen Eigenschaften: Und ein paar dazugehörige Spezialeffekte: Währenddessen arbeitet unsere IT Abteilung (Antragon) unermüdlich daran, Editor und Gameplay zu verbinden. Ich hoffe, dass wir bald mehr davon herzeigen können. Das ganze nochmal ausführlich: https://wordpress.com/view/polywonk.wordpress.com
  12. 3 points
    Hi Peter, wie gesagt, mir liegt und lag es fern irgend jemanden zu denunzieren. Ich bin eher beeindruckt davon wie ihr euch durch alle Bereiche durchbeißt und euer Content stetig steigt. Klar muss es kein AAA Titel sein und ein gutes Indie Spiel von Hobbyisten das Spaß macht ist mehr wert als jede Grafik. Das ihr ein jährliches Budget von ganzen 15k habt finde ich bemerkenswert, sowas hat auch nicht jeder Hobbyist. Dennoch wäre es denke ich eine Bereicherung jemanden dabei zu haben der ein wenig mehr Erfahrung im Bereich 3D hat. Nicht nur wegen der Optik oder dem Kommerz, sondern auch weil es euer Spiel mehr Performance geben würde und den Mitgliedern eures Teams lerntechnisch sicherlich auch zu gute kommen würde. Ich habe euer Spiel einmal ausprobiert und durch die fehlenden Lightbakes und den wohl zu hohen Polywerte und anderen Kleinigkeiten ruckelt das Spiel doch schon ziemlich auf einen doch recht guten PC. Ich weiß das sowas fast nicht umzusetzen ist was ich hier vorschlage. Erst einmal müsste man jemanden finden der 3D technisch gutes Wissen besitzt und diese Person müsste dann zusammen mit den anderen 3Dlern fast jedes Model nachträglich optimieren, bei der Masse die ihr habt wäre das ein heftiger Zeitaufwand. Andererseits ist es besser so früh wie möglich solch einen Weg einzuschlagen oder wenigstens diesen in betracht zu ziehen denn wenn euer Spiel mal rund werden soll, dann wird aus meiner Sicht daran kein Weg vorbei gehen. Außerdem könnt ihr nur gewinnen. Man lernt etwas, es sieht hübscher aus, es bringt ein besseres Spielgefühl, es motiviert und die Chancen auf kommerziellen Erfolg steigen ebenfalls. Achja , bin schon länger in diesem Forum und verfolge euren Werdegang schon seit einiger Zeit. Hätte zu Beginn nie gedacht das ihr so weit kommt.
  13. 2 points
    Einfach mal alle Autos die ich bis jetzt gemacht habe auf die Strecke. Da stecken viele Stunden Arbeit drin und Jahre. (Wie man halt Zeit hat)
  14. 2 points
    In dem Fall ist deine Berechnung von dem t Parameter falsch. Da t nur aus dem intervall von [0, 1] sein darf muss deine Formel angepasst werden: (Time.time - startZeit) * geschwindigkeit Da Time.time in Sekunden ist wäre bei geschwindigkeit = 2 bereits bei einer halben Sekunde t = 1. Je kleiner geschwindigkeit wird desto länger würde es dauern z.B geschwindigkeit = 0.5 sorgt dafür das t erst bei 2 Sekunden auf 1 gesetzt wird. Was du willst ist: (Time.time - startZeit) / geschwindigkeit Zudem musst du nicht abfragen ob die Farben gleich sind, prüf einfach ob t >= 1 ist. Zusätzlich darfst du niemals die gesetzte Farbe von den Textboxen wiedeverwenden da es sonst keine lineare interpolation mehr ist. Du musst immer die start und endfarbe wiederverwenden: public void Update() { var t = (Time.time - this.startTime) / geschwindigkeit; foreach(Text text in this.texte) text.color = Color32.Lerp(this.startColor, this.targetColor, t); if(t >= 1) // t = 1 bedeutet wir haben targetColor erreicht { this.startColor = this.targetColor; this.targetColor = // Berechne random Farbe } }
  15. 2 points
    Time.time "This is the time in seconds since the start of the game." In der zweiten Szene bekommst du also nicht die Zeit seit dem Beginn des 2. Levels, sondern seit Start des Spieles. Ich würde einfach jeden Frame die vergangene Zeit seit dem letzten Frame zu 'zeit' addieren. Also: zeit += Time.deltaTime;
  16. 2 points
    Wenn es an der Terrain-Auflösung liegt meine ich mal gelesen zu haben, dass es eine Funktion gibt die genau das für angrenzende Terrains angleicht. https://docs.unity3d.com/ScriptReference/Terrain.SetNeighbors.html
  17. 2 points
    @Mr 3d Bei zwei int-Parametern ist der max-Parameter von Random.Range exklusiv. Das -1 sollte man also weglassen, weil man sonst ein Array-Element ignoriert.
  18. 2 points
    Falls ihr Handelsspiele mögt, mal ein Projekt woran ich mit programmiert habe, und welches zuletzt veröffentlicht wurde: https://store.steampowered.com/app/599010/Hanse__The_Hanseatic_League/
  19. 2 points
    Hier mal ein Bild von meinem Beby. Büschen tiefer und so Kleinkram. Sonst alles original. Nicht ganz so Rückenschonend auf blöden Straßen. Aber macht Laune im Kartfeeling.
  20. 2 points
  21. 2 points
    Laut dem Tutorial musst du an dieser Stelle zusätzlich die anderen Menü's deaktivieren. In dem Fall bei dem Zurück-Button alle Menü's außer das Hauptmenü. siehe 11:24 in deinem Video. Du musst also immer drauf achten, daß immer nur 1 Menüobjekt aktiv ist, also entweder "Hauptmenü", "Maps" oder "Einstellungen". wenn ein Button beispielsweise das "Maps"-Menü aktiviert, dann muss du "Hauptmenu" und "Einstellungen" ausschalten (Hauptmenü reicht vermutlich) beim Zurück Button des "Maps-Menü" muss das "Maps-Menü" deaktiviert und "Hauptmenu" aktiviert werden
  22. 2 points
    Ich bin ja immer auf der Suche nach hilfreichen Shadern und Tools. Wer ein fließendes Gewässer in sein Spiel einbauen möchte steht denke ich vor einigen Herausforderungen. Zum einen soll es halbwegs natürlich Ausehen aber eben auch nicht viel Performance fressen (siehe Water Assets von Unity). Zudem brauch man auch nicht immer gleich einen ganzen Ozean. Oft möchte man nur kleine Tümpel, kleine Flüsse oder einen Wasserfall visualisieren. Wenn die Lösung dann nichts kostet umso besser. Folgenden kleinen Fluss (aus der Demoszene) ist mit einem Shader des Tools "Vertex Painter" erstellt. Diesen kleinen Fluss habe ich zudem um eine Reflectionmap angereichert. Das Tool ist leider nicht einfach zu Bedienen, also wenn ihr Fragen habt ... Hier ein kleiner Video wie solch ein kleiner Fluss aussehen kann. Da das Ganze nur ein Mesh mit einem Shader drauf ist, ist die Performance Vernachlässigbar. Zudem kann man Flussrichtung, Reflektionen, Farbe des Wassers, Wellenform einstellen. Video: https://streamable.com/tnw4f
  23. 2 points
    Ein Spiel für eine GameChallenge auf Youtube.
  24. 2 points
    So heute einmal mit "Custom-Editoren" beschäftigt, da ich nun doch einzelne "Decorator-Drawer" im Skript herausgeschmissen habe. So Sachen wie Logo's und Label-Bereiche und Buttons waren etwas kniffelig. Zudem gibt es verschiedene Layout-Klassen die man in einem Custom-Editor mixen muss, daß hat Unity nicht gut gelöst... Hier das aktuelle Ergebnis:
  25. 2 points
    Grüße zusammen, ich möchte euch nur kurz passend zum St. Patricks Day Happy Flappy Unicorn vorstellen. Würde mich sehr über eine positive Bewertung freuen. Damit Ihr das ganze auch werbefrei testen könnt anbei noch ein paar Codes: vielen dank und viel spass beim highscoren . Android: https://play.google.com/store/apps/details?id=com.Dataflox.HappyFlappyUniscorn IOS: https://itunes.apple.com/de/app/happy-flappy-einhorn/id1358737802?l=de&ls=1&mt=8 #Android: 90FG3UREQQ5EKSYEUN90ZHA G7BJR7D9HQG4V38129FSQXT T8M42PEQ8LW9CJDZRVQ3E44 T93RVST6EBWQ90EZUTXHJ2E 6FWEXR5606RY5R1PSJBKRJB 4J65P9VRSWZELF96ENY5RZX A93LCQV5MXBYTU0GE50YH2W 7ZFBVQL7EWA1RE2QQ3L8ZTH TTAT1YBUKTU06PCKHKJV36Y D4EGF5C1A3HS69ZJSC5H0T0 1GLWYDLV4UR0QDN30TE6257 BW92BCBWSD9F8C3043J7SPX AHUBVBS2ZG1BA2ND5JY5TMX X482D2BQY84LLAS673Q6PEY 73CBNWT8ER8CT34ERZXVVH9 #IOS COdes: AXX6X4XNPTNF N4HPFX9R7X4P XYK9FPEHNNPP 6PRFA9MRHP7P M9NJR7LHPHTA F3JXAFPYWAAY 3M4EYNYTWAYR L937JEJEJKNR 3FN9NFY6XY3L 4Y9443RLL7LE YMKKJT9HX4KM YL4MJEP3HF94 T4963P7939EE RHYKW69H63YJ JMAWYYA4REFP

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×