verkehr simulieren..

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

da_poller

Betreff: verkehr simulieren..

BeitragDo, Sep 18, 2008 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab im moment ein kleines denkproblem..

ich versuche verkehr zu simulieren(autos auf straßen)

die karte ansich ist ein tilefeld mit den werten 0(keine straße) und 1(straße) der dazu im endeffekt benötigte frame ist ein einem extra teil des maparrays gespeichert(also an die information zu kommen welches tile exat heir ist stellt kein problem dar)

nur weiß ich im moment nicht genau wie ich einige dinge dazu realisieren soll z.b.:
soll ich die autos per tileabfrage fahren lassen oder ein waypoint system(jeden anfahrbaren punkt wie in egoshootern für bots) verwenden.

und auch für die verkehrsregeln(ampeln, rechts vor links,vorfahrt- vorfahrt gewähren) fällt mir nicht recht ein wie ich das am besten prüfen könnte..

gleich vorweg ja das ganze sind dehr umfassende fragen und für erklärungen müsst ihr nicht ins letzte detail gehen aber bin für jeden rat idee oder kommentar(außer sinnlose) dankbar..

lg poller

The_Nici

BeitragDo, Sep 18, 2008 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Coole Leute benutzen den AStar Pathfinding Algo.
 

da_poller

BeitragDo, Sep 18, 2008 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
nun eine wegfindung habe ich nciht vor.. die autos sollen zufallsgesteuert einfach rumfahren (vorerst)

nur weiß ich noch nicht wie ich die berechnung der fahrt vonstatten gehen lassen soll..

ich hätte im ersten ansatz waypoints(type) gemacht jedoch kommen da sehr schnell 100-1000 einträge zusammen und die durchprüfen glaube ich ist nciht soo schnell..

drum dachte ich gibt es vllt eine einfachere lösung bzw irgendwas sas mir eine idee beschehrt...

das fahren seh ich jetzt noch nciht DAS große problem eher dann bei verkehrszeichen(geschwindigkeitbeschrenkungen und vor allem die verschiedenen vorfahrtsregeln(abfrage zwischen den autos[auch bzgl abstand zum vorausfahrenden])

the FR3AK

BeitragDo, Sep 18, 2008 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Machs doch so:

Mit den 1 und 0 wird markiert wo eine oder keine straße ist, du lässt ein auto halt immer grade ausfahren und überprüfst jedes danebenliegende Feld ob es eine Straße ist, wenn ja dann lass irgendwie eine Zufallsrichtung festlegen und lass dann das Auto in diese Richtung weiter fahren Wink
 

da_poller

BeitragDo, Sep 18, 2008 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
womit die idee der waypoints abgehakt wäre..

jetzt mus ich mir nur noch gedanken über die herschenden verkehrsregeln (ampel rvl und vorfahrsschilder) machen.. aber vllt hat da noch jmnd den ein oder anderen tipp..
 

BadDeath

BeitragDo, Sep 18, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
[OT] Das ist eine coole Idee, könnte es glatt als Wettbewerb geben! Laughing [/OT]

Wegen des Fahrens kannst du ja deine Map-Daten noch optimieren, statt 0 und 1 noch zb 2 und 3 für die maximalen Geschwindigkeiten sowie 4 für Vorfahrtsstraße und 5 für Autobahn. Oder so in etwa....
-~= real coders just code in binary =~-
 

levi

BeitragDo, Sep 18, 2008 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
mmh ich würd in Fahrtrichtung die 3 vor dem Fahrzeug liegenden Felder prüfen.
Links vor dem Fahrzeug
Mitte vorn
und Rechts vorn

Steht rechts nen Fahrzeug -> Regeln prüfen -> gegebenenfalls warten

usw..

Regeln prüfen.

Verkehrszeichen ja/nein
wenn ja -> betrifft es mich ja/nein
wenn nein -> rechts-vor-links

kommt ganz schön was zusammen.

Ich schreib mir immer erstmal den logischen Ablauf auf. Hoffe es hilft dir n bisschen weiter.

SpionAtom

BeitragDo, Sep 18, 2008 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...hp?t=25026

Gleich der zweite Post, vielleicht hilft er (nicht nur der Post) dir.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

da_poller

BeitragDo, Sep 18, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
levi hat Folgendes geschrieben:
mmh ich würd in Fahrtrichtung die 3 vor dem Fahrzeug liegenden Felder prüfen.
Links vor dem Fahrzeug
Mitte vorn
und Rechts vorn

Steht rechts nen Fahrzeug -> Regeln prüfen -> gegebenenfalls warten

usw..

Regeln prüfen.

Verkehrszeichen ja/nein
wenn ja -> betrifft es mich ja/nein
wenn nein -> rechts-vor-links

kommt ganz schön was zusammen.

die idee ansich ist schonma gar nciht schlecht...werd das mal ausarbeiten und FALS ich nochmal wo hänge meld ich mcih..

ps: danke für den link bin ich wohl doch nciht der erste der sowas macht aber an diese perfektion von D werd ich nciht rankommen außer mich trifft heute abend noch der blitz der weisheit.. aber dennoch mach ich mal weiter Smile

Ich schreib mir immer erstmal den logischen Ablauf auf. Hoffe es hilft dir n bisschen weiter.

pirahni

BeitragDo, Sep 18, 2008 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok: mein Code:Code:

if leftside=1 then
  auto_links_drehn
elseif rightside=1 then
  auto_rechts_drehn
elseif infront=1 then
  if (ampel=rot) or (behinderung) then wait else auto_forward
elseif behind=1 then
  auto_um_drehn
else
  auto_warten
endif


Bei behinderung ist sowas wie baustelle, anderes auto und so gemeint. rechts vor links ist nicht bei. kannst aber bei behinderung rein machen ^^

So würd ichs mache, kann aber nicht sage obs klappt^^
Leicht verständliche Informatiktutorials:
http://www.youtube.com/VascoLange
 

da_poller

BeitragDo, Sep 18, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
pirahni hat Folgendes geschrieben:
Ok: mein Code:Code:

if leftside=1 then
  auto_links_drehn
elseif rightside=1 then
  auto_rechts_drehn
elseif infront=1 then
  if (ampel=rot) or (behinderung) then wait else auto_forward
elseif behind=1 then
  auto_um_drehn
else
  auto_warten
endif


Bei behinderung ist sowas wie baustelle, anderes auto und so gemeint. rechts vor links ist nicht bei. kannst aber bei behinderung rein machen ^^

So würd ichs mache, kann aber nicht sage obs klappt^^


ich verwende types und so ansich sieht mir der code nach einem einzelnen auto aus und nich wie ich geplant 50-300 autos...

The_Nici

BeitragFr, Sep 19, 2008 9:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Wegfindung könntest du ihnen ein zufälliges Ziel geben und sie dann über den Algo dorthin fahren lassen.
 

da_poller

BeitragFr, Sep 19, 2008 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werde an jeder kreuzung die freie wahl lassen ob gerade aus oder abbiegen.. leider bin ich im moment körperlich nicht zut beisammen woraufhin meine arbeit sich auf handgeschriebene codes handelt..

Goodjee

BeitragFr, Sep 19, 2008 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
da_poller hat Folgendes geschrieben:


ich verwende types und so ansich sieht mir der code nach einem einzelnen auto aus und nich wie ich geplant 50-300 autos...


das war ja auch nur pseudocode für ein einzelnes auto, was halt immer die lage checkt und schaut wie's mit den anderen autos aussieht...die autos würde ich aber lieber in einem array speichern als in der globalen typelist, da es sonst ewig dauert für jedes auto zu schaun ob vor ihm frei ist
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

theotheoderich

BeitragSa, Sep 20, 2008 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei TheoTown (Isometrisch) mache ich es ähnlich wie levi.

Viele Autos fahren dort zufallsgesteuert.
Folgendes wird für den weiteren Fahrweg überprüft:

- 1 Feld vorne in Fahrtrichtung
- 1 Feld vorne in Fahrtrichtung und 1 Feld links
- 1 Feld vorne in Fahrtrichtung und 1 Feld rechts

Es dürfen nicht nur die Felder direkt rechts/links neben dem Fahrzeug überprüft werden, sondern immer ein Feld weiter vorne in Fahrtrichtung (wichtig für Verkehrsregeln).

Die Autos werden bei mir mittels Types verwaltet in Verbindung mit Mapdaten in einem DIM-Feld.
Ein Autotype teilt also immer dem DIM-Feld mit, wo es sich gerade befindet.
Quasi:
Postition z. B. Auto 1
autox=10
autoy=16

Auto teilt DIM Feld seine Position mit
mapcar(autox,autoy)=1

Andere Autos überprüfen nun anhand des DIM-Feldes (der Mapdaten), ob das Feld vor ihnen frei ist.
Vorteil, man braucht nicht alle Autotypes überprüfen, ob ein Feld in Fahrtrichtung frei ist. Spart enorm Rechenzeit, weil man nicht alle Typeeinträge mit allen anderen gegenchecken muss. So ermöglicht es auch sehr viele Autos auf der Karte fahren zu lassen.
autox=43
autoy=38

Fahrtrichtung von links unten nach rechts oben (Y Wert verkleinert sich):
if mapcar(autox,autoy-1)=0 dann Strasse frei

Auch der Strassenverlauf wird so überprüft:
if maproad(autox,autoy-1)=1 and maproad(autox,autoy-2)=0 and maproad(autox-1,autoy-1)=1 and maproad(autox+1,autoy-1)=0 wäre dann eine Kurve nach links.

Genauso werden Kreuzungen überprüft (in diesem Fall rechts ohne Verkehrszeichen):
if maproad(autox+1,autoy-1)=1 and mapcar(autox+1,autoy-1)=1

Also wenn rechts in Fahrtrichtung eine Strasse ist und auf dem Feld ein Auto ist, was dem ankommenden Fahrzeug in die Quere kommen würde, dann wird das ankommende Fahrzeug angehalten (Rechts vor Links halt).

Im Prinzip kann ich für jedes Strassenfeld auch die max. Geschw. festlegen.
1=normale Autogeschw. (rund 50 km/h), 0.5=25 km/h, 2=100 km/h
Bei jeder Fahrzeugtypesberechnung autogeschw=autogeschw*mapgeschw(autox,autoy)

Natürlich verwende ich etwas andere Variablen, aber das soll nur kurz zeigen, wie ich es bei mir vom Prinzip gemacht habe.
Gruß
TheoTheoderich
--
The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group