npc haben rechtsdrall

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: npc haben rechtsdrall

BeitragSa, Aug 04, 2007 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin Blitzer !

Also nachdem ich jetzt die collisonen und die texte hinbekommen hab und mein werk mal so ne halbe stunde bewundert/getestet hab, musste ich leider feststellen, dass meine npc gerene gruppen kuschenl machen.

Obwohl meinermeinung nach das Laufverhalten der bots wiklich zufällig ist, neigen sie dennoch dazu inetwa nach 3min immer nur nach rechts abzubiegen (hinuntwieder mal links trotzdem rechtsdrall). Somit treffen sie sich logischerweise irgendwann rechts an der mapbegrenzung und rennen da doof rum. Wenn ich mir jetzt vorstelle, dass so in einem Dorf/stadt mal so 10 npc (natürlich zuerst gut verteilt) sich irgendwann mal irgendwo rechts an der Dorfgrenze zu nem picknick versammeln Evil or Very Mad

Die testmap auf der sie sich bewegen, ist eigentlich recht ausgeglichen.
ich stell hier mal den teil rein in dem die laufrouten bearbeitet werden. Vielleicht ist ja da a bug drinne

~glei mal sry wegen umbrüche~
Code: [AUSKLAPPEN]

Function update_schilder()


      For info.schild = Each schild
      
      ;laufen lassen   / map check                                                    
               info\schild_run_counter = info\schild_run_counter +1
             
             If  info\schild_run_counter  >= info\schild_run_interval  Then
                    info\schild_run_counter = 0
                     info\run_counter = info\run_counter +1
                        
                     If info\schild_richtung  = 1 And map(info\schild_x-1,info\schild_y) < 27 Then
                        info\schild_x = info\schild_x - 1
                       
            
                       ElseIf info\schild_richtung  = 3 And map(info\schild_x+1,info\schild_y) < 27 Then
                        info\schild_x = info\schild_x + 1
                       
            
                       ElseIf info\schild_richtung  = 4 And map(info\schild_x,info\schild_y-1) < 27 Then
                          info\schild_y = info\schild_y - 1
                       
               
                      ElseIf info\schild_richtung  = 2 And map(info\schild_x,info\schild_y+1) < 27 Then
                        info\schild_y = info\schild_y + 1
                                       
                                                             
                  End If

                         ;andere richtung einschlagen
                     If info\run_counter >= Rnd(2,4) Then
                            info\run_counter = 0
                             info\schild_richtung = info\schild_richtung +Rnd(1,4)
                             If info\schild_richtung >4 Then info\schild_richtung = Rnd(1,4)
                             
                         End If                   
            End If
         
                      

                     ;npc als rect darstellen
                   Rect info\schild_x*32 - offset_x ,info\schild_y*32 - offset_y ,32,32,0
                         

       Next
;usw...


wer sich das verhalten mal genauer betrachen will kann sich des im Archiv saugen: (paar kbs) An den code dieb: Es bringt dir nichts wenn du von anderen proggern die codefetzten stiehlst und diese nicht verstehtst.

https://www.blitzforum.de/upload/uploads.php

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Baschdi

BeitragSa, Aug 04, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
als ich das getestet habe war alles optimal ..die viecher sind nie aufeinander....
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

Puccini

BeitragSa, Aug 04, 2007 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs vorhin auch mal getestet, bei mir gings auch alles! o.O

Mystheriös
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

Dottakopf

BeitragSa, Aug 04, 2007 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
habt ihr mal länger laufen lassen ? hab jetzt auch mal nen dritten rein und wieder alle auf der rechten seite auf der map ^^

wollte erste ne imagienere begrenzung anlegen mit max x und y werten die er sich vom spawn entfernen darf. Doch dann gehen die ja wieder auf den rechten begrenzungsrand....

Ober nachdem des prob nur bei mir ist. Hmm ka.

Was hält ihr von den bots ("zumindest soweit sie gerade sind") kann ma auch mit leer anspechen. Dachte mir ich copy das verhalten der bots von pokemon, da standen die npc auch kurz n paar sek. und dan gingen sie ein tile weiter.... hab versucht das hier auch umzusetzten

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

sirokuhl

BeitragSo, Aug 05, 2007 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
meiner meinung nach haben die anderen hier entweder dein problem falsch verstanden oder sie haben wie du sagtest nicht lange genug getestet. Rolling Eyes
jedenfalls sammeln sich die npc's bei mir auch nach ner zeit alle rechts an (wie solls auch anders sein...) .
@Baschdi: es geht nicht darum, dass sie übereiander gehen, sondern irgendwann alle am rechten rand rumlungern Wink
 

Schnuff

BeitragSo, Aug 05, 2007 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
also, bei mir wandern die fröhlich durch die gegend, nachdem ich aus
Code: [AUSKLAPPEN]
;andere richtung einschlagen
  If info\run_counter >= Rand(2,4) Then
  info\run_counter = 0
  info\schild_richtung = info\schild_richtung +Rnd(1,4)
  If info\schild_richtung >4 Then info\schild_richtung = Rnd(1,4)
End If

ein
Code: [AUSKLAPPEN]
;andere richtung einschlagen
  If info\run_counter >= Rand(2,4) Then
  info\run_counter = 0
  info\schild_richtung = info\schild_richtung +Rand(1,4)
  If info\schild_richtung >4 Then info\schild_richtung = Rand(1,4)
End If

gemacht habe...

edit: bei deiner variante, giebts die möglichkeiten 1.0-4.0 das heist, 2 und 3 kommen doppelt so häufig... (da zu 2, 1.5 bis 2.49 und zu 3: 2.5 bis 3.49 zählt)
Programmers dont die. They gosub without return...

Goodjee

BeitragSo, Aug 05, 2007 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
vllt bin ich jetzt dämlich...aber die beiden sourcecodes sind exakt identisch...

Eingeproggt

BeitragSo, Aug 05, 2007 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab auch lang gesucht^^

Aber er hat Rnd durch Rand ersetzt.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Baschdi

BeitragSo, Aug 05, 2007 11:45
Antworten mit Zitat
Benutzer-Profile anzeigen
also als ich das geändert habe und getestet (testet immer noch) hat sich nix geändert .die bots sind wie davor zumgehampelt. ....evtl liegt es an der version die wir benutzten oder auch nicht ...denn bei manchen scheint rand() anders zu sein als rnd()....

mfg
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Aug 05, 2007 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir funktioniert Rand wundervoll, nahezu gleichmässiger Anstieg aller Werte. Trotzdem lungerten die Bots bei mir im rechten Bildschirmbereich. Übrigens Dottakopf, unter Rechtsdrall versteht man was anderes.

Code: [AUSKLAPPEN]
Graphics 400,200,0,2
SetBuffer BackBuffer()


While Not KeyHit(1)
 w=Rand(1,4)
 c=1

 If w=1 c=0:v1=v1+1
 If w=2 c=0:v2=v2+1
 If w=3 c=0:v3=v3+1
 If w=4 c=0:v4=v4+1
 v0=v0+c

 Text 20,20,"Fehler "+v0
 Text 20,40,"Wert 1 "+v1
 Text 20,55,"Wert 2 "+v2
 Text 20,70,"Wert 3 "+v3
 Text 20,85,"Wert 4 "+v4

 Flip 0
 Cls
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Dottakopf

BeitragSo, Aug 05, 2007 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
jo des mit dem Rechtsdrall... naja dachte des kommt am ehesten an das problem hin ^^ (man wies das die nach rechts ziehen).

Hmm na super Rolling Eyes ich hab keinen peil wie ich den "rechtsdrall" rausbekommen soll. Wie gesagt ne "lauf_begrenzung" könnte das problem schnell lösen, doch wie vorhins schon angedeutet, wüden die sich wieder an der maximalen x koordinate nach rechts aufhalten...
Ich will aber wirklich spontante freie npcs.

Da ich jetzt weis, dass die gerne sich rechts tummeln, könnte ich versuchen den npc alle 3 richtungsänderungen wieder mit absicht nach links zu leiten.
Könnte des funtzen ????

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Baschdi

BeitragSo, Aug 05, 2007 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde probieren das du um jede unit ein feld legst (also nur gedacht) und wenn die koos zu klein oder zu groß sind , also das viech sich raus bewegt, dann änderst du die richtung, aber innerhalb des felds kann sie sich bewegen wie sie will, die einheit.....
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden

Dottakopf

Betreff: .

BeitragSo, Aug 05, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja wie ich scho sagte, möchte ich keine "begrenzung" da 1. ich freie npc möchte...(eigene messlatte) 2. Es nur den effekt hätte, dass die sich wieder an der max. rechten x koord rumtreinben - "rechtsdrall" -

Anscheinend hab ich es geschaft, durch nen zähler den Rechtsdrall aufzuheben. Alle 4 richtungsänderungen = richtung nach links einschlagen.
Hab des mal nicht länger als 10 min laufen lassen... sah aber ganz gut aus. Auch wenn sie sich manchmal etwas näher kamen hatte sich des wieder aufgelöst und haben sich wieder verteilt. Da die laufrouten eh zufällig sind ist es wohl erher unmöglich zu verhindern, dass mal 2 npc kuscheln Wink

wäre nett wenn ihr mir des auch bestätigen könntet, lade jetzt mal die neue version ins archiv. Hab da mal noch nen 3ten rein.

https://www.blitzforum.de/upload/uploads.php

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group