strudi Geschrieben 21. April 2014 Melden Share Geschrieben 21. April 2014 Hallo, nach längerer Pause von Unity und vom Programmieren hat mich vor kurzem die Lust wieder gepackt und habe mit meinem Bruder ein kleines Projekt begonnen. Es soll(te) eigentlich nur dazu dienen um wieder rein zu kommen und gewisse Sachen wieder ins Gedächtnis zu bekommen und neue Dinge zu lernen. Soweit läuft das Spiel aber es fehlt noch einiges an Feinschliff und an einigen Features. Was ich unbedingt implementieren möchte ist folgendes: Ich möchte gewisse Daten an eine Datenbank auf einem Webserver senden können um gewisse Statistiken erstellen bzw auswerten zu können. Als Beispiel käme mir in den Sinn, wie oft ein Gegner abgeschossen wurde oder wieviel Zeit insgesamt alle Spieler mit dem Spiel verbracht haben etc. Für mich persönlich wären diese Dinge interessant zu wissen und möglicherweise würde das die Spieler die das Spiel gespielt haben auch interessieren, wenn man es Ihnen mitteilt. Ist sowas möglich? Wenn ja, hat jemand ein paar Denkanstöße oder Lösungsvorschläge? Habe mit Serverbasierten Dingen oder Datenbanken in Unity noch nicht wirklich viel am Hut gehabt. Hilft da womöglich das Snippet für Online-Highscorelisten? Vielen Dank für etwaige Hilfestellungen! Im Anhang noch ein paar Bilder des Projekts! (Noch) Nichts aufregendes, aber es funktioniert wie gewollt und der Lernfaktor und Spaß beim erstellen war und ist ebenfalls vorhanden! Lg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 21. April 2014 Melden Share Geschrieben 21. April 2014 Ich arbeite grade an einem Tutorial: http://www.3dan.de/t...im-framework-1/ - Wenn es fertig ist, werde ich es auch hier ins Forum packen. Wird vlt etwas fett für das was du willst, aber dafür ist es sauber und wiederverwendbar. Ansonsten gibt es noch ein HighScore Tutorial - google mal "Highscore unity php". Der Code dort ist aber...naja...es funktioniert, schön ist anders. Wenn du etwas mehr willst, zieh dir mein Tutorial rein. So schwer ist das nicht. Ansonsten kannst aber auch noch so Dienste wie gameanalytics nutzen... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 21. April 2014 Autor Melden Share Geschrieben 21. April 2014 sehr gut, ich werd mir das mal anschauen! danke! wenn ich weitere fragen habe melde ich mich wieder Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 28. April 2014 Autor Melden Share Geschrieben 28. April 2014 Ich habe es jetzt mal geschafft ein einfaches Account- bzw. Loginsystem zu erstellen. Datenbank mit HeidiSQL erstellt und der Zugriff erfolgt derzeit nur lokal, ist also auf keinem Server hochgeladen. Jetzt möchte ich eine Tabelle für Achievments bzw Erfolge erstellen und diese an die Accounts binden, auch an jene Accounts die nachträglich erst hinzugefügt werden. Die Tabelle habe ich schon erstellt, aber ich stehe momentan auf dem Schlauch wegen den Beziehungen zwischen der Account Tabelle und der Erfolgstabelle. Die Tabellen sehen folgendermaßen aus: Users: -ID -Username -Password Achievments: -ID -AchievmentName -AchievmentDescription -MyProgress -TargetProgress -RewardPoints Es muss ja eine Abhängigkeit bzw. eine Beziehung zwischen der Tabelle "Users" und "Achievments" geben. Nur weiß ich grad nicht wie bzw. mit welchem Primär- bzw Fremdschlüssel. Jeder User sollte mehrere (oder alle) Erfolge haben können. Das wäre meines Wissens nach eine m:n Beziehung? Aber wie löse ich das? Welche Spalten müssen miteinander verknüpft sein um eine solche Beziehung zu ermöglichen? Hoffe es kann mir jemand helfen! Vielen Dank! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 28. April 2014 Melden Share Geschrieben 28. April 2014 ich würd spontan ne 3. tabelle machen http://de.wikipedia....ischen_Tabellen sowas in der art: name: erhaltene_erfolge id | user_id | achievment_id | erhalten_microtime 0 0 1 236326326632 1 0 4 358435858425 2 1 5 243543266436 3 2 12 654886884374 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 29. April 2014 Autor Melden Share Geschrieben 29. April 2014 ok vielen dank, werd mal sehen was ich damit machen kann! was ist in deinem beispiel die spalte "erhalten_microtime"? danke dir lg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
suckerpunch Geschrieben 29. April 2014 Melden Share Geschrieben 29. April 2014 Damit meint er wann der Spieler den Erfolg erhalten hat, was er jetzt speziell angibt ist die Millisekunden für das Datum. Man kann natürlich auch einfach ein Date / DateTime für die erhalten spalte nehmen, nimmt halt mehr Platz in der DB weg, dafür spart man sich dann den Schritt aus den Millisekunden wieder ein Datum zu bauen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 29. April 2014 Melden Share Geschrieben 29. April 2014 was ist in deinem beispiel die spalte "erhalten_microtime"? danke dir lg http://forum.unity-community.de/topic/7310-c-microtime/ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MadLion Geschrieben 29. April 2014 Melden Share Geschrieben 29. April 2014 Für den DB Zugriff bittet sich auch ein Object-Relational Mapper an, dann mußt du dich nicht selbst um das SQL kümmern sondern nur um deine PHP Objekte. Schau dir vielleicht mal die folgenden an: http://www.doctrine-project.org/ http://propelorm.org/ http://redbeanphp.com/ Vielleicht mußt du auch mal nach Vergleichen suchen, um zu entscheiden welches am besten geeignet ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 30. April 2014 Autor Melden Share Geschrieben 30. April 2014 Vielen Dank für eure Hilfe! Werde mich da mal reinlesen! lg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 5. Mai 2014 Autor Melden Share Geschrieben 5. Mai 2014 So, habe nun auch einen OnlineHighscore mit Hilfe des Unity Wiki erstellt, wenn auch in einer abgeänderten Form. Die Liste wird nach "Time" und "Score" sortiert. Je weniger Zeit man braucht, desto weiter oben steht man in der Highscoreliste. Das Auslesen aus der Datenbank und das Anzeigen der Daten in der Szene in Unity funktioniert auch wunderbar. Nun stellt sich mir die Frage, ob man so irgendwie die erreichte Platzierung mit einer Zahl versehen kann? Der erste Platz mit einer "1", der zweite mit einer "2" etc. Und wie man die eigene Platzierung seperat irgendwie anzeigen kann, wenn man recht weit hinten sein sollte in der Tabelle. Das Problem das ich sehe ist, dass die Tabelle nur nach einem gewissen Schema sortiert wird und nirgends die tatsächliche Platzierung gespeichert ist. Jemand eine Idee? Danke lg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 5. Mai 2014 Melden Share Geschrieben 5. Mai 2014 ...das erinnert mich daran mein Tutorial fertig zu machen könnte so aussehen: public class Scoreboard : MonoBehaviour { // 1. string vom Server parsen // parsen hier oder so dann jedes mal AddPlayerToScoreboard("SuperDuperPlayerName", 54315); // 2. "Spieler" in eine Liste packen. public class ScoreboardPlayerDings { public string PlayerName; public float Score; public int Ranking; } public List<ScoreboardPlayerDings> ScoreboardList = new List<ScoreboardPlayerDings>(); public void AddPlayerToScoreboard(string pName, float score) { var p = new ScoreboardPlayerDings {PlayerName = pName, Score = score}; ScoreboardList.Add(p); SortList(); } public void SortList() { // order desc //ScoreboardList = ScoreboardList.OrderByDescending(x => x.Score).ToList(); // order asc ScoreboardList = ScoreboardList.OrderBy(x => x.Score).ToList(); foreach (var p in ScoreboardList) { p.Ranking = ScoreboardList.IndexOf(p) + 1; } } private void OnGUI() { GUILayout.BeginVertical(); foreach (ScoreboardPlayerDings scoreboardPlayerDingse in ScoreboardList) { GUILayout.Label("Ranking: "+scoreboardPlayerDingse.Ranking +" Name: " + scoreboardPlayerDingse.PlayerName + " Score: " + scoreboardPlayerDingse.Score); } GUILayout.EndVertical(); } } Mal so fix aus der Hüfte...geht bestimmt noch schöner Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 5. Mai 2014 Melden Share Geschrieben 5. Mai 2014 edit : acm wieder Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 5. Mai 2014 Melden Share Geschrieben 5. Mai 2014 ^^ easy Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
strudi Geschrieben 5. Mai 2014 Autor Melden Share Geschrieben 5. Mai 2014 Vielen Dank AgentCodeMonkey! Werd ich mir am Abend mal genauer ansehen! Ich ordne die Liste momentan im PHP-File ... so wie ich das sehe, kann ich das verwerfen und die Liste per Code in Unity sortieren ... Hmm ok, wie gesagt, mit DBs in Unity kenn ich mich noch nicht so genau aus! Und wenn ich per Zeit und Score sortieren will? ASC Time DESC Score hmm muss mir das genauer ansehen ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 5. Mai 2014 Melden Share Geschrieben 5. Mai 2014 Kein Ding! Na das ist ja keine "DB" in dem Sinne, nur ne sortierte Liste... und die braucht schon irgendwie sinnvolle Daten. Wenn ich mich recht erinnere gibt das Tutorial schon die 10 besten Spieler zurück. Ich hab einfach nochmal eine Sortierung hinzugefügt... wer weiß... vlt kann es hilfreich sein. Würde sich auch gut für nen lokalen Multiplayer eigenen... wo man schon bei der Wiederverwendbarkeit wäre. Ich hoffe der Code erklärt sich von allein. Unschön finde ich die Schleife bei der Sortierung... vlt gibt es da noch was Eleganteres ....aber wie ich sehe schleicht Marrrk durch den Thread^^ mal sehen was er auspackt desc ScoreboardList = ScoreboardList.OrderByDescending(x => x.Score).ToList(); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.