[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.
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

marcgfx hat geschrieben: Bild
Ich meinte jetzt nicht außen, sondern speziell bei solchen Überlappungen - das waren nur Überlegungen zum Thema Fahrerführung bei komplexen sich überlappenden Strecken:
- Da könnte theoretisch ein Posten ("Wendeboje") in die innere Kurve in der Nähe des Checkpoints, der umfahren werden muss (das wäre dann ja nur ein Kreis).
- An Stelle des inneren, dünnen und spitz zulaufenden Rot-Weiß-Streifens könnte zudem eine Betonwand bis zu jenem Posten, die man nicht überqueren kann (so wie z.B. bei Autobahnbaustellen Gegenspuren auf derselben Fahrbahndecke voneinander getrennt werden), aber wie du schon sagtest, da wird natürlich die Kollisionsabfrage etwas komplexer.

Bedingungen dafür wären gut zu detektieren denke ich mal: Eine äußere Bande hat eine spitze Ecke und liegt auf einem Überlappungsbereich -> Posten.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

interessant was du da schreibst. habe mir schon ähnliche überlegungen gemacht, dort gings darum die checkpoints komplett loszuwerden. dafür müsste ich vom inneren der strecke aus eine art baum/spinne machen aus zaunelementen. etwas das dich zwingt wirklich aussen rum zu fahren.

du hast recht, ich könnte vermutlich genau da wo die überlappungen sind blockaden aufstellen. evtl aus autoreifen, die sind ja rund :)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

Bild
meine arbeit an der strecke ist noch weiter gegangen. bei "dreck" strecken hatte ich bislang immer einen verlauf nach aussen. auf höchster qualität siehts jetzt so aus wie rechts. bin ganz zufrieden, leider sieht es nicht immer gleich gut aus.

desweiteren habe ich einige sachen verändert und kaputt gemacht. die eis-strecke ist eines meiner grössten problemkinder. es ist nicht so einfach eine rutschige oberfläche zu simulieren ohne dass es unspielbar wird. bislang haben die autos einfach weniger reibung simuliert bekommen, das hat u.a. dazu geführt dass sie viel schneller wurden. jetzt werden sie nicht mehr schneller, können dafür ins rotieren kommen. in der neusten version ist der ansatz zumindest schon ganz gut und es ist noch fahrbar. meine veränderungen hatten leider auf viele extras ebenfalls eine auswirkung, diese werde ich nach und nach wieder abstimmen müssen.
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

Eine einfache spielbare Regel für Eis wäre vielleicht: langsamer=mehr Grip, schneller=weniger Grip.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

jo, es geht auch in die richtung. nur dass ich keine richtige physik verwende... ist halt alles fake. schwierig ist es eben die richtige abstimmung der verschiedensten parameter zu finden, verdammt viele feineinstellungen. ich habe leider nicht die optimalsten tools um schnell was auszuprobieren. ist halt die frage ob es sich lohnt viel zeit in ein tool zu stecken, oder ob ich es mit trial und error / restart hinbekomme. bislang habe ich immer letztere variante verwendet...
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

habe wieder viele kleinere sachen abgearbeitet, was dank dem prozeduralen ansatz massiv auswirkungen auf die strecken hatte. manchmal denk ich mir, es wäre einfacher gewesen wenn ich alles fix festlegen könnte. naja, ich hab jetzt den salat gesäht, da muss ich ihn auch pflegen.

die start-position hat sich mit dem neuen ansatz fast überall verändert. es sollte jetzt weniger oft vorkommen, dass die fahrzeuge aus einer kurve starten (komplett weg ist es aber nicht...). die speed-ups wurden bisher völlig falsch platziert (also, es hat funktioniert, aber eigentlich nur weil es buggy war...). jetzt werden sie vor allem auf den geraden zu finden sein.
viele extras wurden überarbeitet, u.a. hat der grüne energieball nun auch eine grüne explosion. gewisse extras die u.a. schrompf genervt haben, können nur noch vom spieler ausgelöst werden (zeit anhalten, gegner verlangsamen). weil selber langsam fahren und warten beides keinen spass macht, es aber lustig ist wenn man die anderen überholen kann.
die explosionen werden per default zufällig rotiert um mehr abwechslung zu erzeugen. dieses verhalten kann ich nach wunsch ein/ausschalten, weil sonst einige falsch aussehen würden.

zum sehen gibts nicht viel spannendes. drum noch ein bisschen dreck-strecken variationen. oben rechts noch die neue unglaubliche grüne explosion :D
Bild
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

Bild
ich generiere jetzt automatisch die vorschau bilder. ich muss aber noch code schreiben wie ich diese bilder sinnvoll ablege und finde. vermutlich werde ich mich in mongodb einlesen.

aktuell speichere ich auch extras und speed-ups im vorschau bild. ich weiss nicht ob ich die besser rausnehmen soll. man kann nämlich 6 level von extras/speedups einstellen -> 36 verschiedene varianten pro strecke. auf ne art ist es aber cool ne tatsächliche vorschau zu haben. nur: die bilder sind nach jpg compression immer noch etwa 50kb. die datenmenge geht also rapide nach oben. bei den von mir definierten strecken ist das kein grosses problem. da ich bei zufallsstrecken, die von usern als gut befunden werden, vorschaubilder erzeugen möchte, könnte es schnell mal ein problem werden. ausser es spielt am schluss eh keine sau, was auch möglich ist :D

edit: hab mir die frage grad selbst beantwortet. extras/speedups müssen raus. es gibt neben den 36 varianten, noch x andere. da der seed für die extras/speedups ebenfalls noch verändert werden kann. auf ne art ist das aber blöd... denn durch die positionen dieser elemente verändert sich das spiel ziemlich. grrrrr. zu viele möglichkeiten. die vorschau dynamisch hatte ich schon. sah einfach nicht so cool aus. speedups/extras waren auch dort nicht sichtbar.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Krishty »

Ich liebe die Schnappschüsse aus der Entwicklung. War schon vor zehn Jahren auf dem alten ZFX so – staunen, was die anderen so basteln. Deine sind immer besonders vielseitig. Danke dafür!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

danke krishty ;) dein kommentar kommt grad zur rechten zeit. hab mich schon gefragt ob ich nerve, weil ich das forum so oft zuspamme...
Benutzeravatar
Max Gooroo
Establishment
Beiträge: 341
Registriert: 08.12.2012, 23:16
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Max Gooroo »

Auch wenn es schon gesagt wurde, aber die Vegetation sieht schon schön aus ...
Besonders jetzt wo Ich mal ein Bild der kompletten Strecke sehe, finde Ich die Wälder sehr anregend. Fast schon zu schade um "nur" dran vorbeizufahren :D

Warum sah die dynamische Vorschau eigentlich nicht so cool aus? ...
Oder wenn die Datenmenge das Problem ist vielleicht mal überlegen ob es irgendwie anders kleiner geht ... Hab jetzt natürlich keine Ahnung über alles was da jetzt reinspielt. Ich werfe jetzt einfach mal als unwissender rein, statt des komplett gerenderten Bildes/der Bilder, nach Generierung der Daten diese zu hinterlegen und aus diesen zu rendern.

Oder vielleicht mal völlig behinderte Experimente wie Farbraum reduzieren :D ... wenn es nur eine Vorschau ist, muß es ja nur das Schema der Strecke wiedergeben und nicht das komplette Abbild. Eine monochrome Skizze der Strecke könnte vielleicht auch stylisch sein :D
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

danke max gooroo! die dynamische vorschau bestand nur aus kreisen für alles. um eine richtige vorschau zu generieren muss ich alles laden und die strecke generieren, das dauert leider seine zeit. am ladeprozess sollte ich vermutlich noch schrauben, ich bin nur nicht ganz sicher wo die meiste zeit vertrödelt wird. es werden ziemlich viele sachen vom netz geladen, dass könnte schon mal ein problem sein :S. dann werden die bäume/fahrzeuge noch alle mit den richtigen farben versehen und in einen grossen textur-atlas gerendert.
am schnellsten wäre diese aufbereitete textur+offset-infos zu speichern und bei bedarf zu laden. allerdings hats unendlich viele möglichkeiten für die strecken, von daher würde es sich nur für viel benutzte strecken lohnen. die default-strecken wären dafür super geeignet. nur... mir fehlt die motivation da viel zeit zu investieren. ich würde lieber den ladeprozess beschleunigen ohne spezialfälle zu lösen.

was ich in der tat machen könnte, wäre eine vorschau der strecke ohne bewucherung zu generieren.

jedenfalls gabs wieder ein paar anpassungen. beim starten gibts direkt musik und die navigation sollte etwas benutzerfreundlicher sein (einstellungen können jetzt auch mit <- -> gemacht werden). es gibt auch ne kleine streckenvorschau. beim laden der strecke wird diese (falls vorhanden) ebenfalls angezeigt.

identifiziert wird das bild einer strecke über seed+_+md5(config) -> shubidoo5_63899bb7c253433d3175e25d2e13b3f6.jpg
so sollte ich möglichst wenig überschneidungen erhalten. irgendwann sollen user coole strecken markieren/melden können, da sie sonst nie wieder jemand zu gesicht bekommen wird :)
Bild

achja. musik gibts jetzt auch schon im menü.

womit ich extrem mühe habe:
- streckennamen, grand-prix namen, alles was mit text zu tun hat... schrecklich
- weiss nicht ob ich den spiel-namen ändern sollte. auf ne art würde ich irgendwann gerne wieder zum KI-konzept zurückkehren. dann könnte man ne KI schreiben und gegen sie antreten :)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

auf tigsource hat einer mein spiel ein bisschen angetestet: https://youtu.be/ppH3YGmDVSg
ist für euch bestimmt nicht so spannend ;)

gab einige interessante sachen für mich zu sehen. er hat ausserdem von performance problemen berichtet, das es ab und zu ins stocken gerät. schweren herzens habe ich jetzt meine viel zu aufwändige ki rausgeschmissen. es wird jetzt nur noch eine sehr einfache angewendet, zugegebenermassen ist diese auf einigen strecken sowieso besser...

hab die erste strecke dann gleich mit 170 autos getestet. läuft ganz passabel, aber audio spinnt :)
Bild
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Schrompf »

Geil :-) Wenn die jetzt noch versuchen, zueinander etwas Abstand zu halten, hast Du quasi Schwarmverhalten für Arme.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

abstand halten muss ich eigentlich nicht einbauen, die physik löst das schon ganz gut. es wär schon etwas realistischer. boids fand ich früher schon spannend, evtl. wäre das noch ein spannendes experiment. hatte schon überlegt ob ich noch vögel und zuschauer hinzufüge, habs vorläufig als überflüssige spielerei abgetan.

ich muss meine aussage revidieren, die weggelassene KI ist doch ziemlich merklich. die gegner sind viel schlechter als ich zuerst angenommen hatte. dennoch war es ne gute idee die KI mal auszuschalten, ich werde sie aber irgendwie ersetzen müssen. es muss aber was einfacheres sein. zumindest die benötigten kalkulationen muss ich stark einschränken. den ansatz mit neuronalem netz/ga würde ich aber gerne behalten, ga zumindest für parameter optimierungen :)
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

wenn ihrs selbst mal mit so vielen autos erleben wollt: nach dem starten der meisterschaft hats oben in der url eine zahl, die kann man nach belieben anpassen. ich übernehme aber keine haftung :P ... mit 50 autos liefs noch ganz gut auf meinem laptop. ich finds irgendwie noch witzig in der riesigen masse, ist wie an nem konzert, manchmal kann man gar nicht anders als mitgehen.
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

marcgfx hat geschrieben:ich muss meine aussage revidieren, die weggelassene KI ist doch ziemlich merklich. die gegner sind viel schlechter als ich zuerst angenommen hatte. dennoch war es ne gute idee die KI mal auszuschalten, ich werde sie aber irgendwie ersetzen müssen. es muss aber was einfacheres sein. zumindest die benötigten kalkulationen muss ich stark einschränken. den ansatz mit neuronalem netz/ga würde ich aber gerne behalten, ga zumindest für parameter optimierungen :)
Schickst du in jedem Frame alle Probanden durch die KI? Falls ja kannst du auch mal folgende Optimierung versuchen: Pro Frame wird nur ein (zufälliger) kleiner Teil der Bots neu berechnet (ggf. sogar nur ein einziger zufällig gewählter, je nach Framerate), der Rest bewegt sich einfach nach dem Ergebnis aus dem letzten Frame weiter (d.h. nicht gleicher Frame-Bewegungsvektor, sondern die unveränderte Gas- und Lenkeinstellung produziert einen neuen Bewegungsvektor).
Ich hatte das mal für eine Raumschiff-KI mit vielen Steuer-Freiheitsgraden und mehreren verfeindeten Parteien. Das heißt, bei jedem war z.B. "neuer Gegner?" vielleicht nur alle 0.5 bis 2 Sekunden dran, hat aber gereicht für ein authentisches Verhalten. Vor allem blieb immer alles super schnell, man konnte viel in der KI experimentieren, und es war nicht merklich dass irgendwer gerade über irgendwas nicht "nachdenkt".


P.S.:
womit ich extrem mühe habe:
- streckennamen, grand-prix namen, alles was mit text zu tun hat... schrecklich
Meinst du damit automatisch generierte Fantasie-Namen wie z.B. "Vellbeter Street Circuit", "Feca Fire Autodrom", "Beeri Doom Path" etc.? In dem Fall hätte ich vielleicht was für dich.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

ich mach schon ne ähnliche optimierung: ich habe die ki zeit limitiert. sobald diese überschritten wird, bricht er ab. im nächsten frame gehts dann an dieser stelle weiter. ich könnte die zeit also schon noch runterschrauben, aber es verändert die qualität der ki. je mehr autos desto schlechter fahren sie. auf rutschigen streckn kams z.b. nur noch zu piruetten :) eingebaut habe ich das überspringen nur, weil diese eine KI viel zu viel performance frass. angewendet wurde sie auch nur auf 25% der autos. ich muss was simpleres machen, das auf 20 autos angewendet werden kann.

zufallsnamen. aktuell mache ich was für die random strecken, da wird irgend ein kauderwelsch zusammengesponnen. mit ein paar simplen regeln zufallsnamen erzeugt. evtl. ist dein ansatz aber besser, mit kompletten wörtern was neues erstellen. dein ansatz würde mich interessieren.

ich dachte mir ich sollte für die default-strecken und meisterschaften anständige namen haben. aber ich tue mich damit verdammt schwer.
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

Zur KI lässt sich aus der Ferne natürlich nicht viel sagen.

Zu den Namen: wahrscheinlich machst du das sowieso schon ähnlich :D aber es ist ja trotzdem interessant sich auszutauschen.

Streckennamen kann man ja ähnlich generieren wie diese ganzen Fun-Generatoren für Sprüche, Schlagzeilen usw. im Web. Hier speziell: angefangen mit einem fiktiven Städte-/Gebiets-/Länder-/Rennfahrer-/Firmennamen (Namensgenerator, s.u.), gefolgt von 1-2 Eigenschaften wie "International", "Grand Prix", "Highspeed",... und abgeschlossen von einem typischen Hauptwort wie "Circuit", "Autodrome", "Track",...
Heraus kommen dann z.B. "Butzbach International Highspeed Track" oder "Bud Spencer Grand Prix Autodrome" (mal für "echte" Namen geschrieben). Das wäre die einfachste Version, ist u.U. schon ausreichend.

Das ganze steht und fällt natürlich mit der Auswahl an solchen Wörtern, und eine gute Vielfalt lebt auch von teilweise lustigen und unmöglichen Bezeichnungen die eher wie Spitznamen klingen. Eine Strecke kann ja auch gerne mal "Meroneror Grizzly Booster" heißen, auch ein "Intsan Furious Highspeed Elchtest" macht neugierig... - je nach Geschmack ;). Ein paar Anregungen zum Rauspicken evtl.:

Eigenschaften:

Code: Alles auswählen

Street All-Star Fire International Grand-Prix Park Doom Super Bay King's Highheel Riverside Racing Victory Marina Hernandez Fernandez Sanchez Fernando Enzo Fun Stardust Andromeda Double Triple Quattro Multi Oak Fatboy Highspeed Valley Greenhell Black Violet Yellow Bluebird River Scarface Grizzly Berserk Ocean Electric Dirt Trash Hardcore Metal Death Fury Furious Bigfoot Yeti Motor Dieseldust Exhaust Engine Horse-Power Narcotic Voodoo Wave Lava Millenium Memorial
Hauptwörter:

Code: Alles auswählen

Circuit Autodrome Course Court Speedway Ring Hotway Raceway Racetrack Playground Track Loop Round Yard Maze Hellway Way Path Corkscrew Trap Winding Booster Backyard Dungeon Runway Crusade Dustbowl Elchtest Arena Multidrome Colloseum Odyseum Garden Hatch Mall Kindergarten Quarter Challenge Vortex Whirlpool Route Sewer Chicane Gravedigger Heaven Hell
Als allgemeine Anregung für längere zusammengesetzte "sinnvolle" Texte kann ich dir mal die "Elite Goat Soup Strings" empfehlen, falls du das nicht schon kennst:
http://automaticromantic.com/static/misc/pytxtelite.txt
Die Funktionen "goatsoup" und "print_system" sind da interessant und sehr leicht zu verstehen. Im Prinzip nur eine rekursive Ersetzung im Stil "\x8F is \x97.", wobei \x8F zu irgendwas aus ["\xB0", "The planet \xB0", "The world \xB0", "This planet", "This world"] wird usw. - es kommt so tatsächlich eine enorme Vielfalt heraus.
Enthält auch einen einfachen Namensgenerator, da gibts verschiedene Ansätze.

Die Zufallsnamen kann man für Städte optional noch mit häufig vorkommenden Teilnamen wie "City", "Lake", "County", "Highland", "Valley", ... , beliebigen Abkürzungen, Vorsilben wie "San", "New", "Old", ... und Nachsilben wie "shire", "berg", ... versehen usw.; für Rennfahrer- und Firmennamen dann entsprechende Regeln.

Auf Basis des rekursiven Textgenerators ließen sich dann sehr komplexe und abwechslungsreiche Gebilde entwerfen, bei denen der Name auch nicht immer am Anfang stehen muss, z.B. "Millenium Highspeed Arena of San Rebu (the 'Whirlpool Sewer')"
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

danke für die detailierten infos, mit den ganzen namensvorschlägen! find ich super :)
bei gewissen ausdrücken würde man aber auch ne gewisse optik erwarten. evtl. kann ich gewisse sachen auch vom terrain abhängig machen...
mit den vorsilben ist auch ne witzige variante. da kann ich meine generierten namen beibehalten und gebe ihnen noch nen "realistischen" touch.
Los Axolity Highspeed Hill, wieso nicht!

firmennamen sind auch noch ne spannende idee... ich wollte eh mal schauen ob ich sponsoren organisieren kann. red-bull yeti hardcore :)

muss nur aufpassen dass ich damit nicht zu viel zeit vertrödel ;)
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

Freut mich wenn es als Anregung dient :)
Würde ich sogar umgekehrt machen: Bezeichnung zuerst, den String dann nach bestimmten Begriffen durchsuchen (Farben, Landschaft, Formen), und diese Info dann als zusätzliche Modifier in die Streckenberechnung mit eingehen lassen, ich glaube da hast du es leichter. Andererseits - auch im RL können Namen ironisch sein oder sonst nichts mit der Wahrheit zu tun haben... man weiß ja nie woher sie kommen.

Aus eigenem Interesse musste ich das mit dem Textgenerator jetzt mal ausprobieren - du wirst mir verzeihen. Steht dir frei das als Basis zu nehmen oder einfach zu ignorieren :D
Wegen Quelltext-Übersicht den Namensgenerator weggelassen, du hast ja einen, musst nur im fertigen Satz "Manhattan" durch deine Namen ersetzen.

Code: Alles auswählen

var pieces={
	"$start":["$officialname","$officialname","$officialname","$officialname","$officialname","$officialname","$officialname ( ' $shortname ' )","$officialname ( aka ' $shortname ' )","$officialname ( ' The $shortname ' )"],
	
	"$officialname":["$name $combi1","$combi1 of $name","$combi1 $name"],
	
	"$combi1":["$01 $02","$pro4 $pro1 $02","$pro1 $pro2 $02"],
	"$combi2":["$pro2 $pro3","$pro3 $pro2"],
	"$shortname":["$combi2 $loc2","$combi2 $loc3","$combi2 $loc4"],

	"$name":["Manhattan","Manhattan City","San Manhattan","Manhattanberg","Manhattan Valley","Manhattanshire","El'Manhattan","Manhattantown","Manhattanhill","Manhattanplains","Mount Manhattan","Manhattandam","Manhattancreek","Manhattan County", "Manhattandale"],
	"$pro1":"All-Star Grand-Prix International Racing Motor Millenium Memorial Victory".split(" "),
	"$pro2":"Highheel Riverside Super Fun Stardust Andromeda Double Triple Quattro Multi Highspeed Black Violet Yellow Bluebird River Ocean Oak Fatboy Fury Furious Wave".split(" "),
	"$pro3":"Fire Doom Greenhell Scarface Grizzly Berserk Electric Dirt Trash Hardcore Metal Death Bigfoot Yeti Dieseldust Exhaust Engine Horse-Power Narcotic Voodoo Lava".split(" "),
	"$pro4":"Marina Hernandez Fernandez Sanchez Fernando Enzo".split(" "),

	"$loc1":"Circuit Autodrome Course Court Speedway Racetrack Track Round Arena Multidrome Colloseum Odyseum".split(" "),
	"$loc2":"Hotway Raceway Loop Yard Way Path Runway Street Route".split(" "),
	"$loc3":"Garden Park Bay Valley Playground Backyard Maze Dungeon Mall Quarter Challenge".split(" "),
	"$loc4":"Hellway Corkscrew Trap Winding Booster Crusade Dustbowl Elchtest Hatch Kindergarten Vortex Whirlpool Sewer Chicane Gravedigger Heaven Hell".split(" "),

	"$01":["$pro1","$pro2","$pro3","$pro4", "King $pro4"],
	"$02":["$loc1","$loc2"]
}


function solve(str){
	var j;
	var arr=str.split(" ");
	for(j=0;j<arr.length;j++){
		if(arr[j].charAt(0)=="$"){
			if(pieces[arr[j]]!=null){
				arr[j]=solve(pieces[arr[j]][Math.floor(Math.random()*pieces[arr[j]].length)]);
			}
		}
	} 
	return arr.join(" ");
}

solve("$start").split("Manhattan").join(myRandomName);

Jaaa, ziemlich auf die Spitze getrieben ;) aber lustig:
Steieberg Hernandez All-Star Way
All-Star Loop of Laler Valley
San Arie International Route
Hernandez Motor Route Isera Valley
Doom Way of Mount Iexe
Erattown Millenium Triple Course
Grand-Prix Bluebird Round Mount Olono
Oak Speedway Ralerdam
Grand-Prix Yellow Odyseum Eteg
Electric Odyseum Oust City
Metal Route Aceso County ( ' Metal Violet Valley ' )
Veboushire Millenium Route
Andihill Super Route ( aka ' Hardcore Black Bay ' )
Motor Oak Way Ondohill ( ' Stardust Narcotic Booster ' )
Ndormplains Black Way
Marina Racetrack Geradam
International Super Speedway Esoldale
Hernandez Millenium Runway Touse City
El'Itsa Memorial Wave Autodrome ( ' Fire Fun Valley ' )
Laledale Fernandez Runway
So, jetzt halt ich mich wieder raus und schau lieber weiter zu...
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

geil :) werde klauen was ich kann! willst du auch noch ne ki schreiben ? :lol:
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

BildBildBild
habe letzthin drei neue winter baumarten erstellt + viele andere assets winter-tauglich modifiziert. grundsätzlich ist bei den winter bäumen einfach noch ne art schneetextur draufgepappt.

der namensgenerator von joeydee (danke!) ist mit kleinen anpassungen eingebaut. es ist nicht mehr ganz so durchgeknallt und kommt nur bei einigen strecken zum zug.

bin aktuell dran eine neue ki aufzubereiten. grundsätzlich habe ich die alte langsame genommen und viel rausgeschmissen... ich benutze ein komisches neuronales netz mit vektoren. die alte version hatte 6 input nodes und 8 output. u.a. wurden die umgebenden objekte in einen dieser nodes eingespeist, dieser wurde gekickt. jetzt ist die KI sozusagen blind. ich hab das nn auf 4 input reduziert und 4 output nodes. weiterhin die node-weight berechnungen vereinfacht.
mal sehen ob was daraus wird, bzw. obs überhaupt viel schneller ist. ansonsten bleibt nur neu schreiben.
Benutzeravatar
Max Gooroo
Establishment
Beiträge: 341
Registriert: 08.12.2012, 23:16
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Max Gooroo »

Ist dein Netz eigentlich so krass komplex oder warum zerrt es dermassen?
6 Input auf 8 Output klingt mir jetzt erst einmal nicht zu streng. Und wenn du nicht unendlich Knoten dazwischen hast ... bzw. nicht unendlich runs simulierst bis zur Auswertung, sollte es eigentlich keinen zu harten Performancehit geben.

Ich meine ... eine blinde KI ... what could go wrong :D ...
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

da hast du recht. ich muss es mal genau durchdenken.
prinzip: jeder input node wird mit jedem inneren node und jeder innere node wird mit jedem output node verbunden.
bei input und output nodes handelt es sich jeweils um die selbe klasse. da ich mit 2d vektoren arbeite, werden immer 3 neue werte berechnet -> x,y und d(länge). ich verwende im knoten einige sin/cos/sqrt/pow operationen. bis auf die pow operation, habe ich dafür inzwischen vereinfachte funktionen (lookup tabellen), die ich einsetzen könnte.

beispiel: 6 input, 7 innere, 8 output -> 6*7 + 7*8 = 108 verbindungen mit den jeweiligen berechnungen

die input nodes sind in den meisten fällen auch nur vector-nodes. der knoten mit den visuellen infos ist aber anders und sehr fragwürdig. in diesem werden alle objekte im spiel durchlaufen und die distanz/winkel dazu wird überprüft. ist die distanz kleiner als ein richtwert und der winkel innerhalb einer optionalen beschränkung wird der vector zwischen bot und objekt verwendet und mit einigen parametern zum node-wert addiert. diese berechnungen werden pro verbindung mit einem inneren node gemacht. wenn ich 3000 objekte mit 10 inneren nodes habe -> 30000 überprüfungen. bei 10 bots -> 300000... naja es summiert sich. ein ansatz wäre die liste von berücksichtigten elementen vorzufiltern.

ein weiterer punkt der nicht optimal ist: die ki bekommt beschränkten zugriff auf die welt-objekt. falls ich mal so weit bin und andere leute ki schreiben dürften, soll es nicht möglich sein das spiel zu zerstören. d.h. pro spieler wird eine ansicht der welt-objekte erstellt. diese ansicht liefert nur beschränkte daten, der spieler kann sie aber nach belieben manipulieren (sind ja seine infos). bisher erfolgte der zugriff auf die daten über eine get funktion. darin wird bei jedem zugriff überprüft, ob der zugriff erlaubt ist.

mit anderen worten: das netz selber ist vermutlich nicht das hauptproblem. wenn ich das netz aber reduzieren kann, ist es sicher schon mal schneller. ob der visuelle node überhaupt viel beigetragen hat, werde ich irgendwann merken :). es gibt ausserdem viel das noch optimiert werden kann.

danke für die frage, hat mich zum nachdenken angeregt :D
joeydee
Establishment
Beiträge: 1058
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von joeydee »

in diesem werden alle objekte im spiel durchlaufen
Mögliche Optimierung für Nearest-Neighbour-Suche (hatte ich oben mal angedeutet):
- Jeder Bot hat eine Eigenschaft "myOOI" ("Object of Interest"), keine Liste o.ä.
- Es wird pro Frame und Bot statt aller Objekte nur ein einziges, beliebiges zufälliges Levelobjekt herausgepickt. Also einfach nur newOOI=LevelObjects[LevelObjects.length*rnd]. Kein Filter, keine Suche, nur ein direkter Zugriff.
- Dieses newOOI wird überprüft ob überhaupt relevant (in der Nähe, vor dem Bot, ...), wenn nicht verworfen.
- Wenn relevant, mit dem aktuellen OOI verglichen, ob relevanter als dieses (näher, mehr in Fahrtrichtung,...). Wenn ja ersetzt myOOI=newOOI, wenn nicht bleibt das alte.
mit dem myOOI wird dann in diesem Frame gearbeitet.
>> Linearer Aufwand statt quadratischer.

Das resultierende Verhalten ist dann in etwa: Ein Bot guckt erstmal in die unübersichtlichs Szene, weiß am Anfang noch nicht so was er machen soll, "begreift" aber innerhalb weniger Frames/Zehntelsekunden, worauf er achten muss und fixiert ab dann immer einen der nächsten Gegner/Hindernisse etc, übersieht aber auch mal spontan auftauchende Objekte (Reaktionszeit). Denn auch als Mensch habe ich nicht jederzeit den Überblick über sämtliche Levelobjekte, sondern filtere nach demselben Prinzip.

Inputs würde ich mal reduzieren auf den Vektor zum OOI als Input und Fahrtvektor als Output. Mehr ist ja eigentlich nicht nötig.
Besser aber noch wären Skalare.
3 Eingänge: Ob das aktuelle OOI links/rechts der Sichtachse bzw. vor/hinter dem Bot ist sowie die Distanz zu diesem.
2 Ausgänge: Gas (neg.=Bremse) und Lenkeinschlag. Der Rest soll die Physik erledigen.
Passende Gewichte ließen sich sogar hardcoden, so einfach und logisch sind hier die Zusammenhänge wenn man es mal aufzeichnet.

Hatte ich mal in Flash für 3D verwirklicht (schon älter). Verhalten: such dir einen nahen Gegner anderer Farbe und remple diesen solange an bis er futsch ist. Wenn du selbst stirbst, spawne wieder am Ursprung. Mit dem Button kann man auf die Sicht eines Bots umschalten.
WorldTest1.swf
(36.29 KiB) 2640-mal heruntergeladen
Damit würde ich anfangen. Die User-KI könntest du dann entsprechend aufbohren: Pro Frame kommt ein neuer OOI-Vorschlag rein, was der User damit in "seiner" KI anstellt, ist ihm überlassen (z.B. bestimmte Anzahl speichern für späteren genaueren Vergleich mehrerer Objekte, dafür aber langsamerer Bot, andere Ausgangsgewichte...).
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

grrr hab grad ne ewig lange antwort geschrieben und alles war weg. plötzlich nicht mehr angemeldet. normalerweise mach ich ja noch eine kopie von dem was ich abschicken will, habs aber vergessen.

kurzfassung:
- stimme zu, alles gute ideen
- es reicht vermutlich nicht aus, nur ein element pro frame zu überprüfen, aber evtl. 100? nachteil: ki wird framerate abhängiger
- kann die listen schnell vorfiltern ausserhalb der ki habe ich mehr informationen, viel zu tun...
- node inputs: ausrichtungsvektor (jetzt gelöscht), bewegungsvektor, zielvektor, resultatvektor
- node output: bewegungsvektor, zielvektoranpassung, extra-auslöser, resultatvektor (resultatvektor: dient als memory, wird im nächsten aufruf ins netz gefüttert)
- skalare: vermutlich bessere variante, könnte auch sowas wie ein radar/sensoren einbauen. z.b. 4 quadranten mit abstandsmesser. wäre gut diese sachen ausserhalb der ki vorzubereiten

danke für deine inputs!
habe leider noch einen bug entdeckt, der dazu führt dass die autos manchmal meeega langsam werden, nach mehreren GA durchgängen. muss das zuerst mal fixen :|
Benutzeravatar
Max Gooroo
Establishment
Beiträge: 341
Registriert: 08.12.2012, 23:16
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Cyberlympics

Beitrag von Max Gooroo »

Ich würde darauf aufbauend vielleicht noch anmerken, dass nach Erfahrung in neuronalen Netzen hyperkomplexe Funktionen meist nicht notwendig sind. Also Knoten, welche mehr als eine relativ einfache Funktion ausführen. Die Komplexität kommt ja schon alleine aufgrund der "wilden" Verbindungen der Knoten untereinander.
Bei Dir klang das so, als ob ein Knoten wesentlich mehr als eine einfache Operation ausführt.

Also nicht, dass er nur plus, minus, mal und geteilt durch können muss, irgendwelche Kurven und dergleichen sind offensichtlich vorstellbar, aber durch komplexere Methoden steigt offensichtlich sehr schnell die benötigte Power zur Evaluierung.

Ich habe mit solch einem Netz auch schonmal Poker simuliert und die Entscheidungen waren nach etwas Training sinnvoll und in nicht messbarer Zeit getroffen, womit Ich irgendwann gelernt habe, dass nicht die Knoten selbst komplexer werden müssen, sondern wenn, dann nur eventuell die Vernetzung/Netzgröße :D

Aber vielleicht habe Ich deinen Aufbau auch nur falsch verstanden ... :D
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

nene schon richtig. die eine ki war saukompliziert (ich habe auch einfachere). die komplizierte war leider die beste... auch wenn sie bei weitem nicht perfekt war. meine hoffnung, dass sie bäumen sauber ausweicht hat sie nicht erfüllt :lol: . war aber einen versuch wert ;)
ich muss mir was einfallen lassen, dass einfacher ist zu lösen. allerdings würde es mich schon noch reizen den komplexen node weiter auszutesten. die hoffnung war: die ki erkennt selber welche der umgebenden objekte relevant ist. es ist aber kaum nachprüfbar was eigentlich gedacht/gemacht wird.

habe jetzt immerhin den bug gefunden und gelöst, der mich davon abgehalten hat das neue netz korrekt zu testen. lustigerweise sind trotz meinem fehler die "fahrer" besser geworden. ist schon krass wie stabil sie auch mit veränderungen umgehen können. bislang habe ich die ki nur für einen fahrzeugtyp gebaut, bei den anderen funktioniert sie dennoch (aber nicht ganz so gut).
Benutzeravatar
marcgfx
Establishment
Beiträge: 2062
Registriert: 18.10.2010, 23:26

Re: [Projekt] Cyberlympics

Beitrag von marcgfx »

der erwähnte fehler im letzten post war einer den ich schon aus anderen situationen kannte (übungsmodus/netzwerktest).

wenn ein auto neben der strecke fährt, wird es verlangsamt, wenn es wieder auf die strecke kommt wird dies rückgängig gemacht. diese beeinflussung geschieht durch einfache addition oder multiplikation auf gewissen parametern. dies funktioniert solange man immer nur vorwärts rechnet. sobald man ein paar frames zurück muss wirds kompliziert. ich kann zwar ohne weiteres den genauen zustand zu diesem frame herstellen. allerdings ist der gespeicherte zustand, der zustand nach dem beeinflussen der parameter. ich habe diverse sachen ausprobiert, aber irgendwie wars nie ganz richtig. auf die einfachste lösung bin ich sehr spät gekommen: ich musste speichern was momentan auf ein fahrzeug wirkt. das bedeutet zwar schon wieder viel mehr daten, aber wenigstens klappts... diese korrektur hat dazu geführt dass der übungsmodus langsam wieder funktioniert und auch der netzwerk-modus etwas verbessert ist. noch ist aber bei weitem nicht alles gelöst :roll:

Bild
so siehts aktuell in meinem network test modus aus (alles noch offline). hier wird immer 10 frames in die vergangenheit zurückgerechnet, was lag simulieren soll. der staub wird 10 fach gerechnet und auch das extra wird x-fach ausgelöst was zu diesem grossen energieball führt... es gibt noch einiges zu tun. leider hab ich grad etwas weniger zeit, muss wieder richtig arbeiten ;)

ki wird von alleine etwas besser, ich muss ihr aber noch etwas bessere informationen zugestehen. aktuell ist nur die mittellinie bekannt, ich überlege mir noch eine art optimale linie vorzuberechnen.
Antworten