PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WiP Thread



eXi
23.02.2014, 19:51:12
So, ein WiP Thread fehlt natürlich noch.

Wäre cool wenn ihr auch mal zeigen würdet woran ihr momentan arbeitet.

Ich arbeite gerade an einer Android Umsetzung eines kleines Multiplayer Spiels.

(: Weiß wer, was das werden kann?

http://puu.sh/77KJn.png

eMo
23.02.2014, 20:01:28
Worms :D :ugly:

BaShoR
23.02.2014, 20:36:35
Der Tafel-Simulator 2.0

eXi
23.02.2014, 20:50:03
:ugly: :ugly: Der Tafel-Simulator !!! Das würden sogar noch Leute kaufen und spielen. :ugly:

Ne es wird ein Minigolfspiel. :D Die Drehung ist damit ich die z Achse ignorieren kann. Soll nur 2 Dimensional sein.

Josch
24.02.2014, 21:45:01
Es gibt einen Tafel-Simulator 1.0??

Der Tafel-Simulator 2.0

eXi
28.02.2014, 15:56:30
So, hab jetzt mehrere Stunden/Tage daran rumgebastelt und komme irgendwie nicht weiter.

Ich kann zwar mit 2+ Spielern spielen und die Physik (welche nur vom Server gehandelt wird) funktioniert auch ganz gut, aber sobald es um die Implementierung mehrerer Maps und Schläge geht, komme ich nicht weiter.
Die Spiellogik ist folgende:

- Server gibt die Anzahl der maximalen Schläge und Anzahl der Karten beim erstellen an
- Eine Klasse, welche NetworkplayerID, Name und ein Array (welches die Größe der maximalen Schläge hat) wird als Listen Typ benutzt und existiert bei jedem Spieler
-- Die Liste wird über RPCs gefüllt, damit jeder Spieler die gleichen Einträge bei sich in der List hat (funktioniert soweit, wenn ich nur eine Map, also kein Array, sondern nur eine einfach in Variable für die Schläge nehme)
- Gehen wir von 2 Spielern, 10 Schlägen und 5 Karten aus
- Schlägt ein Spieler, wird die Anzahl der Schläge vom Spieler bei jedem um 1 erhöht (funktioniert)
- Erreicht ein Spieler 10 Schläge, wird seine Kugel kleiner und er bekommt einen elften Strafschlag
-- Hier nach sollte eine Variable (in der Liste?) auf true gesetzt werden, welche definiert, dass der Spieler mit dieser Karte fertig ist
-- Gleiches passiert beim einlochen
- Ist bei allen Spielern diese Variable true, wird die nächste Map geladen, die Variable wieder gleich false gesetzt und der Index des Schläge Arrays um 1 erhöht
- Sind alle fertig und die letzte Map ist vorbei, ist das Spiel vorbei und der Spieler mit den wenigstens Schlägen hat gewonnen

Klingt alles schön einfach, aber die Umsetzung ist nicht so pralle.

Hab halt das Schläge Feld, welches mir (obwohl es bei der Ausgabe korrekt angezeigt wird) NullReference auswirft, aber auch nur beim ersten Aufruf und das auch noch unabhängig der Größe des Feldes oder der Anzahl der Aufrufe.
Verstehe noch nicht woher die kommen. Sind 4 oder 5 einmal auftretende NullReferences.

Desweiteren hab ich noch keine Lösung für die Maps. Da ich dem Spieler eigentlich die Möglichkeit geben will eigene Maps zu erstellen, müssen die irgendwie gespeichert und geladen werden können.
Wollte dafür ein dreidimensionales Array bauen, welches die Map darstellt (also 2 tief, 49 breit und 25 hoch). Zahlen, welche ins Array eingetragen werden, repräsentieren prefabs einzelner Blöcke, bzw andersrum, da der Spieler ja nur die Blöcke setzen soll.
Somit könnte ich die Arrays in einer Text Datei speichern und laden lassen. Wie das mit dem Überprüfen der Maps vor dem "Release" funktionieren soll, weiß ich noch nicht. Eventuell einschicken lassen und mit Patches dann freigeben. Für das wechseln der Maps, würde ich jeder Datei den ungefähr gleichen Namen geben, bis auf eine Nummer, welche Random gewählt wird (damit die Maps nicht immer in der gleichen Reihenfolge auftauchen)

Hat irgendwer, der sich mit Unity auskennt, eine super tolle Idee, wie ich das Wechseln der Maps und das Problem mit den NullReferences umgehen kann? Außerdem fehlt mir planmäßig immer noch die Aufteilung, welches GameObject die ganze Arbeit übernehmen soll.

Wenn jemand einen Blick in die Scripte werfen will, sagt Bescheid.

eMo
28.02.2014, 17:56:02
Wieso denn ein dreidimensionales Array? Wenn du über 0 die Wand darstellen lässt und 1 Grünfläche ist, brauchst du keine drei Dimensionen.

Wäre es nicht sinnvoller, eine Liste mit gewählten Maps zu erstellen, in denen sich jeweils die Spieler und deren Schläge für die Map existieren?
Dadurch könntest du am Ende auch die Punkte auswerten. ;) Auch würde ich einfach die maximalen Schläge der Map definieren und dann einfach kontrollieren, ob einer der Spieler über diese Anzahl kommt.

eXi
28.02.2014, 18:31:22
Der Boden [0] ist ja nicht immer grün. Dort kann auch Wasser oder Sand sein. Oder viele andere Dinge. Und auf der Höhe der Wände, können ja auch mitten drin Wände sein. Also brauch ich die Tiefe.

Ich kann die Maps ja in die Liste mit einfügen. Eine weitere Liste, welche nochmal die NetworkID enthält und die Maps + die Schläge wäre ja irgendwie doppelt gemoppelt. Schläge für eine Map zu definieren ist aber nicht vorgesehen. Der Ersteller eines Servers, soll selber wählen dürfen, wieviele Schläge er und seine Mitspieler haben um sämtliche Löcher dieser Spielrunde zu erreichen.

eMo
28.02.2014, 20:35:45
Der Boden [0] ist ja nicht immer grün. Dort kann auch Wasser oder Sand sein. Oder viele andere Dinge. Und auf der Höhe der Wände, können ja auch mitten drin Wände sein. Also brauch ich die Tiefe.

Nein, brauchst du nicht. Du gibst einfach einen int für jede Möglichkeit vor, die du einbauen willst, dann hast du z.B. -1 für Luft, 0 für Wand, 1 für Boden und schon kannst du eine Welt gestalten, obwohl du keine Tiefe einbaust. Wenn du Tiefe haben willst, baust du halt ein int für Rampen ein, der das dann automatisch zusammensetzt. Du gibst also praktisch über integer vor, was für eine Art Voxel an dieser Stelle dargestellt wird. Dafür braucht es keine dritte Dimension, das geht auch in 2 ;)

eXi
28.02.2014, 20:42:52
Naja, ist ja eigentlich egal, ob 2 oder 3 Dimensionen. Wie ich das Speicher und Lade weiß ich noch aus dem Minecraft Clone. Die Idee dahinter ist bei uns beiden ja die Selbe.
Das Problem ist immer noch, dass ich mit den Schlägen und dem Wechseln der Karten nicht ganz klar komme. Theoretisch (wenn ich die Karten so gestallte wie oben beschrieben) muss ich ja nur das Array leeren und neu füllen (also das wo die Voxel drin stehen). Und das halt 10 Mal und immer mit einer Random Zahl, welcher im Namen der Map Datei steht um diese zufällig zu wählen und zu "laden". >.< Werde mich die Tage noch mal ran setzen. Hab alle Scripts wieder auf das Standard Format gekürzt, ohne Schläge und Karten. Muss mir das mal ordentlich aufmalen, damit ich nicht mit den Scripten durcheinander komme.

eMo
28.02.2014, 21:09:18
Wieso lädst du die Map nicht aus einer Datei und erstellst daraus das dargestellte Modell?
Dann ersetzt du einfach das zu Grunde liegende Model..
Ich sollte mich mal ernsthaft mit Unity beschäfftigen :D

eXi
28.02.2014, 22:40:13
Ich will die Map ja aus einer Datei laden. Allerdings anders als du es mir gerade vorschlagen willst denke ich.
Ich will halt das Array, welches Nummer für verschiedene Blöcke enthält, in einer Textdatei speicher und es anders rum wieder laden.

Wäre dafür eigentlich eine XML Datei einfacher? Hab damit noch nie gearbeitet. Unity kann die aber benutzen. Könnte man in einer XML Datei alles speichern was man braucht oO?

Hab mal im deutschen Unity Forum einen Beitrag erstellt. Gucken ob die eine gute Lösung für das Speichern und Laden so einfacher Maps wissen. (Es müssen ja irgendwie Prefabs gespawned werden, weil jeder Block ein Script hat. Das wäre mit der einfachen "Array in einer Text Datei speichern" Methode machbar).

PS: Werds wohl mal über JSON probieren. Damit kann ich glaube ich Arrays direkt laden und speichern.

eMo
01.03.2014, 09:18:26
Ich will die Map ja aus einer Datei laden. Allerdings anders als du es mir gerade vorschlagen willst denke ich.
Ich will halt das Array, welches Nummer für verschiedene Blöcke enthält, in einer Textdatei speicher und es anders rum wieder laden.
Ja, das will ich auch, aber wahrscheinlich anders, als du es dir vorstellst, weswegen ich keine drei Dimensionen benötige. (Speicherplatz und Übersichtlichkeit des .txt-Files)

Ich finde alles, was man in XML machen kann, kann man auch in .txt mit definiertem Format machen :D

eXi
01.03.2014, 10:14:17
Die Frage ist ja, ob deine Idee umzusetzen ist. Ich finde keine Möglichkeit aus einer Datei direkt ein Model zu laden. Level die Fertig geladen werden sind die scenes. Die müssen aber direkt mit compiler werden. Und sowas wie eine Map file wie bei CS bzw der Source Engine gibt es glaube ich nicht. Also muss ich bei sowas die Bestandteile der Map extra spawnen. Und das geht in meinem Kopf nur mit einem Array was je nach Zahl ein Prefab spawned. Theoretisch kann ich auch ein eindimensionales nehmen und manuell die Spawn koordinaten ausrechnen. Bei einem 3 dimensionalem kann ich die Indizes aber direkt als koords nehmen.

Jetzt viellt besser verständlich warum ich das so machen will in der Theorie?

eMo
01.03.2014, 13:16:41
Die Frage ist ja, ob deine Idee umzusetzen ist. Ich finde keine Möglichkeit aus einer Datei direkt ein Model zu laden. Level die Fertig geladen werden sind die scenes. Die müssen aber direkt mit compiler werden. Und sowas wie eine Map file wie bei CS bzw der Source Engine gibt es glaube ich nicht. Also muss ich bei sowas die Bestandteile der Map extra spawnen. Und das geht in meinem Kopf nur mit einem Array was je nach Zahl ein Prefab spawned. Theoretisch kann ich auch ein eindimensionales nehmen und manuell die Spawn koordinaten ausrechnen. Bei einem 3 dimensionalem kann ich die Indizes aber direkt als koords nehmen.

Jetzt viellt besser verständlich warum ich das so machen will in der Theorie?
Ja, nur reichen dir trotzdem zwei Dimensionen..
Ich meinte das auch so wie du, kenne mich halt mit Unity nicht so aus, aber an sich sollte es kein Problem sein, wenn du die z-Dimension in einer Variable speicherst und dann die zweite Dimension durchgehst und dein Level erstellst.

eXi
02.03.2014, 14:38:46
Also die Tiefe in eine Dimension und den Rest in eine. Nach einer bestimmten Länge dann die Dimension erhöhen und die zweite Ebene erstellen. Naja macht keinen Unterschied

eMo
02.03.2014, 15:02:56
Also die Tiefe in eine Dimension und den Rest in eine. Nach einer bestimmten Länge dann die Dimension erhöhen und die zweite Ebene erstellen. Naja macht keinen Unterschied

Nein. Du erkennst anhand des Blocktypen auf welcher Höhe er gerade dargestellt werden muss. ;)
Sagen wir mal 0 sei Wand, 1 sei Grünfläche, 2 eine Rampe hoch, 3 eine Rampe herunter, 4 das Loch, 5 der Start und -1 Void, so kannst du z.B. folgende Map erstellen:

[[0][0][0][0][0][-1][-1][-1][-1][-1]]
[[0][1][1][1][0][-1][-1][-1][-1][-1]]
[[0][1][5][1][0][-1][-1][-1][-1][-1]]
[[0][1][1][1][0][-1][-1][-1][-1][-1]]
[[0][2][2][2][0][-1][-1][-1][-1][-1]]
[[0][1][1][1][0][0][0][0][0][0]]
[[0][1][1][1][1][3][1][1][1][0]]
[[0][1][1][1][1][3][1][4][1][0]]
[[0][0][1][1][1][3][1][1][1][0]]
[[-1][0][0][0][0][0][0][0][0][0]]

Herauskommen würde ein L mit einem Höhenunterschied und das, obwohl du nur ein zweidimensionales Array nutzt.

Im Endeffekt ist es egal, wie du es machst, aber in meinen Augen ist es so einfach schöner gelöst. Intuitiver wäre es wahrscheinlich mit dreidimensionalen Arrays ;)

eXi
02.03.2014, 17:54:59
Ach, stimmt. Es gibt keine Blöcke die auf beiden Ebenen liegen. Dann wäre es 2 Dimensional. Ja gut, soweit hatte ich gar nicht gedacht. Macht die dritte Dimension im Array den soviel Stress?

eMo
02.03.2014, 18:39:52
Ach, stimmt. Es gibt keine Blöcke die auf beiden Ebenen liegen. Dann wäre es 2 Dimensional. Ja gut, soweit hatte ich gar nicht gedacht. Macht die dritte Dimension im Array den soviel Stress?

Stress nicht, du würdest halt viel mit der Void-Zahl füllen. Sollte aber nicht das Problem sein, die Levels werden ja trotzdem nicht groß ;)
Außerdem könntest du PNG-Input einbinden, wenn du die einzelnen Pixel und deren Farben nutzt.. Das wäre schon irgendwie cool :D :ugly:

eXi
20.03.2014, 00:23:12
Kleiner TopDownShooter für Android.

Steuerung und Schießen funktioniert soweit. Gegner folgen momentan nur stupide. Leben wird über ihnen momentan als Zahl angezeigt und wenn sie sterben explodieren sie in mehrere Cubes die dann langsam ausfaden.
Mal gucken was daraus wird :ugly:

http://abload.de/img/gamewipblaa4ukt.jpg

eXi
21.03.2014, 01:33:12
Hab mal weiter an den NPCs rumgebastelt und das Follow Script abgeändert.
Er folgt weiterhin dem Spieler, allerdings nur wenn er in der Nähe ist. Ist der nah genug am Spieler, "schlägt" er ihn.
Ist der Spieler außer Reichweite, sucht er sich einen Zufallspunkt in der Umgebung und läuft dort hin.
Läuft er außer Reichweite des letzten Aufenthaltes nach der Verfolgung (also der Punkt wo er den Spieler aus den Augen verloren hat) läuft er dort hin zurück.

Letzteres ist irgendwie noch buggy. Wenn jemand Lust hat in Code zumzuwühlen und zu überlegen warum folgendes passiert, dann gibs hier auch den Code ein wenig kommentiert dazu:

Er sucht sich teilweise, obwohl er erst zurücklaufen soll, ein neues Ziel (meist außerhalb des Radius) und wackelt dann ein wenig hektisch (da er immer wieder aus dem Radius rauswill), bevor er irgendwo innerhalb seines Bewegungsradius etwas neues findet.
Eigentlich sollte er erst zurücklaufen und ich finde auch gerade nicht den Punkt wo er wieder in die If für die neue Punktesuche geht, da er dort eigentlich nur rein geht, wenn er am alten Ziel angekommen ist.


using UnityEngine;
using System.Collections;

[RequireComponent(typeof(CharacterController))]
public class EnemyMovement : MonoBehaviour {

public GameObject player;
private CharacterController controller;
private float hitTimer = 0f;
public float moveSpeed = 8f;
public float rotateSpeed = 8f;
public float gravity = 8f;
public Vector3 moveDirection = new Vector3();
public Vector3 rotateDir = new Vector3();
public bool chasing = false;
public Vector2 nextTarget2D = new Vector2();
public Vector3 nextTarget = new Vector3();
public bool recentlyChased = false;
public Vector3 lastPosition = new Vector3();
public bool tooFar = false;

// Use this for initialization
void Start ()
{
controller = GetComponent<CharacterController>();
player = GameObject.FindGameObjectWithTag("Player");
}

// Update is called once per frame
void Update ()
{
// Only chasing if a player is in the game
if(player)
{
// And only chasing of the player is in rage of 25 units
if(Vector3.Distance(player.transform.position, transform.position) > 25)
{
chasing = false;
}
else
{
chasing = true;
}
// If the player is in hitrange, hit him (:
if(Vector3.Distance(player.transform.position, transform.position) < 2)
{
hitPlayer();
}
else if(chasing) // If not and he is close enough to chase, than chase
{
// Calculate the rotate direction and move the enemy forward
rotateDir = player.transform.position - transform.position;
moveDirection = transform.forward * Time.deltaTime;
controller.Move(moveDirection * moveSpeed);
// Used for searching a new random spot after the player is out of range
recentlyChased = true;
// Remembering the last position where the chase ended to go back to it
lastPosition = transform.position;
}
else
{
// If the player was recently chased or the enemy reached his target, he will search a new random point to go to
if(recentlyChased == true || transform.position.x - nextTarget.x < 1 && transform.position.z - nextTarget.z < 1 || nextTarget == Vector3.zero)
{
tooFar = false;
recentlyChased = false;
// A random point from 0-1 in 2D (x,y)
nextTarget2D = Random.insideUnitCircle * 10;
// Adding the random point to a Vector3 and adding the current position to it
nextTarget.x = nextTarget2D.x + transform.position.x;
nextTarget.z = nextTarget2D.y + transform.position.z;
Debug.Log ("New Target!");
}
else
{
// If the enemy ran too far away from the last position he had after the chase ended, he shall go back to this point
if(Vector3.Distance(lastPosition, transform.position) > 15f && nextTarget != lastPosition && tooFar == false)
{
tooFar = true;
nextTarget = lastPosition;
Debug.Log("Moved too far!");
}
// Same moving as while chasing
rotateDir = nextTarget - transform.position;
moveDirection = transform.forward * Time.deltaTime;
controller.Move(moveDirection * moveSpeed);
}

}
// Ignore y, so that the enemy doesn't look up or down
rotateDir.y = 0;
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(rotateDir), rotateSpeed * Time.deltaTime);
}

}
// Function to applay damage to the player if the enemy is near him
void hitPlayer()
{
hitTimer += Time.deltaTime;
if(hitTimer > 0.2f)
{
DamageScript dScript = player.GetComponent<DamageScript>();
dScript.getDamage(1);
hitTimer = 0f;
}


}
}

eMo
21.03.2014, 15:45:26
Fremden Code zu debuggen ist immer so mega eklig, vor allem, wenn man die Sprache nicht wirklich beherrscht :D
Ich gehe mal davon aus, dass x und z deine Fläche bilden, auf der man sich bewegt, du aber insgesamt schonmal dreidimensional programmierst, schließlich nutzt du Vector3. Eine Sache verstehe ich nicht, warum sollte er nach erreichen des Ziels ein neues Target suchen? Ist man nach einem Hit tot?
Was bedeutet "15f" in "Vector3.Distance(lastPosition, transform.position) > 15f"? Wenn er den Spieler also länger als 15 Units chasest, soll er dahin zurücklaufen?
Vom Code her sieht das eigentlich recht nachvollziehbar und richtig aus.
Ist vielleicht ein Problem, dass du ihn erst nach der Bewegung rotieren lässt? Du rufst erst controller.move() auf und später am Ende des Skripts erst transform.rotation, in der du die rotateDir nutzt.

eXi
21.03.2014, 16:12:41
Fremden Code zu debuggen ist immer so mega eklig, vor allem, wenn man die Sprache nicht wirklich beherrscht :D

Ist ja auch nur für Leute die Spaß dran haben :D



Ich gehe mal davon aus, dass x und z deine Fläche bilden, auf der man sich bewegt, du aber insgesamt schonmal dreidimensional programmierst, schließlich nutzt du Vector3.


Genau, ich ignoriere die Höhe y, da er nur auf der Fläche laufen soll. Dennoch brauch die Move Function von Unity einen Vector3.




Eine Sache verstehe ich nicht, warum sollte er nach erreichen des Ziels ein neues Target suchen? Ist man nach einem Hit tot?



Nein, generell bewegt sich der Gegner nur wenn es einen Spieler gibt. Wenn er den Spieler nur mehr verfolgt (da er außer Reichweite ist) dann soll er sich ein zufälliges Ziel suchen und dort hingehen. Einfach um ihn nicht doof rumstehen zu lassen.



Was bedeutet "15f" in "Vector3.Distance(lastPosition, transform.position) > 15f"? Wenn er den Spieler also länger als 15 Units chasest, soll er dahin zurücklaufen?



Vector3.Distance gibt die Entfernung zwischen 2 Vectoren wieder. Hier sind es die letzte Position (die Position, die er hatte, als er AUFGEHÖRT hat dem Spieler zu folgen) und die aktuelle Position. Die Rückgabewerte ist ein Floatzahl (Mathe und so :D). Ist diese Zahl größer als 15, ist er zu weit weg von seiner alten Position.
Das mach ich, weil er sich immer in einem Radius um sein letztes Ziel herum ein neues sucht. Somit bewegt er sich immer weiter weg wenn man Pesch hat. Damit das aber nicht passiert, grenze ich den Bewegungsradius ein (15 Units).

EDIT: Die Stelle, bei der er die Entfernung zum Spieler abfragt ist diese hier:

if(Vector3.Distance(player.transform.position, transform.position) > 25)

Also die Position von dem jeweiligen transform (also dem Gegner) und die Position des Spielers. Wenn der Floatwert größer als 25 wird, hört er auf zu folgen.



Vom Code her sieht das eigentlich recht nachvollziehbar und richtig aus.
Ist vielleicht ein Problem, dass du ihn erst nach der Bewegung rotieren lässt? Du rufst erst controller.move() auf und später am Ende des Skripts erst transform.rotation, in der du die rotateDir nutzt.

Das könnte wirklich das Problem sein. allerdings funktioniert es solange er nicht an die Grenze seines Radius kommt. Er wenn seine alte Position als Ziel gesetzt wird, spinnt er ein wenig rum.
Das äußert sich, wie oben gesagt, in komischen Dreh Zuck Bewegungen. Ich sehe auch an der Console, dass er mehrere Male in die If für das zu weit weggehen geht.

Obwohl ich extra vorausgetzt habe, dass er da nur rein gehen darf, wenn er nicht schon zu seiner alten Position laufen soll.

Er geht in die If Abfrage, setzt das Ziel auf die alte Position und anstatt dort hin zu laufen sucht er sich ein neues Ziel. Ich hab aber keine Ahnung wieso er das tut. Das soll er eigentlich nur wenn die Entfernung zum Ziel gering ist (also er angekommen ist).

Vielleicht muss ich das einfach mal alles umschreiben. So eine AI ist schon interessant zu programmieren. Als nächstes würde dann Collision Abfrage hinzukommen, damit er nicht gegen Wände läuft. ^.^


PS: Du solltest echt mal anfangen für Unity in C# zu programmieren. Seien es nur kleine Spielereien wie ich mache. :D Dann könnten wir uns viel besser darüber unterhalten!

eMo
21.03.2014, 17:31:15
Was du abfragst war mir schon klar, ich wollte wissen, warum du einmal ein f nutzt und einmal nicht. Es heißt ja 15f aber nur 25.
Ja, aber der Aufwand mich dort hinein zu finden ist mir momentan noch zu groß. Außerdem komme ich dann durcheinander, weil ich für die Bachelorarbeit in Fortran, für meinen einen Nebenjob in Java, für den anderen in PHP und zum Spaß in C# programmiere. Ich komme jetzt schon immer durcheinander :D
Funktionieren könnte es schon, sollte es aber nicht, wobei es in der Geschwindigkeit, in der dein PC das schafft, wahrscheinlich keinen Unterschied macht, außer er geht in die letzte Abfrage. Wieso er gerade dann einen Unterschied macht, versteh ich jedoch nicht. Vllt weil er sich um ~180° Grad drehen muss.
Würde aber dein Controller.Move-Befehl einfach ans Ende setzen und, da du ja nicht immer movest(was an sich schon seltsam ist :D), einen Boolean nutzen um move() ggbnfalls aufzurufen.

EDIT: Irgendwie macht das schon Spaß, zu schauen, was du da treibst. Vielleicht lerne ich es doch, wenn irgendwann die Motivation nicht so im Keller ist ;)

eXi
21.03.2014, 17:53:36
Achso! Das ging aus dem "15f" nicht hervor. Dachte du meinst die ganze Zahl und nicht das "f".
Das liegt nur daran, dass ich teilweise Unity-eigene Funktionen aufrufe bei denen er meckert, wenn ich an eine Float Zahl kein "f" dran hänge und andere bei denen es auch ohne geht. Wollte deshalb eigentlich immer das f dranhängen, aber vergesse es ab und an noch. Bei der If brauch ich es aber nicht. Ist einfach ein Brainlag wenn es einmal mit und einmal ohne dort steht. :D

Ja ich werde die Funktion nochmal neu aufbauen und direkt das Collision Zeug miteinbauen. Wahrscheinlich habe ich durch das nacheinander zusammenbasteln der Funktion einen Ablauffehler eingebaut, der nicht einsehbar ist.

____

Am Montag hab ich die letzte Klausur. Danach mal ich das Networking Tutorial (: Vielleicht weckt das ja schon ein wenig deine Motivation.

Fox
12.07.2015, 20:57:18
Hallo,

geht hier eigentlich noch was?^^

Ich will euch mal mein Unity Game SlideRace zeigen. Vielleicht kennt ja einer von euch noch die Maps aus Counter Strike Source, indem man Hindernissen ausweichen muss mit 1000 units/s.

Hier mal ein Video als Beispiel, was ich aus Youtube ausgraben konnte:

https://www.youtube.com/watch?v=kTbhVRdrYFU

Die Idee dieser Mapart will ich nun in ein eigenständiges Spiel bringen. Bisher habe ich zwei Maps die ich aus Templates zufällig zusammen setze und unendlich lang sind. Mit der Zeit erhöht sich die Geschwindigkeit, um es zunehmend schwerer zu machen.

Hier habe ich mal ein aktuelles Video dazu:

https://www.youtube.com/watch?v=meW-L0BB_vs

Derzeit habe ich nur eine Android Version, die ich im Google Play Store verteile und mit Updates versorge.
https://play.google.com/store/apps/details?id=de.furay.sliderace

Ich will auf jeden Fall noch eine dritte Map erstellen sowie Sound und Musik.


Was sagt ihr zum aktuellen Stand?

BaShoR
12.07.2015, 21:07:35
Sieht sehr genial aus :) Weiter so!
Würde mich über ne Tastengesteuerte Version freuen, finde sowas ist per Touchscreen oder Kippsensor unglaublich nervig, weil ungenau.
Aber von Spielprinzip, Aussehen und Umsetzung sehr cool!

Direkt mal testen.

eMo
12.07.2015, 21:10:20
Sieht gut aus. :)

Mr Lambda
12.07.2015, 22:42:00
Muss es sein, dass ständig das Anmeldungsfenster kommt?

BaShoR
13.07.2015, 00:17:45
Hat mich auch gestört, aber einmal auf OK klicken und es ist für immer weg.

eXi
13.07.2015, 01:55:03
Mich würde das Springen aus der CS Map auch in der Android Version freuen. Und eventuell mehr Abwechslung in deinen bisherigen Maps,
sowie vielleicht sogar Power Ups. Wenn man den schweren Weg durch die Rohre nimmt, kriegt man vielleicht 10 sec slow oder sowas.

eMo
13.07.2015, 06:28:06
Setzt du für den Zufallsgenerator der Maps immer den selben Seed? Das fände ich noch ganz cool, wenn die Map trotz des Zufalls immer gleich ist?

PowerUps sind eine gute Idee und eine Portierung auf Windows auch ;)

Fox
13.07.2015, 06:42:35
Muss es sein, dass ständig das Anmeldungsfenster kommt?
Nee das muss wirklich nicht sein, hab das gerade eben auch nachvollziehn können als ich keine Internet Verbindung hatte.

eMo ja der seed is aktuell immer der selbe. Und andere Versionen werde ich auch bald supporten, nur ios kann ich derzeit nicht, da ich nix von Apple habe.