lieber im vorraus fragen...
Übersicht

onkelz89Betreff: lieber im vorraus fragen... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
ich frage hier was ich in spätestens 2-3 wochen eh wüsste aber nicht um euch zu ärgern oder eure zeit zu stehlen.. nein damit ich falls das hier dumm ist nicht weiter machen... so also worum gehts? ich habe mich jetzt nach 3-4 tests für eine lademöglichkeit entschlossen. mein gesamtlevel ist in 1000x1000 pixel große bezirke unterteit. sobald der spieler (von den koordinaten her der checkup) in einen bezirk kommt so stellen sich automatisch alle typefelder von dem was dort ist (häuser,autos,menschen,objekte ....) um und zwar so: von [typeart]\aktiv=0 auf [typeart]\aktiv=1 typeart ist halt unterschiedlich (zb haus\aktiv=0) so das klappt auch prima... und meine schleifen: Code: [AUSKLAPPEN] for [typeart].[typeart] = each [typeart] if [typeart]\aktiv=1 then ...die abfragen usw.... endif next das klappt auch... NOCH jetzt die frage was wenn ich später so ca. 1 millionen types hab (kommen ja schnell zusammen alleine von den kleinen objekten die so rumliegen) klappt das dann auch noch so super? oder schirt der rechner ab? mfg onkelz |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke das der Rechner sehr langsam wird!
Bei einer fps von 50 hast du ca 20 Millisekunden pro Schleifendurchlauf! Ich denke mal das nur diese Schleife schon länger läuft! Ich Teste es mal ! BlitzBasic: [AUSKLAPPEN] Type Zeile Field item,x,y,Art,Leben,Zeit End Type Wie erwartet! |
||
[BB2D | BB3D | BB+]
|
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm aber was kann man denn da machen?
ich muss ja alle types so gesehen speichern weil bei meinem game soll eines sein was sonst in kein ist... die realität so genau wie nur möglich ![]() ![]() naja aber wie mach ich das? dachte erst mit dateien aber das ist soo lahm. |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du brauchst ja nicht alle Types durchlaufen, um zu sehen, welche aktiv sind. Es genügt ja, wenn du pro Durchlauf immer nur die Tiles bzw. Types durchläufst, die aktiv sein könnten -also alle, die gerade im Bildschirm sind, oder in deren Nähe sich der Player gerade befindet.
Dazu brauchst du halt ein System, mit dem du etwas mehr Kontrolle über deine Types / Tiles hast, als einfach nur eine Riesenmasse, die man per brute force durchloopen muss. Du kannst z.B. auch Types in normalen, zweidimensionalen Arrays speichern. So kannst du über x/y-Koordinaten ganz gezielt auf ein Type zugreifen. Oder du speicherst nur die Handles der Types in einem zweidimensionalen Array, das ist Speicherschonender. Wenn die Masse an Tiles riesig ist und du dir "verschobene Tische" merken musst, kannst du z.B. eine Extra-Liste für solche Gegenständen anlegen (interaktive Objekte) oder du lagerst solche Dinge direkt in eine Datei aus. Übrigens gibt's da auch noch einen sehr nützlichen Trick, auf den seltsamerweise auch kaum einer kommt: bei sehr rechenintensiven Sachen, die die Framerate drücken könnten, kannst du Berechnungen ja auch auf mehrere Durchgänge verteilen. Beispiel: erster Durchlauf: alle Gegenstände checken, zweiter Durchlauf: alle Figuren bearbeiten usw. Du musst dann nur darauf achten, daß die Framerate nie unter ein gewisses Level sinkt, sonst bringt diese Methode auch nichts mehr. Vielleicht hab ich das Problem aber auch falsch verstanden, hab erst eine Tasse Kaffe hinter mir... ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was x-pressive da angesprochen hat könnte man z.B. mit zusätzlichen übergeordneten Types realisieren, bei denen ein Type immer einen Block von Objekten zusammenfasst. Dann geht man immer nur die Über-Types durch bis man zu einem kommt, dessen Objekte gerade auf dem Bildschirm sind und die kann man dann einzeln durchgehen! | ||
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja könnte man versuchen aber es kommt häufig vor das alle arten von objekten auf dem bildschirm sind (also alle types vertreten...)
aber danke für die ideen ![]() mfg onkelz |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du vielleicht falsch verstanden: es kann ja sein, daß alle Arten von Objekten auf dem Bildschirm vertreten sind -aber du muß ja deswegen nicht alle Instanzen von allen Typesorten immer komplett durchlaufen.
Lass' dir einfach ein System einfallen, wie du ganz gezielt nur die Type-Instanzen aller Sorten checken kannst, die auch gerade auf dem Bildschirm sind. Wie du das genau machst, kommt darauf an, wie dein Spiel aufgebaut ist. Ich schlage mal ein 2D-Array vor, in dem die Types gespeichert sind, ähnlich einer Tilemap. Jetzt musst du nur noch wissen, welche Spalte/Reihe-Position der Player gerade auf der Map hat und kannst ganz gezielt nach den jeweiligen Types im Array sehen. Ohne ein solches System brauchst du mit diesem Spiel gar nicht erst weitermachen. Es wäre doch Wahnsinn, bei jeder Bewegung stur alle Types zu durchlaufen. Ich behaupte mal, daß es keine Beschränkung für die Grösse einer Welt gibt -sofern man eben nur ein intelligentes System benutzt. |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke werde mir mal die anleitungen über arrays durchlesen (hab damit nich so die erfahrungen)
mfg onkelz |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group