Abgesehen von einem Tetris-Klon , einem beschissenen 2D-Top-Down-Shooter und einigem Herumspielen mit Dingen wie Unity und Flixel ist mir klar, dass ich noch kein einziges , ausgefeiltes Schnickschnack -Spiel absolvieren muss. Ich möchte das ändern und habe eine Idee für mein nächstes Projekt.
Die Idee ist, dass Sie eine Amöbe sind. Amöben haben diese augenähnlichen Kerne (oder so ähnlich, ich kenne die Biologie nicht), und Sie haben zwei davon. Du kontrollierst eins mit WASDund das andere mit IJKL. Um jeden Kern muss ein konstanter Radius vorhanden sein :
Und die Fläche der Amöbe muss konstant bleiben. Wenn Sie also einen Kern in eine Richtung bewegen, vergrößern Sie die Fläche der Amöbe, aber diese Erhöhung wird durch eine Verringerung an einer anderen Stelle ausgeglichen:
Aaaaaund ich möchte einen Vaginationsmechanismus implementieren . Sie nehmen Dinge auf, indem Sie sie verschlingen, wie ein Chef. Vielleicht sogar einen zusätzlichen Kern oder eine Nadel, die dich zum Platzen bringt und dein ganzes Inneres zum Heraussprudeln bringt :
Aber hier ist das Problem: Ich weiß nicht, wie ich das machen soll. Ich hätte jedoch gerne einige Ideen zur Implementierung. Soll ich Physikbibliotheken wie Box2D erkunden? Oder vielleicht etwas mit Fluidphysik? Jede Hilfe wäre sehr dankbar.
PS Zögern Sie nicht, diese Idee zu stehlen. Ich habe viele Ideen. Wenn ja, sagen Sie mir bitte, wie Sie es gemacht haben, damit ich es selbst versuchen kann.
quelle
Antworten:
Die Klausel, die mir besonders auffällt, ist, dass die Fläche konstant bleiben soll. Das scheint mir der Schmerz in all dem zu sein, also lasst uns versuchen, eine einfache Lösung dafür zu finden.
Nehmen Sie ein Stück Schnur und binden Sie die Enden zusammen, um einen Kreis zu bilden. Ich kann mich irren, aber meine Intuition besagt, dass die Innenseite dieser Saite eine konstante Fläche hat oder sich sehr ähnlich wie Ihre Amöbengrenze verhält.
Also würde ich sagen: Implementiere den String. ;) Die meisten Physikbibliotheken können Federn erstellen (in Box2D sieht dies wie das Distanzgelenk aus), und der einfachste Weg, eine Zeichenfolge zu erstellen, besteht darin, viele Zeichenfolgen miteinander zu verbinden. Verbinden Sie den letzten mit dem ersten, um eine Schleife zu erstellen. Stellen Sie sicher, dass die Federn in der Saite eine ausreichend hohe Federkonstante haben, um nicht gespannt zu werden - Sie möchten, dass sie ziemlich steif sind und sich im Einklang bewegen, nicht ausdehnen.
Als Nächstes erstellen Sie Kräfte, die auf die Zeichenfolge einwirken. Trivialerweise erzeugen Ihre beiden Kerne / Augen / Kontrollpunkte Kräfte auf die Punkte, aus denen die Saite besteht. Lassen Sie die Kraft mit einer umgekehrten quadratischen Funktion abfallen:
Und richten Sie die Kraft direkt vom Kontrollauge / Ball weg, wie eine abstoßende Kraft, die vom Ball ausgeht. Drücke K, um die Stärke der Kraft zu kontrollieren. Stellen Sie sicher, dass K nicht zu hoch ist - Sie möchten nicht, dass es durch die Kraft massiv herausgedrückt wird, sondern halten es einfach von den Bällen fern. Lassen Sie viel Spiel in Ihrer Saite.
Wenn Sie nur diese beiden verwenden, werden Sie wahrscheinlich eine ziemlich einheitliche Form haben. Daher würde ich Ihnen auch vorschlagen, in der umgebenden "Suppe" schwächere Kräfte zu erzeugen, um die Form der Amöbe zu ändern. Sie können diese zufälligen Stellen erzeugen, ihre Kraft regelmäßig ändern (Sie können sie zu einer Sinusfunktion für schöne Bewegungen machen) und sie auf die gleiche Weise wie die Kugeln wirken lassen.
Vagination (Fnarr): Dies ist die schwierige. Sie veranlassen das Objekt, ein Objekt einzuhüllen, indem Sie überprüfen, ob zwei nicht benachbarte Punkte in der Zeichenfolge nahe genug beieinander liegen. In diesem Fall müssen Sie Folgendes tun:
Messen Sie den Abstand zwischen den Punkten auf der Schnur. Zählen Sie die Anzahl der Federteile. Finde den 'kürzeren' Weg von A nach B.
Brechen Sie die Schnur und verbinden Sie sie wieder mit den beiden benachbarten Punkten. Mit anderen Worten, verbinden Sie Punkt A direkt mit Punkt B und verwerfen Sie alles dazwischen liegende Material.
Fügen Sie die fehlende Anzahl von Punkten (plus Bonuspunkte, wenn Sie die Größe durch Essen erweitern möchten) erneut in die Zeichenfolge auf der anderen Seite ein, dh auf der Seite von B nach A. Wenn Sie sie gleichmäßig entlang der Länge und einfügen Wenn Sie sie kürzer als den gewünschten Abstand zwischen den Punkten machen, sollten Sie einen schönen Spring-Expandy-Effekt erzielen.
Ich denke, das deckt alles ab. Übrigens: Idee klingt großartig.
quelle
Damit Sie die Endozytose (den Prozess, bei dem die Zelle externe Kerne frisst) simulieren können, stößt jeder Kern innerhalb und außerhalb der Amöbe die Grenze der Amöbe ab. Die Kerne innerhalb der Amöbe haben eine mäßig starke abstoßende Wirkung, während die Kerne außerhalb eine geringe abstoßende Wirkung haben. Dies ist unten dargestellt.
Wenn sich der äußere Kern (rot) der Amöbe nähert, erzeugt sein abstoßendes Feld eine kreisförmige Einkerbung in der Amöbe. Schließlich berühren sich die beiden Seiten (grün hervorgehoben). Wenn eine solche Kollision erkannt wird, wird der kreisförmige Einzug gelöscht und alles, was sich darin befindet, wird verbraucht.
Dies imitiert den Prozess der Endozytose sehr gut und ergibt einen schönen visuellen Effekt.
Was die Simulation der Grenze der Amöbe angeht, so gefällt mir die Idee von Matt Kemp, eine sehr große Anzahl verbundener Federn zu verwenden. Dies behält keine konstante Fläche bei, sondern einen konstanten Umfang. Im wirklichen Leben kann Wasser frei in eine Zellmembran hinein und aus dieser heraus fließen (die Amöbengrenze), so dass Zellen kein konstantes Volumen haben.
Einige andere Ideen, um das Spiel realistisch zu gestalten, wären, den Salzgehalt von Zellen irgendwie zu verändern. Wenn die Salzkonzentration innerhalb und außerhalb einer Zelle nicht übereinstimmt, strömt Wasser durch die Zellmembran zu dem Ort mit dem höheren Salzgehalt, der als Osmose bezeichnet wird. Wenn die Amöbe einen hohen Salzgehalt hätte, hätte sie ein größeres Volumen, aber der Umfang würde sich nicht ändern. Im Spiel könnte dies simuliert werden, indem den inneren Kernen eine höhere Abstoßungswirkung verliehen wird, wenn der Salzgehalt höher ist.
Da ein höherer Salzgehalt den Kernen eine höhere abstoßende Wirkung verleihen würde, hat dies den Vorteil, dass die Amöbe leichter zu kontrollieren ist. Ein geringerer Salzgehalt würde dazu führen, dass sich die Amöbe unter dem Einfluss der Umgebung leichter biegt und biegt. Dies hat den Vorteil, dass andere Kerne leichter gefressen werden können, da die Amöbe sie leichter umgeben kann.
quelle
Um den grafischen Effekt zu erzielen, würden Sie höchstwahrscheinlich Metabälle verwenden (es gibt viele Online-Tutorials)
quelle
Nun, ich kenne ein Lernspiel namens CellCraft (allerdings ohne Bezug zu Minecraft), bei dem zellähnliche Kreaturen gesteuert werden, deren Bewegungen denen sehr ähnlich sind, die Sie benötigen. Das Spiel ist kostenlos und wahrscheinlich wichtiger ist, dass sie auf ihrer Website klar angegeben haben, dass sie beabsichtigen, den Quellcode kostenlos zur Verfügung zu stellen. Es wurde in ActionScript 3 erstellt und ist ein Flash-basiertes Spiel.
http://www.cellcraftgame.com/Home.html
quelle
Ich würde dies tun, indem ich eine Saitenschleife simuliere, die der von Matt Kemp vorgeschlagenen ähnelt, aber das Innere mit Teilchen füllt, die sich gegenseitig und die Saite abstoßen. Auf diese Weise stellen Sie eine ungefähre Volumenerhaltung sicher. Sie müssen darauf achten, dass keine großen Kräfte auf die Partikel einwirken.
Suchen Sie nach "Hydrodynamik geglätteter Partikel" für die Simulation der Partikel und nach "Verlet-Integration" für die Simulation der Partikel (und der Zeichenfolge). Verlet ist eine positionsbasierte Technik und daher sehr einfach und stabil.
Um die Dinge effizient zu halten, würde ich ein "einheitliches räumliches Rasterteilungssystem" vorschlagen. Auch dies ist einfach zu implementieren und beschleunigt die Arbeit erheblich.
Sie können auch Metabälle verwenden, um das Objekt zu visualisieren, anstatt die Zeichenfolge zu verwenden. Aber dann haben Sie das Problem, dass sich Partikel in separate Klumpen trennen können. Suchen Sie nach "Van-der-Waals-Kräften", um festzustellen, ob das Gleichgewicht zwischen Anziehung und Abstoßung zu Verklumpungen führt.
Ein anderer Ansatz wäre, den Saitenteilchen eine kleine "Aufblas" -Kraft in Richtung ihrer "äußeren" Normalen zu verleihen. Dies simuliert eine Art Innendruck. Das Ergebnis ist, dass die Schleife versucht, eine Kreisform beizubehalten. Das ist , was ich für verwenden diese .
Ich hoffe es hilft.
quelle