[Projekt] Devader

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 20.04.2011, 21:03

ich hab nen möglicherweise nicht komplett fehlerfreien algo der auf überkreuzungen prüft, abhängig von der streckenlänge lässt er mehr zu. du kannst die strecke aber auch selbst über eine punkteliste definieren, nur läuft das wie ich sehe online noch nicht.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 09.05.2011, 00:23

grad am konzept der turniere am neu rumstudieren. die aktuelle version bietet turniere die in fixen abständen stattfinden z.B. täglich, alle 14 tage etc. simpel und glaub ich ganz ok. zusätzlich gibt es noch einen ladder-modus. in dieser variante kämpft man nur mit dem gegner der über einem steht. besiege ich diesen aber, komme ich eine runde weiter und kann auch gegen den nächsten gegner antreten. somit ist es möglich auch an einem tag direkt an die spitze zu kommen.

da ich nicht wahnsinnig viele spieler hatte lief es aber bei beiden modi darauf raus, dass sich die turniere/täglichen spiele bis auf kleine abweichungen stark glichen. es war nicht so spannend, ich musste aber ziemlich viele aufzeichnungen speichern und auch spiele laufen lassen. deshalb habe ich vorläufig auch den turnierbetrieb eingestellt und mich auf das renn-spiel konzentriert und allerlei anderen schnick-schnack, der mich in den wahnsinn getrieben hat :)

veränderungsideen:
ich habe mir also überlegt, dass ich im ladder modus nur neue ai's kämpfen lassen. verändert jemand seinen code nicht, bekommt er auch keine chance auf ein rematch. der nachteil wäre, dass wenn bots auch zufall verwenden, diese auch keine weitere chance bekommen obwohl die kämpfe nicht deterministisch sind.

es gibt noch einen weiteren modus den ich mit überlegt habe. eine art highscore modus. in diesem gibt es keine kämpfe gegen andere ki sondern nur eine aufgabe, die zu erledigen ist. z.B. schiebe den ball in das feld, oder sammle alle kekse auf. der highscore modus wäre sogar mensch/maschine übergreifend möglich, was ich ganz interessant finde. (habe auch schon kämpfe gegen ki's probiert, war praktisch chancenlos, da die aufgabe recht schwierig ist mit steuern und zielen zugleich)

was findet ihr? gibt es bessere vorschläge?

---
edit: projektzwischenstand ist fast immer noch der selbe. ich kämpfe mit browsereigenheiten und auch mit meinem konzept alles auf S3 auszulagern. letzteres schlägt wegen der besc**** same-origin-policy weiterhin fehl in einigen browsern, was mir so ziemlich jede lust am weiterentwickeln genommen hat. habe noch ideen den mist zu umgehen, aber freude macht mir davon keine.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 29.01.2013, 17:44

race130129_compressed.jpg
1.5 jahre ist das bereits her, heftig. naja bin kürzlich wieder ein bisschen in laune gekommen und habe etwas weiterentwickelt. es scheint mir es hat auch ein paar positive nebeneffekte, dass ich so lange nichts gemacht habe. same-origin-policy hat mir damals die laune komplett verdorben, es scheint es gibt aber inzwischen brauchbare lösungen für meine damaligen probleme. aktuell bin ich dabei das auto-rennen aufzumöbeln und eine erste ki dafür zu schreiben. im bild kann man die ki in aktion sehen. ich glaube 120 fahrzeuge mit der selben ki, die von checkpoint zu checkpoint fahren. ausweichen gibts aktuell nicht und der gerade weg ist der beste weg... im oberen bild-teil sieht man den start und etwas später wenn sich die geschichte etwas eingependelt hat.

die aktuelle ki ist darauf ausgelegt sich durch mutation und selektion zu verbessern, ich habe dazu zig parameter vorbereitet. noch werden default werte verwendet. jetzt muss ich das ganze an eine datenbank anschliessen. ausserdem muss ich noch eine schlaufe produzieren die ein rennen nach dem anderen startet und die jeweiligen resultate auswertet.
Zuletzt geändert von marcgfx am 03.02.2013, 14:25, insgesamt 1-mal geändert.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 03.02.2013, 14:02

editor130203.jpg

Was ihr hier seht ist ein Screenshot des aktuellen KI-editors. Rechts kann man den KI-Code sehen und links das aktuelle geschehen inkl. visuellen debug informationen.
Mein Ziel war für das Rennspiel eine KI zu entwickeln. Gleichzeitig wollte ich versuchen einen Evolutionsprozess zu simulieren, dafür wurde die KI stark parameterisiert. Da ich schon dabei war, wurde das ganze wie ein Neuronales Netz mit input nodes, hidden-layer und output-nodes aufgebaut (wer will schon verstehen was intern passiert). Die Gewinner eines Rennens werden gespeichert (die Parameter) und bewertet. Je besser die Bewertung, desto grösser ist die Chance das diese Parameter in einer nächsten Stufe verwendet werden. Dazu gibts noch etwas Mutation und Paarungen.

Es gibt verschiedene Schwierigkeiten, teilweise gelöst.
1. Problem: ich muss die Parameter speichern und laden können. Das speichern/laden der Daten wollte ich aber nicht über die cyberlympics Datenbank laufen lassen (theoretisch soll ja jeder eine KI entwickeln können, nicht nur ich). Ich habe also mit "postmessage" angefangen zu experimentieren. Entstanden ist eine connection Klasse mit der ich mich mit jeder Webseite unabhängig von der Domain verbinden kann. Diese Webseite muss natürlich das entsprechende Gegenstück zur Verfügung stellen. Jedenfalls ist es mir gelungen zwischen zwei unterschiedlichen Domains eine stabile Verbindung herzustellen. Ich kann jetzt eine Abfrage an Seite 2 senden und mit selbst programmiertem callback bekomme ich eine Antwort. Seite 2 ladet/speichert via xmlhttp-request die Daten vom eigenen Server -> speichern/laden gelöst.
2. Problem: damit sich die Parameter entwickeln können müssen möglichst viele Rennen gefahren werden. Ich brauche also eine Möglichkeit alles zu automatisieren (Laden, Starten, Stoppen, Speichern). Dafür habe ich jetzt die Option eingebaut ein globales Script im Editor laufen zu lassen. Dieses wird in jedem Zeitschritt ausgelöst und kann die Vorgänge überwachen. Heute Nacht lief das Ding ununterbrochen und der Browser war heute Früh nicht abgestürzt :) , das Resultat und die Anzahl Resultate waren aber etwas dürftig (~2000 resultate).
3. Problem: Die Idee von einer sich selbst korrigierenden/optimierenden KI ist eigentlich ganz nett, nur ist mir aufgefallen, dass es sich einfacher anhört als es ist. Das Resultat ist wie erwähnt etwas schwach. Bedeutet meine Default-Parameter sind nicht viel schlechter als die die sich entwickelt haben. Eventuell habe ich mit meinem Code bereits zu viel vorweggenommen. Ebenso kann es sein, dass die Wahl meiner Funktionen/Parameter ungünstig sind, oder einfach die Masse an Resultaten fehlt. Was mir jedenfalls bleiben wird, ist diese Erkenntnis: die Parameter haben nur den Spielraum, den man ihnen lässt. Nicht getesteter Code funktioniert auch mit Zauber-Parameter nicht. Nach den ersten schlechten Ergebnissen (Ziel wird erreicht, aber dauernd Kollisionen mit der Umgebung) ist mir aufgefallen, dass praktisch jede Funktion falsch war (aber gut gemeint). In meinem Fall hatte das zur Folge, dass die Fahrzeuge besonders gerne in die Umgebung oder im Kreis fuhren. Es ist ziemlich schwierig eine so stark parameterisierte KI zu debuggen, also habe ich mir eine visuelle Debug-Hilfe in Form eines SVG-Layers gebaut. Dieser erlaubt das hinzufügen von Linien und Ellipsen, wobei für mich nur die Linien wirklich hilfreich waren. Im Bild sind die Vectoren zu erkennen die aus unterschiedlichen Input Nodes ausgegeben werden.
4. Problem: Der Mist ist inzwischen ziemlich langsam... bei 20 Wagen läufts schon nicht mehr so flüssig. ein grosses Problem sind die ganzen Bäume (~700 auf dieser Strecke). jede KI hat listen zur verfügung mit allen objekten der welt (jedes Objekt ist in einem wrapper, der Zugriffe auf die Daten beschränkt). Ich überlege mir noch ob ich das irgendwie auf einen Sichtradius beschränken kann.

weiss/schwarz: vectoren des track-nodes. Man kann sehen das die schwarzen auf die eck-punkte des nächsten checkpoints zeigen (die kleineren sind der einfluss des übernächsten). der weisse vector ist der resultat-vector des track-nodes.
blau: welche objekte sind im einflussbereich und sollen das gefährt zum ausweichen bringen
rot/orange/gelb: einfluss der objekte die mit blau verbunden sind (rot:feinde, orange: statische objekte/bäume, gelb:freunde)

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 03.02.2013, 16:03

damit ihr euch vorstellen könnt wie das mit den parametern ausschaut, die in der db gespeichert werden:

Code: Alles auswählen

{
	"hidden": {
		"0": {
			"mea": {
				"k": 0.5916372863575816,
				"p": 1.483292790874839,
				"k2": 0,
				"p2": 0.5200584527755729
			},
			"mev": {
				"k": 1.1203402149491013,
				"p": -1.678719804622233,
				"k2": 0.3983989464119077,
				"p2": -0.16259628161787987
			},
			"track": {
				"k": 68.96803259951994,
				"p": -0.6965896774083375,
				"k2": 0.14193892246112227,
				"p2": 0.10535883298143744,
				"nk": 1.1177680080756545,
				"np": -1.2287046249024571,
				"l": 2.4582380852829315,
				"skip": 0.14887223728001117,
				"alt": 0.27776484126225115
			},
			"static": {
				"k": -26.014464899059384,
				"p": -0.5277381895296276,
				"k2": -0.09935713214799763,
				"p2": 0.6024880448356271,
				"r": -345.9902491886169
			},
			"team": {
				"k": -47.92445171624422,
				"p": -0.3370497225038708,
				"k2": 0.206453506462276,
				"p2": 1.3035271825268864,
				"r": 92.4751615004614
			},
			"foe": {
				"k": 81.80963130973406,
				"p": -0.3767760987579823,
				"k2": 0.07669108174741268,
				"p2": 1.517539366425711,
				"r": 64.22146484581754
			}
		},
		"1": {
			"mea": {
				"k": 0.982555711362511,
				"p": -2.63960332350831,
				"k2": -0.05700592901557684,
				"p2": -0.004006999451667071
			},
			"mev": {
				"k": 0.6159166934899986,
				"p": 0.7752042718231678,
				"k2": 0.11339136213064194,
				"p2": -0.2039952055551112
			},
			"track": {
				"k": 128.21046136800473,
				"p": -0.033997480757534504,
				"k2": -0.138810258731246,
				"p2": 0.05056533636525273,
				"nk": 1.1034548730589449,
				"np": -1.434324692096561,
				"l": 1.8177025208320177,
				"skip": -0.16176637569442393,
				"alt": -0.08417725525796414
			},
			"static": {
				"k": -36.50978888208047,
				"p": -0.6284857841581106,
				"k2": -0.2544189814478159,
				"p2": 1.7079608905890342,
				"r": 90.88202358651907
			},
			"team": {
				"k": -26.05604865616187,
				"p": -0.2,
				"k2": 0.3553537183171849,
				"p2": 0.5844666996970773,
				"r": 100.63334421338514
			},
			"foe": {
				"k": -26.426427376363424,
				"p": -0.791428959928453,
				"k2": -0.19414396043866874,
				"p2": 1.6925862088672883,
				"r": 105.1761123817414
			}
		},
		"2": {
			"mea": {
				"k": 0.6941168948076665,
				"p": 1,
				"k2": 0.001226843148469925,
				"p2": 0.026072624139487743
			},
			"mev": {
				"k": 0.8711140998639166,
				"p": 1.3500372614711522,
				"k2": 0.34083524327725173,
				"p2": -0.04346384517848492
			},
			"track": {
				"k": 71.16876585269347,
				"p": -0.3517664222046733,
				"k2": 0.0582671488635242,
				"p2": -0.1256614673882723,
				"nk": 2.533595892600715,
				"np": -1.4315562012605367,
				"l": 1.4489401958882808,
				"skip": -0.11310311239212752,
				"alt": -0.16789157828316092
			},
			"static": {
				"k": -19.504359879251567,
				"p": 0.010752523653209195,
				"k2": -0.3640480956062675,
				"p2": 1.1304567016661167,
				"r": 111.70639466736466
			},
			"team": {
				"k": -31.775337715819482,
				"p": 0.5965113220920939,
				"k2": 0.08075493350625039,
				"p2": 1.1483267812058329,
				"r": 111.07729463847355
			},
			"foe": {
				"k": -25.01526116472533,
				"p": 0.051872849799692644,
				"k2": -0.1487887091934681,
				"p2": 0.8943935837596655,
				"r": 449.56389791332185
			}
		},
		"3": {
			"mea": {
				"k": 0.4627738049253821,
				"p": 1.4593830688856542,
				"k2": -0.3765397543087602,
				"p2": -0.33820962331680904
			},
			"mev": {
				"k": 0.6581994377076625,
				"p": 0.9831942589022221,
				"k2": -0.10637178802862764,
				"p2": 0.12110201017931105
			},
			"track": {
				"k": 96.97135049141943,
				"p": -0.4762889420613647,
				"k2": -0.08417232345375822,
				"p2": 0.07866266015917063,
				"nk": 1.7691001435741782,
				"np": -3.913078447803855,
				"l": 2.2453834521213376,
				"skip": 0.07978251716122031,
				"alt": -0.38344595562666656
			},
			"static": {
				"k": -23.753568678256123,
				"p": -0.41153039231896404,
				"k2": 0.14546030815690755,
				"p2": 1.3781007436104118,
				"r": 82.8515015201643
			},
			"team": {
				"k": -39.991615735646334,
				"p": -0.2078390508703888,
				"k2": -0.21387036740779877,
				"p2": 0.5522180444560945,
				"r": 95.66653431905434
			},
			"foe": {
				"k": -28.007919484749436,
				"p": -0.5597754711628039,
				"k2": 0.13212381703779102,
				"p2": 0.9147690842859447,
				"r": 89.44431174891069
			}
		},
		"4": {
			"mea": {
				"k": 1.6381659366190435,
				"p": 1.9672410928779271,
				"k2": -0.32266733003780246,
				"p2": 0.30799991311505437
			},
			"mev": {
				"k": 0.9949347431771457,
				"p": -3.014794031623751,
				"k2": 0.03034576326608658,
				"p2": 0.14038632111623883
			},
			"track": {
				"k": 84.95636485526339,
				"p": -0.6173227382823825,
				"k2": 0,
				"p2": -0.2686211007647216,
				"nk": 0.6463690345175565,
				"np": -0.8517457175999881,
				"l": 1.96441349349916,
				"skip": 0,
				"alt": -0.1812741307541728
			},
			"static": {
				"k": -25.98355955723673,
				"p": -0.6058398922532797,
				"k2": 0.2526785326190293,
				"p2": 0.4577379380352795,
				"r": 113.8338381181471
			},
			"team": {
				"k": -40.465026328526434,
				"p": -0.5023057941906155,
				"k2": -0.6573129135382755,
				"p2": 1.4934984164312484,
				"r": 95.23347347555682
			},
			"foe": {
				"k": -21.087544573750346,
				"p": -0.39609519420528805,
				"k2": -0.11730547268781916,
				"p2": 0.5665475198067724,
				"r": 123.29900105642155
			}
		},
		"5": {
			"mea": {
				"k": 1.2275610586628316,
				"p": 1.028736744914204,
				"k2": 0.36135727874934676,
				"p2": 0
			},
			"mev": {
				"k": 0.7860690439119935,
				"p": 0.8945769543759525,
				"k2": 0,
				"p2": -0.06086964756250382
			},
			"track": {
				"k": 100.04860575780428,
				"p": -0.8707216479815543,
				"k2": 0.2552446578629315,
				"p2": 0.39014539290219546,
				"nk": 0.9720568609423936,
				"np": -1.1330362412147224,
				"l": 4.677278478629887,
				"skip": -0.3094069706276059,
				"alt": 0
			},
			"static": {
				"k": -37.88004194283858,
				"p": -0.09361378766596315,
				"k2": 0.059790906403213745,
				"p2": 0.46393470847979185,
				"r": 109.18502761125565
			},
			"team": {
				"k": -32.02548521878198,
				"p": 0.6325589389719956,
				"k2": -0.21592283295467496,
				"p2": 1.0525758134201169,
				"r": 63.274900698941195
			},
			"foe": {
				"k": -29.39050301194467,
				"p": -0.43056488277390603,
				"k2": 0.5062900605893595,
				"p2": 0.7324531014077366,
				"r": 74.93193961391225
			}
		}
	},
	"output": {
		"0": {
			"0": {
				"k": 1.1105636717241347,
				"p": 0.794062973652035,
				"k2": 0,
				"p2": -0.04796860540348269
			},
			"1": {
				"k": 0.958115547709167,
				"p": 1.2511312273330988,
				"k2": -0.342438364494592,
				"p2": 0.11312712840735913
			},
			"2": {
				"k": 1.0314191260375085,
				"p": 1.261327677965164,
				"k2": 0,
				"p2": 0.22758392756804824
			},
			"3": {
				"k": 1.2445386597886683,
				"p": 0.58309020351268,
				"k2": -0.38047840921208265,
				"p2": 0
			},
			"4": {
				"k": 0.5900359110373202,
				"p": 0.6662431756965816,
				"k2": 0.1273651083931327,
				"p2": -0.013764569256454707
			},
			"5": {
				"k": 0.5931883523240684,
				"p": 0.9301339014433324,
				"k2": -0.10756376227363945,
				"p2": -0.2839621154591441
			}
		},
		"1": {
			"0": {
				"k": 3.5853434819728136,
				"p": 0.7798090460710227,
				"k2": -0.33219804810360076,
				"p2": 0.10410244697704912
			},
			"1": {
				"k": 0.8931756173260509,
				"p": 4.063531626015902,
				"k2": 0.2633419235236943,
				"p2": -0.35259082391858104
			},
			"2": {
				"k": 1.181098174210638,
				"p": 0.3234228778630495,
				"k2": -0.06306479712948203,
				"p2": 0
			},
			"3": {
				"k": 1.171306757070124,
				"p": 1,
				"k2": -0.0030714920721948147,
				"p2": -0.31557985739782457
			},
			"4": {
				"k": 1.392260952014476,
				"p": 0.7942239387632362,
				"k2": 0.18594186482951047,
				"p2": -0.1397990864701569
			},
			"5": {
				"k": 1,
				"p": 0.7450883012264967,
				"k2": -0.04438099674880505,
				"p2": 0.14487892081961037
			}
		},
		"2": {
			"0": {
				"k": 0.8783998137339949,
				"p": 0.6243464957922698,
				"k2": 0.21998766874894501,
				"p2": -0.2887017038817803
			},
			"1": {
				"k": 1.1916877411305904,
				"p": 1.3376961924135684,
				"k2": 0.1923770853318274,
				"p2": 0
			},
			"2": {
				"k": 0.3796799092553556,
				"p": -0.8589851227588952,
				"k2": 0.3692106955684722,
				"p2": 0.22791311256587507
			},
			"3": {
				"k": 1.0856287639588118,
				"p": 1.1682743964716793,
				"k2": 0.17781527424231172,
				"p2": -0.19306801753118635
			},
			"4": {
				"k": 0.8108493444509806,
				"p": 1.143612865637988,
				"k2": 0,
				"p2": 0.1020142899004331
			},
			"5": {
				"k": 1.2493212558329105,
				"p": 1.4206023703594692,
				"k2": 0,
				"p2": 0.10731444908306004
			}
		},
		"3": {
			"0": {
				"k": 0.7993406327441335,
				"p": 1.9247031261686611,
				"k2": -0.04883392127230764,
				"p2": 0.2178525395691395
			},
			"1": {
				"k": 1.3218945357948542,
				"p": 1,
				"k2": -0.08280961532145739,
				"p2": 0.19691526023671033
			},
			"2": {
				"k": 0.8771947046741844,
				"p": 1.018971769604832,
				"k2": -0.2218311763368547,
				"p2": 0
			},
			"3": {
				"k": 0.7926625349020824,
				"p": 1.2256284381262956,
				"k2": 0.06057510599493981,
				"p2": -0.30955887446179986
			},
			"4": {
				"k": 0.4544287239201367,
				"p": 1.1687588908709587,
				"k2": -0.17485569724813105,
				"p2": -0.9889880378363205
			},
			"5": {
				"k": 1.01404837500304,
				"p": 0.3436825465410947,
				"k2": 0.05841324105858803,
				"p2": -0.09408816397190095
			}
		}
	}
}
[/size]

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3808
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Cyberlympics

Beitrag von Chromanoid » 03.02.2013, 18:14

Ich find's super, dass Du wieder daran arbeitest :D bei Gelegenheit lese ich mir mal Dein Updates durch ;)

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 05.02.2013, 01:35

schon mal spannend diese geschichte mit evolution und neuronalen netzen. ich habe keinen schimmer was eigentlich passiert, es werden viele parameter verändert aber wieso kann ich nie verstehen. allerdings scheint es auf die eine oder andere art zu wirken und die fahrzeuge verhalten sich optisch zwar nicht immer so gut, aber resultatmässig werden sie besser. an gewissen problemen scheinen sie aber konsequent zu scheitern, so wird mit vorliebe ein baum mit voller geschwindigkeit gerammt. auch eine art natürliche selektion... jedenfalls war ich zu anfang wohl zu gnädig mit meiner selektion und meine population ist auf über 5000 angewachsen. jetzt bin ich bösartiger und meine population schwindet immer mehr, ich habe schon fast angst dass sie morgen früh evtl sogar ausgerottet ist. ich lass mich überraschen.

gestern hatte ich bereits eine relativ brauchbare KI, ich konnte sie auf schwierigen strecken aber noch abhängen. ich muss dazu allerdings sagen dass ich mir einen unfairen vorteil habe gestatten müssen. bei kollisionen habe ich noch einen rotationsimpuls hinzugefügt, dieser hat mich beim steuern massiv aus dem gleichgewicht gebracht. damit ich in einem dichten feld noch halbwegs den wagen lenken kann, musste ich den impuls (nur für mich) um faktor 5 reduzieren.

einige selbstzweifel plagen mich, ich frage mich ob mein selbst gestricktes neuronales-genetisches konstrukt überhaupt funktionieren kann. wie gesagt, ich sehe zwar verbesserungen, aber womöglich gibt es eine nicht überwindbare barriere. meine nodes arbeiten mit vectoren, diese sind abhängig von einer berechnung bereits ausgerichtet. diese richtung konnte bislang nicht direkt beeinflusst werden, evtl. war das gut oder eben zu stark einschränkend. ich habe jetzt einen weiteren parameter für vector nodes hinzugefügt, der diese vectoren rotieren kann. evtl. ist das ein parameter zu viel oder es gibt der entwicklung neue freiheiten. hat jemand von euch erfahrung auf diesem gebiet? kann es zu viele parameter geben?

Benutzeravatar
Krishty
Establishment
Beiträge: 6858
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Krishty » 05.02.2013, 07:38

marcgfx hat geschrieben:schon mal spannend diese geschichte mit evolution und neuronalen netzen. ich habe keinen schimmer was eigentlich passiert, es werden viele parameter verändert aber wieso kann ich nie verstehen. allerdings scheint es auf die eine oder andere art zu wirken
Lustig weil ich Neuronale Netze schon immer erachte als: „Es funktioniert, aber wir haben keine Ahnung, warum, also sagen wir, neuronale Netze“ ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 18:51
Wohnort: Aachen

Re: [Projekt] Cyberlympics

Beitrag von Artificial Mind » 05.02.2013, 08:17

marcgfx hat geschrieben:hat jemand von euch erfahrung auf diesem gebiet? kann es zu viele parameter geben?
Ja, das Problem ist: zu viele Nodes machen overfitting zu wahrscheinlich. Damit sind die Lösungen dann zu angepasst an den Test und versagen schon bei kleinen Abweichungen von den Tests. Richtig viel Lösungen dagegen gibt es nicht, man sollte aber schon die Struktur des neuronalen Netzes manuell steuern und nicht alle nodes mit allem verbinden.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 05.02.2013, 11:15

heute nacht ist meine population nicht geschrumpft, hatte noch nen bug drin bei der paarung (konnte nicht mit neu hinzugefügten parametern umgehen). ich weiss also noch nicht ob meine neuen parameter alles zerstören oder verbessern werden. das mit dem overfitting versuche ich etwas zu bekämpfen indem ich auf 4 rennstrecken parallel testen lasse (4 browser tabs, hat den vorteil das auch auf meinen 4 cpu gearbeitet wird!). eigentlich bin ich mehr als zufrieden, wenn sich was herauskristallisiert, das zumindest ein glaubwürdiges fahrverhalten an den tag legt. die idee wäre ja weiterhin, dass ein konkurrenzkampf um die beste KI entfacht werden kann (aktuell läufts online nicht richtig).

ich werde vermutlich noch eine einfachere KI nach dem selben prinzip erstellen, die aber viel weniger informationen verarbeiten muss (ich habe auf der strecke eine art kekse-spur wie bei hänsel und gretel, die ich bei der aktuellen ki aber nicht verwende).

Dummie
Beiträge: 97
Registriert: 09.02.2004, 21:45

Re: [Projekt] Cyberlympics

Beitrag von Dummie » 05.02.2013, 18:44

Ich fand KI schon immer sehr interessant und habe damit auch schon selbst viel experimentiert. Was sind deine genauen Anforderungen an die KI?

Vielleicht ist ja folgendes Video auch noch eine Inspiration für dich: http://www.youtube.com/watch?v=0Str0Rdkxxo

Ansonsten musst du eben aufpassen, dass du nicht zu viele Inputs und Outputs hast. Auch die Wahrscheinlichkeiten von Mutationen, Crossover, usw. musst du gut wählen. Da muss man (leider) sehr viel experimentieren. Und nicht zuletzt muss man auch einige Generationen ablaufen lassen, um Ergebnisse zu bekommen. Erfordert also auch viel Geduld.

Sollte sich deine KI immer wieder komisch verhalten, dann solltest du auch berücksichtigen, dass vielleicht einfach ein Bug vorliegt. Es ist nämlich nicht selten, dass ein solcher Algorithmus Bugs aufdeckt und diese dann eiskalt ausnutzt. :D

Und warum verstehst du nicht warum gewisse Parameter verändert werden? Normalerweise sollte man das gut nachvollziehen können. So hat z.B. ein Fahrzeug sich besonders gut geschlagen und "Gene" werden eben vererbt - warum sich dann also der Parameter für andere Fahrzeuge auch ändern, ist damit doch eigentlich sehr klar.

Und warum lässt sich deine Population ausrotten? Ich habe das bisher immer so gehandhabt, dass ich eine Population mit einer festen Anzahl generiert habe. Dort hab ich dann mit Crossover, Mutation, usw. eine neue Generation mit gleicher Anzahl generiert, usw... Schlechte Gene sterben so natürlich, aber es würde nie vorkommen, dass die gesamte Population ausstirbt.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 05.02.2013, 18:44

heute habe ich plötzlich feststellen müssen, dass sich meine KI nicht wirklich an die regeln hält. es ist in mode gekommen checkpoints auszulassen. es ist möglich bei einem rennen einen checkpoint auszulassen, dafür kassiert man aber eine zeitstrafe. meine erste reaktion war das strafmass zu erhöhen, was aber keine merkliche verbesserung brachte. da fiel mir was auf: ich habe in meiner bewertung diese zeitstrafe ebenfalls berücksichtigt, aber einen entscheidenden fehler gemacht. bei einem rennen überleben immer die erstplatzierten. damit auch die zeistrafe berücksichtigt wird, warte ich auf nachzügler und lasse sie ebenfalls überleben, wenn sie im zeitrahmen der best-platzierten drin sind. jetzt überlebten aber auch immer diejenigen die möglichst viele checkpoints ausliessen und somit als erstes ins ziel kamen. egal wie schlimm ich sie bewertet habe, sie starben zumindest nicht so schnell ab und hatten einen entscheidenden vorteil. jetzt mache ich nach abschluss des rennens ein zusätzliches ranking das auf der bewertung basiert. jetzt wird nicht mehr beschissen, hoffe ich...

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 05.02.2013, 18:52

@Dummie: da hat einer wohl gleichzeitig gepostet.
naja die wahl der mutation/crossover ist schwierig, ich habe jetzt einfach ein paar zufallswerte gesetzt und hoffe dass sich was tut ;)
das eiskalte ausnutzen, ja das thema hatte ich eben ;)
wieso sich die parameter ändern ist mir schon klar, aber ich verstehe nicht die wirkung die jeder parameter hat. es sind zu viele und ich habe möglichst viel freiheit erlauben wollen...
meine population ist auch nicht über generationen gesteuert sondern ich habe ein system mit like/hate eingeführt. ein genset mit einer guten rate wird bevorzugt, wird er mehr gehasst als geliebt wird er vernichtet.
alles ist auch nie gestorben, aber von 5000 auf 200 ist sie mir mal runtergefallen (parameter änderungen) inzwischen aber wieder stabil um ~1500 rum.
das ganze ist experimentell und mit halbwissen aus dem finger gezogen ;)

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

[Projekt] Cyberlympics

Beitrag von marcgfx » 07.02.2013, 04:00

screen130207.jpg

nix ki, hatte ne neue furzidee die rausmusste: splitscreen. ich bereue es (da ich morgen zur arbeit muss), aber es musste sein...
Zuletzt geändert von marcgfx am 07.02.2013, 23:30, insgesamt 1-mal geändert.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

[Projekt] Cyberlympics

Beitrag von marcgfx » 07.02.2013, 23:30

screen130207_2.jpg

gab doch noch so einige fehler in der umgestellten engine. zum teil wurden bilder nicht gezeichnet, andere wieder nicht gelöscht etc. die strecke wurde auch nicht mehr ganz komplett gezeichnet, die umgebungs-verschönerungen wurden auch komplett weggelassen. ist alles wieder da. die fps leiden allerdings schon ein bisschen ;)

der kommentar nix ki, von heute früh, war eigentlich blödsinn. habe schon noch was gemacht. vor allem habe ich etwas an den physik-einstellungen gedreht. zuvor war jedes gefährt ein halber gummi-ball und die haben sich gegenseitig brutal schubsen können. gemerkt habe ich es natürlich als ich selbst übelst dran genommen wurde ;) ... nach den umstellungen ist das feld viel kompakter und ich denke auch realistischer.

grundsätzlich hätte ich jetzt also ne brauchbare ki, kann splitscreen fights technisch umsetzen. jetzt muss ich noch ein spiel draus machen ;)

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 08.02.2013, 19:50

habe kein einziges rennen mehr gewonnen... hab mich hauptsächlich als schlusslicht im ziel eingefunden. fahren wie die henker! hauptschwäche der KI ist definitiv die kollisionsverhinderung. ich denke daran bin vor allem ich schuld, bzw. meine wahl der input-parameter. jeder input besteht aus einem oder einer kombination von absoluten vektoren, ich denke es wäre besser gewesen mit informationen relativ zum gefährt zu arbeiten. aus den absoluten werten kann das netzwerk wohl nicht erkennen in welcher relation ein wert zur aktuellen ausrichtung steht. das wäre aber vermutlich das wichtigste.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 10.02.2013, 18:48

bin weiterhin ziemlich fleissig. habe gestern noch einiges für den split-screen mehrspieler modus investiert, jetzt lassen sich auch mehrere fahrzeuge kontrollieren. ebenso wird die strecke für jeden spieler korrekt beleuchtet (der nächste checkpoint wird gehighlightet). spass hatte ich dann noch als ich einen alten chrome-bug wieder entdecken durfte, bei dem er mehrfach das selbe cookie setzen lässt. wie es dazu kommt ist mir aber schleierhaft. das hatte bei mir zur folge, das meine cookies alte werte zurücklieferten. erstmal fleissig am debuggen bis mir endlich wieder der alte bug einfiel :S

heute habe ich dann der vollständigkeit halber noch eine minimap für jede ansicht eingebaut. ging ziemlich flott. dann ist mir beim testen was ganz komisches aufgefallen. meine fps waren absolut im keller. aber immer nur wenn ich einen rennen gestartet habe. irgendwann schoss dann aber die fps einfach wieder auf die gewünschten 25 hoch. der profiler konnte mir nicht helfen, nirgends böse werte. ich habe verschiedenstes ausprobiert und ganz ungewöhnlich sachen festgestellt. wenn ich rückwärts fuhr kamen die fps schneller wieder. ebenso wenn ich in das andere auto reinfuhr. allerdings dann auch wenn ich die ansicht verschob, aber nicht immer. argh. verschiedenstes ausgeschaltet und wieder eingeschaltet. die engine durchgeschaut und tatsächlich einen kleinen bug entdeckt. wars aber nicht. wenn ich nur in einer ansicht zeichnete war das problem auch weg, aber auch das war nicht das problem. meine fps-info anzeige hat mir auch merkwürdiges mitgeteilt. die berechnung war 2-3ms daran konnts nicht liegen. aber es dauerte ewig bis ein neuer frame überhaupt begonnen wurde. da hatte ich das setTimeout im visier, das mir aber schon lange gute dienste erwiesen hat. da viel mir was auf. eine einzige sache wurde nicht von meiner fps-info leiste erfasst. das war die fps-info leiste selbst. also mal ausschalten. blöderweise sieht man dann die fps aber nicht, aber es hat mal nen guten eindruck gemacht. anstatt fps leiste, schrieb ich also die info in mein log fenster. fps auf 25...

verdammt: die fps-info leiste war schuld. aber wieso? wirklich wissen tu ich es nicht, aber vermuten. lösen konnte ich das fps problem indem ich die leiste mit css von unten links nach oben links verschoben habe. ich vermute das es beim anpassen der fps irgendwie die zeichnungshierarchie von chrome gezwungen hat viele andere elemente ebenfalls zu zeichnen. wieso rückwärtsfahren das problem auch gelöst hat werd ich vermutlich nie erfahren.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 11.02.2013, 18:24

habs wieder mal geschafft, nicht das zu tun was ich wollte... gestern abend ist mir wieder mal aufgefallen, dass mein sound nicht so super stimmt. ich habe mal code geschrieben, der die geräusche auf stereo aufteilen soll, aber irendwie hat es nicht so geklappt. es gab zwar ne aufteilung, aber sie war nie überzeugend. hauptproblem bei der geschichte ist, dass ich nur eine limitierte anzahl sounds gleichzeitig spielen kann, also wird in meinem code eine addition von gleichen sounds gemacht. diese wird dann relativ zur aktuellen ansicht noch umgerechnet. wenn 10 mal der selbe sound abgespielt werden soll, spiele ich ihn also nur ein mal ab, aber mit angepasster lautstärke und pan. jedenfalls hab ich gestern meinen code nochmal durchgearbeitet und vieles nicht mehr verstanden. mit der zeit kam dann aber das verständnis, so blöd war der code gar nicht. einzig und allein die position wurde nicht richtig übergeben, was dazu führte, dass alles nur aus der rechten box kam. jetzt hatte ich aber eben erst noch split-screen eingebaut... also nochmal alles überarbeitet und für jede view eine berechnung der sounds relativ zum zentrum der ansicht. war etwas mühsam, scheint aber zu klappen. eine weitere schwierigkeit habe ich aber festgestellt, ich habe mühe die lautstärken der verschiedenen elemente sinnvoll zu definieren. z.b. wie laut ist ein motor, ein zusammenstoss etc. habe jetzt einfach ein bisschen rumgebastelt, aber naja :)

um dem ganzen etwas abzuhelfen, gibts jetzt noch nen kleinen regler für music, sound und noise (motorengeräusche). da kann man das nervige auch reduzieren ;)

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 13.02.2013, 02:34

ich hoff ich geh euch nicht schon auf die nerven mit meinem bilderlosen geschwafel. aber für mich ists eigentlich ganz witzig kurz niederzuschreiben wo ich so stehe. gestern/heute gabs nicht mehr ganz so viel, aber ich bin an einer neuen version der KI dran. bislang schlägt sie sich massiv schlechter als version 1, aber vielleicht braucht sie einfach noch zeit. grundsätzlich ist der aufbau ziemlich gleich wie bei der ersten KI, ich konnte den kompletten DB code und die automatisierung weiterverwenden. hauptunterschied ist, dass ich jetzt relative daten zu einem fahrzeug verwende. als ausgabe gibt es jetzt auch nur noch einen impuls für die ausrichtung und einen für den antrieb. als ich die paar bugs beseitigte, konnte ich auch bereits ein erstes zittriges fahrzeug ins ziel fahren lassen.

inzwischen sind sie schon deutlich schneller geworden, nur hat sich so eine saumode eingeschlichen, dass sie plötzlich den rest der strecke rückwärtsfahren (obwohl es viel langsamer ist). bin mir jetzt nicht sicher, ob ich einfach keine möglichkeit geliefert habe, dass sie sich umdrehen können. naja. ich habe jetzt noch ein paar neue parameter eingebaut. es gibt in gewissen nodes jetzt bedingungen, also könnte es sein dass ein node nur in einer bestimmten situation einfluss nimmt, oder so ist die hoffnung. ebenso hab ich den einfluss von anderen objekten winkel-abhängig gemacht, so könnte die KI z.B nur die fahrzeuge vor sich berücksichtigen. obs was bringt werde ich vielleicht morgen sehen...

neben KI habe ich auch noch etwas am editor geschraubt. jslint hatte ich schon länger eingebaut, aber gewisse kritische fehler im bot-code werden einfach nicht erkannt. da wollte ich mir ein update installieren, aber irgendwie scheints damit nicht mehr zu klappen. nervt, aber wird schon werden.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 13.02.2013, 18:48

naja, die KI ist noch immer nicht sonderlich toll. aber gibt ja noch anderes zu tun. heute war bislang eher langweiliges zeug an der reihe. habe den code aufgeräumt und den im editor für benutzer zugänglichen code besser abgegrenzt. zuvor gab es zugriff auf zahlreiche funktionen die nichts gebracht hätten.

gestern abend habe ich dann noch bis 5 uhr morgens die neue jslint version eingebaut. leider hat es einige dumme sachen in jslints neuen versionen drin. so ist es teilweise nicht erlaubt gängigen code zu verwenden. ganz übel ist:
for(var i=0;i<4;i++)

bei so einem konstrukt bricht der jslint parser ab und gibt keine weitere meldungen von sich. super. ich habe also dann in jslint selber rumgepfuscht und den abbruch beseitigt. danach gibt es aber lauter meldungen, dass i nicht definiert sei. naja jslint ist leider nicht ganz unkompliziert mit 5k+ zeilen (nicht alles code). also habe ich mir ne alternative gesucht. anstatt die meldungen in jslint zu beseitigen, vernicht ich sie bei meiner ausgabe. gewisse meldungen habe ich also komplett zerstört, aber ich denke das ist ok so.

da ein KI-schreiber theoretisch nicht die selben debug möglichkeiten wie ich haben könnte (bin mir noch nicht sicher). füge ich in jeden bot code selber auch noch code ein. unter anderem schreibe ich in einer funktion die zeilennummer rein: _L_(x). bei einem absturz des bots kann ich also die zuletzt begonnene zeile ausgeben lassen. damit es nicht zu endlosschlaufen kommt habe ich die funktion _Q_(); eingebaut. diese hat einen zeahler und ein zeitlimit drin. bei jedem 1000sten aufruf wird die verbauchte zeit der ki überprüft. ist diese grösser als 1sekunde wird der bot zerstört. diese geschichten gabs schon lange, aber ich hatte immer wieder probleme mit dem eingefügten code. aktuell scheints aber nicht so schlecht gelöst.

der verarbeitete code sieht so aus:

Code: Alles auswählen

function node_out(input, weight){_Q_();_L_(25)_;
_L_(26);  var result = 0;
_L_(27);  for(var i=0;i<input.length;i++){_Q_();
_L_(28);    result += input[i] * todouble(weight[i]);
_L_(29);  }
  return result;
_L_(31);}
die letzte zeile ist eigentlich falsch. aber im moment ist das mir noch wurst.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 17.02.2013, 18:24

hab weiterhin an der ki geschraubt, bugs gefixt und ein paar sachen optimiert. gibt aber nicht wirklich viel neues zu sehen. habe eben noch eine neue kleine idee angefangen einzubauen, da ich heute schweren aufgaben nicht gewachsen bin :) . bislang gabs nur die normale beton-strecke und das rainbow-road experiment. mit svg lässt sich ja schon noch einiges machen, die filter können ganz schön komplex und langsam werden. ich habe etwas rumprobiert und ein einfacher blur filter kann schon ganz gut kommen. ich denke damit könnte ich auch dreck-strassen oder simple eis-welten erschaffen. werde bloss noch parameter für die strassenbeschaffenheit einführen müssen. über wasser habe ich auch schon nachgedacht, aber aktuell keine idee wie ich das glaubhaft umsetzen könnte.

screen130217.jpg


die ki fährt mir auf alle fälle weiterhin meistens um die ohren, ausse ich kann mich aus dem feld lösen und einen vorsprung herausfahren. 1 gegen 1 ist sie noch nicht so stark. ich überlege noch ob ich extras einbauen sollte, wie z.b. öl flecken oder turbo-boost geschichten. naja ich verzettele mich wieder mal ;) aber vielleicht hat ja noch einer ne gute idee.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 19.02.2013, 02:20

.screen130219.jpg

im bild seht ihr ein kleines gerangel ki vs ki (ich bin zwar mitgefahren, aber war schon weit abgeschlagen), einer flog von der piste den anderen hats gedreht.

habe noch etwas mit den parametern für die strecke rumgespielt (wie rutschig sie ist etc.) und auch am staub gebastelt... zuvor gabs nur neben der strecke staub, jetzt gibt es auch noch optional streckenstaub in der entsprechenden farbe. ist zwar ganz witzig, bringt aber wenig neben performance-einbruch bei überstaubung.

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3808
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Cyberlympics

Beitrag von Chromanoid » 19.02.2013, 09:32

sieht geil aus :)
Eine Arcade Version solltest auf jeden Fall auch veröffentlichen :) Wenn jetzt noch PowerUps dazu kommen, dann ist das doch schon viel mehr als ein solides Rennspiel im Browser. Ich finde das Spiel würde gut auf kongregate.com passen.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 19.02.2013, 23:48

danke für das lob und den tip. ich hab mir kongregate angeschaut, habe bislang aber keine konkreten absichten mit dem projekt geld zu verdienen ;) . wichtig ist mir, dass ich den ki-entwickler teil nach dem rennspiel auch noch ausbauen kann. scheint viel mit achievements und kontent-kaufen zu funktionieren, beides bislang nicht vorgesehen. ich meine werbung kann ich ja selber auch platzieren, die frage ist bloss ob mein spiel dann auch von jemandem mal gespielt wird :)

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3808
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Cyberlympics

Beitrag von Chromanoid » 20.02.2013, 00:00

marcgfx hat geschrieben:die frage ist bloss ob mein spiel dann auch von jemandem mal gespielt wird :)
darum ging es mir primär. newgrounds unterstützt glaube ich auch HTML5. über solche portale kann sich dein spiel vielleicht etwas besser verbreiten, du bringst sozusagen dein spiel einfach zu den spielern.

shadow
Establishment
Beiträge: 147
Registriert: 26.02.2009, 15:04
Alter Benutzername: floyd
Wohnort: Nürnberg
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von shadow » 20.02.2013, 10:30

Kann man das Spiel aktuell irgendwo spielen? Die letzten Links funktionieren bei mir iwie nicht...

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 20.02.2013, 12:37

@chromanoid: ja das ist wirlich immer ein problem. wie macht man ein projekt bekannt. wenn es gut ist, sollte es ja ein selbstläufer sein, allerdings gibt es inzwischen soooo viele spiele.
@shadow: nein gibt noch nichts online, ist alles noch lokal bei mir. bis jetzt ist es auch noch nicht spiel-mässig aufgebaut. es fehlt noch das ganze drum/rum wie streckenauswahl/spielmodus etc.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 31.03.2013, 01:58

auch wenn der anschein trügt, ich arbeite weiterhin fleissig am project. allerdings gibt es weniger sichtbare änderungen als zuvor. ich habe mich vor allem der reanimation gewidmet, altem code wieder neues leben eingehaucht. erstaunlicherweise war doch das meiste was ich damals gemacht habe, gar nicht mal so blöd. dabei bin ich wieder etwas in meine alte richtung abgeschweift, weg vom spiel. die video funktion lief nicht mehr (aufzeichnen/speichern/abspielen des spiels). automatisches hochladen von daten nach amazon s3. der turniermodus funktionierte nicht sauber, diesen habe ich nun ebenfalls überarbeitet. alles ziemlich anstrengendes zeug, da kaum visuelles feedback und auch schwer zu debuggen. naja, als belohnung habe ich noch ein paar bäumchen generiert und die editor-buttons komplett neu designt. das resultat sieht man im screenshot.
editor130331.jpg

Benutzeravatar
marcgfx
Establishment
Beiträge: 1311
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx » 01.04.2013, 16:41

Wie seht ihr das mit dem Ideen klauen? ich bin eigentlich nicht so der freund davon, aber es ist teilweise schon schwer originell/besser zu sein als bestehendes.

Ich bin mir aktuell am überlegen wie ich extras/speed-ups einbauen will und mir fällt aktuell wirklich kein besseres system ein als das mario-kart system. ich muss auch zugeben, dass ich nicht sonderlich einfallsreich bin, was für specials/extras man einbauen kann.

speed-up mit dem pfeil/dreieck kennt schon jeder, das gabs aber auch schon in zig anderen spielen. werde ich so wohl hinzufügen, muss nur mal schauen wie ich die platzierung beim generieren steuere.
beim extras aufsammeln gibts im mario-kart immer diese kästchen mit frage-zeichen, das extra wird über zufall bestimmt. find ich auch gut, aber ist halt schon arg geklaut.

extras können einfluss auf ein fahrzeug oder auf andere haben:
- selber turbo/gegner slowdown/statis
- unverwundbarkeit/zusätzliche masse
- ghost modus/kollisionsfrei
- waffen feuern / waffen sind scriptbar, habs aber noch nicht wirlklich verwendet -> homing missiles wären möglich (grüne/rote panzer)
- bomben legen / steine / oder eben bananen/öl fürs schleudern

hat jemand noch gute ideen?

Benutzeravatar
Schrompf
Moderator
Beiträge: 3848
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Schrompf » 01.04.2013, 17:17

Ideen-Klau ist ein sinnloses Wort. Egal, was Du Dir ausdenkst, es kam mit an Sicherheit grenzender Wahrscheinlichkeit schonmal irgendwo vor. In Deinem konkreten Fall hier kennst Du nur die Quelle, wo Du das schonmal gesehen hast. Das sollte Dich meiner Meinung nach aber nicht aufhalten. Denk Dir was cooles aus, oder lass Dich von bestehenden Systemen inspirieren.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Antworten