Jump to content
Unity Insider Forum

UnityMaster

Members
  • Content Count

    6
  • Joined

  • Last visited

Community Reputation

0 Neutral

About UnityMaster

  • Rank
    Newbie

Profile Information

  • Gender
    Not Telling
  1. Es kommt zwar ziemlich spät, aber ich will die Frage nicht unbeantwortet lassen: Über "Vorerfahrung" im Sinne von abgeschlossenen Projekten, verfüge ich nicht, obgleich ich mich schon an dem einen oder anderen Projekt versucht habe, mit geringen Erfolgen. Ich weiß was Schleifen sind und die ganzen anderen Programmierkonstrukte kenne ich auch und weiß wie man sie verwendet, hauptsächlich bezogen auf C. Aber das lässt sich ja leicht auf andere Programmiersprachen übertragen. Mit Algorithmen kenne ich mich kaum aus. Will heißen, ich kenne kaum welche. Ab und zu habe ich mich mit Sortieralgorithmen beschäftigt, aber eher oberflächlich. Ich habe ein kleinwenig Erfahrung mit der Engine "Genesis 3D". (Einen Raum, in dem ich mich umsehen und bewegen konnte habe ich bereits erschaffen. Viel mehr aber nicht.) Mein ursprüngliches Projekt, einen Imperium-Galactica-Klon zu erschaffen, ist auch schon wieder in weite Ferne gerückt. Ich bin nämlich schon bei meinen ersten Schritten in Unity auf ein Problem gestoßen, für das ich keine Lösung habe und weshalb meine Einarbeit in Unity ins Stocken geraten ist. Vielleicht gibt es im Heise-Forum aber bereits eine Lösung. In der Richtung müsste ich noch einmal recherchieren. Ein neues Projekt ist auf meinem Radar erschienen: Eine Sonnensystem-Simulation, genauer: Ein Programm, das einen virtuellen Weltraum erzeugt, in dem sich der Anwender frei bewegen kann und so die Bewegung der Himmelskörper begutachten kann. Diese bewegen sich in der exakt gleichen Weise, wie die realen. Im Zentrum steht die Sonne. Einige der programmiertechnischen Voraussetzungen werde ich zunächst mit Genesis 3D und C++ untersuchen und ein wenig experimentieren. Später wird das ganze sicher für ein moderneres Framework (wie Unity) umgeschrieben. Wer mich unterstützen will, ist herzlich eingeladen.
  2. Danke für eure Einschätzung! Ja, die Gefahr besteht bei mir allerdings! Aber keine Sorge, ich mache ersteinmal ein Unity-Tutorial fertig und dann sehe ich weiter. Mich reizt einfach nur die Vorstellung, soetwas umsetzen zu können. Deshalb wollte ich das schon einmal vorab wissen, ob das überhaupt geht. Und es geht, das weiß dank euch jetzt. Und man soll ja Ziele haben, wenn dieses auch sehr ehrgeizig sein mag und noch in weiter Ferne liegt. Zweifellos steckt etwas von der Imperium-Galactica-Idee auch in der Master-of-Orion-Idee, aber MoO ist rundenbasierend, IG läuft in Echtzeit ab. Übrigens auch ein sehr schönes/faszinierendes Spiel, "Master of Orion 2".
  3. Hallo, Leute, ich habe eine Frage, vorzugsweise an Leute, die beides kennen, die Spiele-Engine „Unity“ und das Spiel „Imperium Galactica 1“ oder „Imperium Galactica 2“. Aber auch Meinungen anderer sind mir willkommen. Denjenigen, die IG1 und IG2 nicht kennen, möchte ich kurz beschreiben, wie diese beiden Spiele, die sich sehr ähneln, funktionieren und aufgebaut sind. Zuerst zum Spielinhalt, bzw. Spielprinzip der beiden Spiele - für IG1 und IG2 jeweils ein eigener Spoiler (es handelt sich nicht wirklich um Spoiler): Beiden Spielen liegt das gleiche Spielprinzip Zugrunde: Die Eroberung der Galaxie mit all ihren Planeten und die Befreiung derselben von fremden, imperialen Mächten (mit militärischen, diplomatischen und geheimdienstlichen Methoden). Das ist das Spielziel. Beide Spiele sind gewonnen (und enden), wenn die jeweilige Schurken-Rasse unter den verschiedenen Imperien besiegt worden ist. (Es gibt in beiden Spielen acht verschiedene Rassen, wobei es bei IG1 von der Rasse „Mensch“ drei verschiedene Imperien gibt, die teilweise miteinander konkurrieren – eins von ihnen, das „Galaktische Imperium“, kontrolliert der Spieler.) Um das Ziel zu erreichen, muss man das eigene Imperium ausbauen, entwickeln und vergrößern (ein Imperium besteht für gewöhnlich aus einem oder mehreren Planeten, auf deren Oberflächen jeweils Gebäude errichtet werden können – Darstellung in einer isometrischen Ansicht). Das kostet Geld (und nur Geld – andere Rohstoffe spielen in keinem der beiden Spiele eine Rolle); und zum Glück gibt es die Steuereinnahmen, die dem Spieler in regelmäßigen Zeitabständen (In-Spiel-Zeit) einen Geldregen bescheren, zu Beginn natürlich in geringem Maße, verglichen mit dem Endstadium des Spiels. Dies hängt auch ein bisschen damit zusammen, in welcher Weise der Spieler expandiert (ob er moralfördernde Gebäude auf den Planeten baut, ob er die Bedürfnisse der Bevölkerung seiner einzelnen Kolonien befriedigt und ob er zusätzliche Planeten kolonisiert und erobert). Ferner gibt es noch spezielle, die Finanzwirtschaft betreffende Gebäude, die zusätzlich Geld abwerfen, wie das Handelszentrum in IG2 – jedes Mal, wenn ein umherfliegender Händler anlegt, wird eine „Anlegegebühr“ fällig – oder der Händlerhafen in IG1 (der immer einen festen Betrag am Ende eines In-Spiel-Tages generiert). Doch wie erobert der Spieler Planeten und besiegt seinen Erzfeind? Nun, er braucht Raumschiffe, die Panzer zu anderen Planeten bringen. Mit diesen Panzern können Planeten durch Bodengefechte erobert bzw. verteidigt werden. Der Spieler kontrolliert und steuert seine Einheiten selbst (mit der Maus), indem er in Echtzeit (oder im Pause-Modus) Befehle erteilt. Auch im Weltraum (und in Orbits von Planeten) kann es zwischen den Raumschiff-Flotten zum Kampf kommen. Diese werden in 3D-Schlachten (IG2), bzw. in 2D-Schlachten (IG1) mit einer Draufsicht ausgetragen und der Spieler kann auch hier mit der Maus Befehle erteilen. Natürlich gibt es verschiedene Schiffstypen und nicht alle können Panzer mitführen (kleine Jäger bspw. nicht, und in IG1 können sogar nur Flaggschiffe – die ganz, ganz großen Raumschiffe – Panzer tragen). Aber es gibt noch mehr zu tun: Raumschiffe, Panzer und Technologien müssen erforscht, bzw. weiterentwickelt werden. Ein Aspekt, der diese Spiele mit anderen 4X-Spielen unverwechselbar macht, ist der des Konfigurierens und Ausrüstens der Raumschiffe und Panzer (Panzer nur bei IG2). In IG1 werden hierzu die einzelnen Teile produziert und anschließend die Raumschiffe damit ausgerüstet; in IG2 werden die Raumschiffe und Panzer zunächst in einem Planungsbereich ausgerüstet und als Entwürfe gespeichert und anschließend im Ganzen gebaut. Die Bau- und Ausrüstungsbereiche (bzw. der Planungsbereich) unterscheiden sich zwischen beiden Spielen erheblich voneinander – beide Varianten haben ihren Reiz. Wer des Kampfes überdrüssig ist, kann auch mit Reden sein Glück versuchen; hierfür gibt es ein Diplomatie-Menü in beiden Spielen, über das Technologie ausgetauscht (nur IG2), Forderungen gestellt (und erfüllt) und Allianzen geschmiedet werden können, oder es kann einfach Smalltalk betrieben werden. Wer es hinterhältig mag, kann in IG2 zudem Spione in fremde Imperien entsenden, um dort Aufträge ausführen zu lassen: das Ausspionieren fremder Imperien, die Sabotage von Raumschiffen oder Gebäuden dieser anderen Imperien und sogar das Ausführen von Attentaten auf die Anführer, um nur ein paar Beispiele zu nennen. Trotz dieses ausgefeilten und komplexen Spielprinzips haben die Spielentwickler nicht die Handlung, bzw. die Hintergrundgeschichte, von der es in beiden Spielen eine gibt, vergessen, denn diese werden durch Videosequenzen, Mitteilungen (von Vorgesetzten, von Beratern, etc.) und Zufallsereignisse (letztere vor allem bei IG2), die in den Spielverlauf eingestreut werden, erzählt. Alle Informationen und Statistiken, die der Spieler zur Bewältigung des Spiels benötigt (wie Bevölkerungszahlen, Angaben zu Bevölkerungswachstumsraten und deren Entwicklung, Zahlungsmoral der Bevölkerung der einzelnen Planeten, usw. – auch Angaben über Flotten und Raumschiffe fehlen nicht), werden übersichtlich und sortiert in wenigen Grafiken (IG2) und Tabellen (IG1) dargestellt. Das sind in wesentlichen Zügen die Spiele „Imperium Galactica 1“ und „Imperium Galactica 2“, die in Echtzeit, bzw. in einer einstellbaren Spielgeschwindigkeit, ablaufen. Um eure Vorstellung von der Art des Spiel-Interfaces noch etwas zu verbessern, beschreibe ich nun noch kurz - in zwei separaten Spoilern (die beide wieder keine wirklichen Spoiler sind) - die beiden Forschungsmenüs der Spiele (schaut euch zum besseren Verständnis auch den jeweiligen Screenshot an): Meine Frage nun lautet: Ist dieses Spielprinzip mit Unity umsetzbar? Das ganze Spiel ist im Prinzip ein einziges, riesiges Interface, über das der Spieler das Spielgeschehen wahrnimmt und beeinflusst (isometrische Karten, viele Menüs und Statistiken). Gerade unternehme ich die ersten Schritte mit Unity, indem ich ein Tutorial durchgehe, bei dem ein kleines 3D-Jump’n’Run entsteht, doch ich bin unsicher, ob die Engine für oben genannte Zwecke brauchbar ist. Es würde mich freuen zahlreiche Meinungen und/oder Umsetzungsvorschläge zu erhalten. Und wenn ihr noch Fragen bzgl. der beiden beschriebenen Spiele habt, scheut euch nicht, diese zu stellen. Ich gehe gerne an der einen oder anderen Stelle in die Tiefe. Für ein besseres Verständnis habe ich diesem Post pro Spiel zwei Screenshots hinzugefügt – zwei seht ihr oben schon, für die Forschungsansicht und je einen weiteren für die Galaxie-Ansicht, am Ende des Beitrags – denn diese ist in beiden Spielen ein zentraler Bestandteil – so kann sich jeder vielleicht ein noch besseres Bild machen, als durch bloßes Lesen meiner Beschreibung/Erklärung. Trivia: Ende dieses Mammut-Textes. Und danke fürs Lesen!
  4. Klingt, als hättest du eine interessante Idee, aber ich verstehe noch nicht, wie das Spiel funktionieren soll. Kannst du die Spielidee etwas präziser ausformulieren (wenn das ganze noch aktuell ist)? Was heißt, "die Verfassung festlegt"? Wie Umfangreich stellst du dir diese "Verfassung" vor? Heißt das, das gesamte Spiel ist eine Art Rückblende? Kannst du noch mehr Beispielfragen aufführen? Ist das Spiel dann zu Ende? Die gesamte Geschichte endet urplötzlich, weil der Spieler irgendwann mal - zu Beginn des Spiels - festgelegt hat, dass es keine Wehrpflicht in seinem Reich gibt? Das erscheint mir ein bisschen willkürlich und unangemessen. Ich will mich nicht an diesem "Beispiel" festbeißen, aber ich kann es mir einfach noch nicht (anders) vorstellen. Ich bin ja auch nicht gerade der Kreativste und vielleicht gebe ich mir auch nicht genug Mühe, aber ich kann mir auch diesen Aspekt noch nicht richtig vorstellen. Könntest du auch hier, für die "Verkettung", ein Beispiel bringen? Wieviele Ja-/Nein-Fragen schweben dir denn für das komplette Spiel vor? Die Spielidee erinnert mich ein bisschen an "The Elder Scrolls 2: Daggerfall", (was das einzige "Elder Scrolls" ist, das ich kenne und ich aber auch nie ernsthaft gespielt habe), bei dem zu Spielbeginn ein Charakter erschaffen wird, indem der Spieler eine Reihe von Fragen beantwortet. (Jedenfalls glaube ich, dass es "Daggerfall" war - korrigiert mich, wenn ich mich irre!) Jedenfalls interessiert mich die Idee/der Prozess. Deshalb wäre es cool, wenn hier wieder ein bisschen Leben reinkäme, in den Thread.
  5. Ihr habt völlig Recht! Statt des + muss dort ein * hin! Das gibt es doch nicht! Ich habe jedes Element des Scripts x Mal überprüft und doch habe ich diesen kleinen Fehler einfach übersehen und das mehrfach. Vermutlich hätte ich es bemerkt, wenn ich versucht hätte, zu verstehen, was diese Codezeile bewirkt. Jedenfalls ganz herzlichen Dank an euch beide! Ihr habt mir richtig gut geholfen. Und ja, wenn ich mir für ein Problem Hilfe von anderen erwarte, versuche ich immer das Problem so genau wie möglich zu beschreiben. Nur so kann mir vernünftig geholfen werden. Alles andere würde den Leser (und potentiellen Helfer) nur frustrieren. Wegen Notepad++: Mit dem Editor kenne ich mich aus. Und bei der Installation von Unity hatte ich, glaube ich, MonoDevelop ausversehen "abgewählt", sodass dieses nicht mit installiert wurde. Hat denn das noch andere Nachteile? Ich müsste Unity komplett neu installieren, um MonoDevelop hinzuzufügen. Freudigen Gruß, UnityMaster
  6. Hi, mein erster Beitrag in diesem Forum und gleich zu Beginn eine solch wahrscheinlich schwer zu beantwortende Frage ... Ich möchte ein Spiel programmieren und dazu die Game Engine Unity verwenden. Deshalb habe ich ein Unity-Tutorial begonnen, nachzuvollziehen, bzw. durchzugehen. Gleich nach den ersten Schritten, ist dabei ein Hindernis aufgetaucht. Das Unity-Tutorial, von dem ich spreche, gibt es in der Zeitschrift „iX Developer“, in der ersten Ausgabe des Jahres 2015. Die Ausgabe ist übertitelt mit den Worten „Spiele entwickeln“ und das Tutorial ist in drei Teile aufgeteilt. Der erste Teil befasst sich mit „Ersten Schritten“ in Unity. Ziel des gesamten Tutorials ist das Erschaffen eines einfachen Spiels in Form einer Art 3D-Jump’n’Run. Der Spieler soll in die Lage versetzt werden, mit einer Spielfigur von Plattform zu Plattform zu springen und dabei Münzen einzusammeln, bis er die Ziellinie erreicht. Folgende Schritte habe ich unternommen: Installation von Unity (ohne „MonoDevelop“) Anlegen eines Projekt-Ordners (mit dem entsprechenden Unity-Dialog-Fenster) Anlegen des Projekts und Aufruf der Unity-Arbeitsumgebung Anlegen einer Plane (GameObject -> Create Other -> Plane) und Benennung in „Floor“ Zurücksetzen aller Transformationen auf Standardwerte Aktivieren der Eigenschaft „Static“ über die Checkbox bei „Static“ Skalieren der Plane in allen drei Richtungen (x, y und z) auf 1000. Anlegen eines Ordners „Materials“ innerhalb des Projekts (im Ordner „Assets“) Anlegen eines Materials innerhalb des Ordners „Materials“ (Rechtsklick auf den Ordner -> Create -> Material) Benennen des Materials in „Floor“ und Setzen der Farbe des Materials auf „grau“ Zuweisen des Materials einem GameObject durch Drag and Drop auf die Plane Anlegen eines Ordners Namens „Scenes“ im Unterordner „Assets“ über den Dialog „Speichern unter“ und Speichern der Szene im Ordner „Scenes“ Anlegen eines neuen GameObjects „Capsule“ im entsprechenden Menü (GameObject -> Create Other -> Capsule) Benennen des GameObject „Capsule“ in „Player“ Setzen der Position von Player in Y-Richtung auf „1.01“ Anlegen eines neuen Materials, Benennen in „Player“ und Zuweisen der Farbe „grün“ und Zuweisen des Materials dem Player in der Szene über Drag and Drop Erzeugen eines Character Controllers (Markieren des Players in der Szene, Klicken auf „Add Component“ im Inspector -> Physics -> Character Controller) Anlegen eines Neuen Ordners „Scripts“ im Ordner „Assets“ Anlegen eines C#-Scripts „ThirdPersonController“ (Rechtsklick auf den Ordner -> Create -> C# Script) Zuweisen des Scripts mittels Drag and Drop dem Player Doppelklick auf das Script (an dieser Stelle öffnet sich im Tutorial der Editor „MonoDevelop“, ich verwende aber „Notepad++“) Implementierung einer Tastensteuerung über die Input-Klasse wie folgt: using UnityEngine; using System.Collections; public class ThirdPersonController : MonoBehaviour { CharacterController characterController; public float rotationSpeed = 60.0f; public float walkingSpeed = 8.0f; // Use this for initialization void Start () { characterController = this.GetComponent<CharacterController> (); } // Update is called once per frame void Update () { float forward = Input.GetAxis("Vertical"); float rotate = Input.GetAxis("Horizontal"); float strafe = Input.GetAxis("Strafe"); } } Öffnen des InputManagers (Edit -> Project Settings -> Input) Öffnen von „Axis“ im InputManager Duplizieren des Eintrags „Horizontal“ (Rechtklick auf Horizontal -> Duplicate) Umbenennen des Duplikats in „Strafe“ und Ändern des negativen und des positiven Buttons auf „q“ und „e“ Löschen der beiden Einträge für alternative Buttons Hinzufügen der folgenden Code-Zeilen in oben genanntem Script: transform.Rotate(Vector3.up, rotate * rotationSpeed * Time.deltaTime); Vector3 direction = this.transform.right * strafe + this.transform.forward * forward; characterController.SimpleMove (direction + walkingSpeed); Der gesamte Quelltext sieht nun so aus: using UnityEngine; using System.Collections; public class ThirdPersonController : MonoBehaviour { CharacterController characterController; public float rotationSpeed = 60.0f; public float walkingSpeed = 8.0f; // Use this for initialization void Start () { characterController = this.GetComponent<CharacterController> (); } // Update is called once per frame void Update () { float forward = Input.GetAxis("Vertical"); float rotate = Input.GetAxis("Horizontal"); float strafe = Input.GetAxis("Strafe"); transform.Rotate(Vector3.up, rotate * rotationSpeed * Time.deltaTime); Vector3 direction = this.transform.right * strafe + this.transform.forward * forward; characterController.SimpleMove (direction + walkingSpeed); } } Erster Test der Anwendung über den Play-Button am oberen Fensterrand von Unity (oberhalbe des SceneExplorers) Im Tutorial startet hier das Spiel und die Figur lässt sich bewegen, ich bekomme aber die drei folgenden Fehlermeldungen (in der Unity Console) und das „Spiel“ startet nicht: Hat jemand eine Idee, woran das liegen könnte? Was mache ich falsch? Was übersehe ich? Ich komme nicht weiter. Ich würde mich freuen, ein paar Ideen oder Lösungsvorschläge von euch zu sehen. Gruß, UnityMaster
×
×
  • Create New...