• Login

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

81

Saturday, September 7th 2019, 1:36pm

Quoted

Bei 20*15 1-Tile Sprites sind es aber 300 und nicht 2500? Oder überlagerst du die Sprites zusätzlich?

...? Ähm? XD°
Script häng unten dran.
Dachte alle Sprites außerhalb des Bildschirms werden gelöscht? Dadurch dürfte es nicht langsamer werden, als im normalen Spielverlauf? ><
Mit dem Eventcode rufe ich auf einer 50*50-Map immer eine 50er-Reihe Sprite auf:
@>Control Variables: [0001 <Variable>] = 0
@>Loop
_@>Script: a=$game_map.static_object
_: ______: a[$game_variables[3]].setup_til(
_: ______: $game_variables[1],
_: ______: $game_variables[2],
_: ______: :bottom_left,1,32,64,32,32
_: ______: )
_: ______: a[$game_variables[3]].set_graphic(
_: ______: "001-Grassland01")
_@>Control Variables: [0001 <Variable>] += 1
_@>Control Variables: [0003 <Variable>] += 1
_@>Conditional Branch: Variable [0001 <Variable>] == 49
__@>Control Variables: [0002 <Variable>] += 1
__@>Break Loop
__@>
_: Branch End
_@>
: Repeate Above

Das dann 50 mal, dann hat man recht viele Sprite auf der Map, die aber alle nichts bedeuten sollten, solange sie außerhalb des Bildschirms sind.
...dachte ich zumindest XD


Hatte das geschrieben, bevor ich deinen Post gesehen habe:

Habs jetzt so gelößt, funktioniert aber nur für das exakte Gras-Tile XD
Ist aber nicht so schlimm, weil ichs nur für das Grastile brauche. Alle anderen Frucht-Tiles sind exakt 32px breit.

Ruby Source code

1
2
3
4
5
    elsif @object.anchor == :bottom_mid # Gras 
      self.ox = self.src_rect.width / 2
      self.x = ((map_x *126 - $game_map.display_x + 3) / 4) + middlewidth
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height


Falls da einer trotzdem drübergucken mag, gerne XD

Okay, Screens sind angehangen.
Das Grastile wackelt, wenn man drübergeht und es soll mit der Spitze den Spieler überdecken (Prio 0) :)
Aufruf:

Ruby Source code

1
2
3
4
5
6
a=$game_map.static_object
a[22].setup_til(
16,12,:bottom_mid,0,184,512,48,64
)
a[22].set_graphic( 
"001-Grassland01")


Script:
Spoiler

Ruby Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
#==============================================================================
# ** Static Object
#------------------------------------------------------------------------------
#  Ein Sprite, der an einer Stelle einer bestimmten Map geladen wird (kann ein 
#  Tileset-Tile sein oder ein Picture) und dort verbleibt und manipuliert
#  (angle, opacity) werden kann
#==============================================================================
 
#==============================================================================
# ** Map_Objekt
#==============================================================================
class Map_Object
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :map_x
  attr_reader :map_y
  attr_reader :anchor
  attr_reader :priority
  attr_reader :graphic
  attr_accessor :opacity
  attr_reader :angle
  attr_reader :hue
  attr_reader :tilestx
  attr_reader :tilesety
  attr_reader :tilewidth
  attr_reader :tileheight
  attr_reader :pic
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @map_x = 0
    @map_y = 0
    @anchor = :top_left
    @priority = 0
    @opacity = 255
    @angle = 0
    @hue = 0
    @graphic = ""
    @tilestx = 0 
    @tilesety = 0 
    @tilewidth = 0
    @tileheight = 0
    @pic = true
  end  
  #--------------------------------------------------------------------------
  # * Setup Picture
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #--------------------------------------------------------------------------
  def setup_pic( mapx, mapy, anchor, priority, pic=true )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Setup Tileset
  # 
  #   mapx = Starttile des Bildes X
  #   mapy = Starttile des Bildes Y
  #   anchor = Startpunkt des Bildes (oben links, unten links)
  #   piority = Priority des Bildes (1-5, je nach Tilehöhe)
  #   tilesetx = Startpunkt des Ausschnitts im Tileset x (Pixel)
  #   tilesety = Startpunkt des Ausschnitts im Tileset y (Pixel)
  #   tilewidth = Wieviele Pixel breit
  #   tileheight = Wieviele Pixel hoch
  #--------------------------------------------------------------------------
  def setup_til( mapx, mapy, anchor, priority, tilestx, tilesety, tilewidth, tileheight, pic=false )
    @map_x = mapx
    @map_y = mapy
    @anchor = anchor
    @priority = priority
    @tilestx = tilestx
    @tilesety = tilesety
    @tilewidth = tilewidth
    @tileheight = tileheight
    @pic = pic
  end
  #--------------------------------------------------------------------------
  # * Set Graphic
  #
  #     name           :Name der Grafik (Tileset oder Picture)
  #--------------------------------------------------------------------------
  def set_graphic( name )
    @graphic = name
  end
 
  #--------------------------------------------------------------------------
  # * Screen-Berechnung
  #--------------------------------------------------------------------------
  SCREEN_WIDTH = 640
  SCREEN_HEIGHT = 480
 
  #--------------------------------------------------------------------------
  # * Start_X
  #--------------------------------------------------------------------------
  def start_x
    # X-Koordinate des linken Objektrandes in Pixeln:
    return map_x * 32
  end
 
  #--------------------------------------------------------------------------
  # * Start_Y
  #-------------------------------------------------------------------------- 
  def start_y
    # Y-Koordinate des oberen Objektrandes in Pixeln:
    if anchor == :top_left
      return map_y * 32
    else
      return map_y * 32 - tileheight + 32
    end
  end
 
  #--------------------------------------------------------------------------
  # * Screen_Visible?
  #-------------------------------------------------------------------------- 
  def screen_visible?
    # Ist der Sprite auf dem Bildschirm sichtbar?
    return false  if graphic.empty?
    screen_x = start_x - ($game_map.display_x + 3) / 4
    return false  if screen_x >= SCREEN_WIDTH || (screen_x + tilewidth) <= 0
    screen_y = start_y - ($game_map.display_y + 3) / 4
    return false  if screen_y >= SCREEN_HEIGHT || (screen_y + tileheight) <= 0
    return true
  end  
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Static_Object
  #--------------------------------------------------------------------------
  def static_object
    # wenn beim ersten Aufruf von $game_map.static_object der Array noch nicht
    # mit Werten gefüllt ist, fülle ihn erst mit Start-Werten auf
    if @static_object == nil
      @static_object = []
      for i in 0..2499
        @static_object[i] = Map_Object.new()
      end
    end
    # gib den Array zurück
    return @static_object 
  end
end
 
#==============================================================================
# ** Object_Sprite
#==============================================================================
class Object_Sprite < Sprite
  attr_reader :already_tilted
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(viewport, map_object)
    super(viewport)
    @object = map_object
    @already_tilted = false   
    if @object.opacity < 255
      self.opacity = 100
    end
    update
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
 
  #--------------------------------------------------------------------------
  # Methode Abbrechen, wenn Grafik leer
  #--------------------------------------------------------------------------
   if @object.graphic == ""
    self.bitmap = nil
    return  # <- Brich die Methode an dieser Stelle ab
   end
 
  # Werte festlegen und errechnen
    @graphic_name = @object.graphic
    @tilestx = @object.tilestx
    @tilesety = @object.tilesety
    @tilewidth = @object.tilewidth
    @tileheight = @object.tileheight
    self.angle = @object.angle
    opacity = @object.opacity
    map_x = @object.map_x
    map_y = @object.map_y
    map_y2 = @object.map_y -1
    map_z = @object.priority
    middlewidth = @tilewidth / 2
    tile_ox = map_x+(middlewidth/32)
 
  # Opacity; wenn der Spieler unter dem Sprite ist (nur Bäume und Dächer [top_left)
    if @object.anchor == :top_left
      if $game_player.x >= map_x && $game_player.x <= map_x + (@tilewidth / 32) - 1 &&
       $game_player.y >= map_y && $game_player.y <= map_y2 + (@tileheight / 32) - 1
       opacity = 100
       @object.opacity = opacity
     else
       opacity = 255
       @object.opacity = opacity
      end    
    end  
 
  # Opacity; wenn die Opacity sich ändert  
    if self.opacity > @object.opacity
      self.opacity -= 10
    end
    if self.opacity < @object.opacity
      self.opacity += 10
    end
 
  # Setup; je nachdem welches Setup gewählt wurde
      if @graphic_name != ""
        if @object.pic == true
          self.bitmap = RPG::Cache.picture(@graphic_name)
        elsif @object.pic == false
          self.bitmap = RPG::Cache.tileset( @graphic_name )
          self.src_rect.set( @tilestx, @tilesety, @tilewidth, @tileheight)
        end
      else
        self.bitmap = nil
      end
 
  # Anchor; je nachdem welcher anchor gewählt wurde
    if @object.anchor == :top_left # Bäume, Dächer
      self.x = (map_x * 128 - $game_map.display_x + 3) / 4 
      self.y = (map_y * 128 - $game_map.display_y + 3) / 4     
    elsif @object.anchor == :bottom_left # Feldfrüchte
      self.ox = self.src_rect.width / 2
      self.x = ((map_x * 128 - $game_map.display_x + 3) / 4) + middlewidth 
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    elsif @object.anchor == :bottom_mid # Gras 
      self.ox = self.src_rect.width / 2
      self.x = ((map_x *126 - $game_map.display_x + 3) / 4) + middlewidth
      self.oy = self.src_rect.height
      self.y = ((map_y * 128 - $game_map.display_y + 3) / 4) -@tileheight + 32 + self.src_rect.height
    end
 
  # Priority, je nachdem welche Priority gewählt wurde
    if map_z == 0
      self.z = self.y + 16 
    elsif map_z == 1
      self.z = self.y + 16 +32
    elsif map_z == 2
      self.z = self.y + 16 +64
    elsif map_z == 3
      self.z = self.y + 16 +96
    elsif map_z == 4
      self.z = self.y + 16 +128
    elsif map_z == 5
      self.z = self.y + 16 +160
    elsif map_z == 6
      self.z = self.y + 16 +192
    end
 
 # Tilt; wenn getiltet wird (nur Gras und Feldfrüchte [bottom_left, bottom_mid]
   if @object.anchor == :bottom_left || :bottom_mid
    if @tilt_frames and not @tilt_frames.empty?
      self.angle = @tilt_frames.shift
      self.angle += 360 while self.angle < 0
      self.angle %= 360
    else
      if !@already_tilted && $game_player.x == tile_ox && $game_player.y == map_y
        @already_tilted = true  # <- Für das nächste Update speichern dass der Sprite schon getiltet wurde
        case $game_player.direction
          when 2 then self.tilt_left 
          when 4 then self.tilt_left 
          when 6 then self.tilt_right
          when 8 then self.tilt_right
      	end
      end
    end
    if @already_tilted && ($game_player.x != tile_ox || $game_player.y != map_y)
      @already_tilted = false  # <- Wenn der Spieler das Feld (wieder) verlassen hat setze die Variable zurück.
    end
   end 
 
  end #def
 
  #--------------------------------------------------------------------------
  # * Tilt
  #--------------------------------------------------------------------------
  def tilt_left
    @tilt_frames = [5,10,20,15,10,5,0,-5,-10,0]
  end
  def tilt_right
    @tilt_frames = [-5,-10,-20,-15,-10,-5,0,5,10,0]
  end    
end
 
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  attr_accessor :map_object_sprites
  attr_reader    :viewport1
  alias_method( :aliased_initialize_method, :initialize )
  alias_method( :aliased_update_method, :update )
  alias_method( :aliased_dispose_method, :dispose )
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------  
  def initialize
    @map_object_sprites = []
    aliased_initialize_method
   if $game_switches[16] == true  
    for i in 0...$game_map.static_object.length
      sprite = Object_Sprite.new(@viewport1, $game_map.static_object[i])
      @map_object_sprites.push(sprite)
    end
   end  
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #-------------------------------------------------------------------------- 
  def dispose
    # Nur noch Sprites löschen die noch existieren:
    for sprite in @map_object_sprites
      if sprite
        sprite.dispose
      end
    end
    aliased_dispose_method
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    for i in 0...@map_object_sprites.length
      object = $game_map.static_object[i]
      # Überprüfe ob das Objekt sichtbar sein soll:
      if object.screen_visible?
        # Sprite soll angezeigt werden:
        # - Erstelle einen neuen Sprite falls der alte gelöscht wurde:
        if !@map_object_sprites[i]
          @map_object_sprites[i] = Object_Sprite.new(@viewport1, object)
        end
        # - Aktualisiere den Sprite
        @map_object_sprites[i].update
      else
        # Sprite soll nicht angezeigt werden:
        # - Lösche den alten Sprite falls er noch existiert:
        if @map_object_sprites[i]
          @map_object_sprites[i].dispose
          @map_object_sprites[i] = nil
        end
      end
    end
    # Ursprüngliche Update-Methode:
    aliased_update_method
  end
end
 
#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter  
  #--------------------------------------------------------------------------
  # * change_opacity
  #     id             :ID des objektes
  #     wert           :Opacity-Wert
  #--------------------------------------------------------------------------
  def change_opacity(id, wert)
    static_object = $game_map.static_object
    if static_object[id].opacity != wert
    static_object[id].opacity = wert  
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * tilt_character
  #     id             :ID des objektes
  #     dir            :Richtung des tiltens
  #--------------------------------------------------------------------------
  def tilt_character(id, dir='left')
#print("tilt_character ", id, ", ", dir)    
    char = get_character(id)
    if char
      spriteset = $scene.instance_variable_get(:@spriteset)
      map_object_sprites = spriteset.instance_variable_get(:@map_object_sprites)
      sprite = map_object_sprites[ id ]
 
      	case $game_player.direction
        	when 2 then sprite.tilt_left
        	when 4 then sprite.tilt_left
        	when 6 then sprite.tilt_right
        	when 8 then sprite.tilt_right
      	end
    end
    return true
  end
 
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias_method( :aliased_update_method, :update )
  def update
    aliased_update_method
  end  
end
 
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map
  attr_reader :spriteset
end
highlight to read
Josey has attached the following images:
  • Grastile.png
  • 001-Grassland01.png
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

This post has been edited 1 times, last edit by "Josey" (Sep 7th 2019, 1:36pm)


82

Sunday, September 8th 2019, 3:38pm

Hi,

Quoted

Bei 20*15 1-Tile Sprites sind es aber 300 und nicht 2500? Oder überlagerst du die Sprites zusätzlich?

...? Ähm? XD°
Script häng unten dran.
Dachte alle Sprites außerhalb des Bildschirms werden gelöscht? Dadurch dürfte es nicht langsamer werden, als im normalen Spielverlauf? ><
Mit dem Eventcode rufe ich auf einer 50*50-Map immer eine 50er-Reihe Sprite auf:
@>Control Variables: [0001 <Variable>] = 0
@>Loop
_@>Script: a=$game_map.static_object
_: ______: a[$game_variables[3]].setup_til(
_: ______: $game_variables[1],
_: ______: $game_variables[2],
_: ______: :bottom_left,1,32,64,32,32
_: ______: )
_: ______: a[$game_variables[3]].set_graphic(
_: ______: "001-Grassland01")
_@>Control Variables: [0001 <Variable>] += 1
_@>Control Variables: [0003 <Variable>] += 1
_@>Conditional Branch: Variable [0001 <Variable>] == 49
__@>Control Variables: [0002 <Variable>] += 1
__@>Break Loop
__@>
_: Branch End
_@>
: Repeate Above

Das dann 50 mal, dann hat man recht viele Sprite auf der Map, die aber alle nichts bedeuten sollten, solange sie außerhalb des Bildschirms sind.
...dachte ich zumindest XD

Ahh, wir reden also über eine 50*50 Map. Gut, dann kommen wir auf 2500.
Also, dein Code ist etwas unglücklich. Wenn ich den so übernehme, stockt es wie blöd weil er sich durch deinen Code verschluckt :).
Ich war so frei und habe die Variable 3 als Index für das Array der Objekte genommen. Variable 1 und 2 sind x und y Koordinaten.
Eine ordentliche Event Lösung sieht so aus:

Spoiler

Attachment 24180Attachment 24181
highlight to read

Die 49 habe beispielsweise genommen, weil 50*50 Map. Damit es flexibler ist, wäre hier eine Condition über Script mit

Ruby Source code

1
$game_map.width - 1
und

Ruby Source code

1
$game_map.height - 1
natürlich eleganter. Probiere das gerne aus. Dir wird sofort die Geschwindigkeit auffallen. Dann erstelle ein neues Event und nehme folgenden Code:

Spoiler
Attachment 24183
Code dazu:

Ruby Source code

1
2
3
4
5
6
7
8
9
10
a=$game_map.static_object
for x in 0..$game_map.width-1
for y in 0..$game_map.height-1
a[$game_variables[3]].set_graphic(
"001-Grassland01")
a[$game_variables[3]].setup_til(
x,y,:bottom_left,1,32,64,32,32)
$game_variables[3] += 1
end
end 
highlight to read

Noch mal probieren und staunen.

Was lernen wir daraus? Für diese Art von Iteration direkt zu RGSS greifen, ist viiiieeel schneller als der Interpreter. Ach ja... in beiden Fällen läuft es bei mir flüssig mit ca. 38 FPS. Die Sprites außerhalb des Bildschirms werden auch sauber entfernt. Darfst du aber gerne selber nachvollziehen. Gehe dafür in Zeile 120 und ersetze den Block für screen_visible? damit:

Ruby Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  #--------------------------------------------------------------------------
  # * Screen_Visible?
  #-------------------------------------------------------------------------- 
  def screen_visible?
    # Ist der Sprite auf dem Bildschirm sichtbar?
    return false  if graphic.empty?
    range = 1
    screen_x = start_x - ($game_map.display_x + 3) / 4
    return false  if screen_x >= SCREEN_WIDTH - range * 32 || (screen_x + tilewidth) <= range * 32
    screen_y = start_y - ($game_map.display_y + 3) / 4
    return false  if screen_y >= SCREEN_HEIGHT - range * 32 || (screen_y + tileheight) <= range * 32
    return true
  end  
end

Mit range stellst du ein, wie viele Tiles vom Bildschirmrand weg die Sichtbarkeit beeinflusst wird.

This post has been edited 2 times, last edit by "schM0ggi" (Sep 8th 2019, 4:00pm)


Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

83

Sunday, September 8th 2019, 7:15pm

Gut, da hast du was optimiert, dass ich leider im Spiel so gar nicht brauche XD°
Ich hab das nur gebastelt, um zu schauen, ab wann die FPS runtergehen, deswegen hab ich immer nur eine Reihe auf einmal aufgerufen, und hab zugesehen, wie die FPS runtergehen XD

Ich hab tatsächlich aber auch auf einer normalen Map mit wenigen Events schwankend FPS von 32-39 Oo
Das ist nicht normal, oder?
Wenn ich die 2500 Sprites aufgerufen habe, dann gibt er mir schwankend zwischen 15-25 FPS aus, vermutlich weil das Script ständig aufruft, welche Sprites zu sehen sind?
Selbst wenn ich bei range 64 einstelle, zeigt mir F2 nur 30FPS.

Aber zumindest hab ichs jetzt gesehen, tatsächlich, die Sprites werden gelöscht und hergestellt, kuhl XD
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

84

Sunday, September 8th 2019, 7:47pm

Also normal ist das nicht, in beiden Fällen.
Der XP Maker läuft ohne Änderung mit 40 FPS.
Das heißt, in meinem Fall laufen Games in der Regel
mit 39/40 FPS, es sei denn ein Projekt hat ein Knick im Code.

Ein frisches Projekt mit deinem Script, auf einer 50*50 Map und einem Array
mit 2500 Objekten und den zusätzlichen Sprites, wobei ja nur die
gezeichnet und aktualisiert werden, welche auch sichtbar sind, läuft mit 38/39 FPS.
Ich habe auch selber getestet und geschaut wann die FPS langsam runter gehen.
Dazu habe ich die Abfrage für die Sichtbarkeit ausgeschaltet und ihn alles aktualisieren lassen.
Ab 400-500 Sprites stürzen die FPS ab bis zur Unspielbarkeit, je mehr Sprites dazu kommen.

Möglicherweise hast du andere Scripte und Event Code, wo was nicht rund läuft.
Am Besten ein frisches Projekt öffnen und nach und nach jedes System dazu nehmen und beobachten.
Ich gehe jetzt mal nicht davon aus, dass du einen uralt PC hast.

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

85

Sunday, September 8th 2019, 10:11pm

Nee, das Projekt war neu.
Ich hab zur Sicherheit mal alle Events gelöscht, außer das, dass ich brauchte.
Dadurch bekam ich zumidnest 36-39 FPS.
Ist mein Laptop zu alt? XD

Danke fürs probieren :)
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

86

Sunday, September 8th 2019, 11:26pm

Kannst du das Projekt, wo du nur die 30 FPS erreichst, hier zur Verfügung stellen?
Würde mich interessieren wie es bei mir läuft. Entweder passt irgendwas nicht, dein PC ist lahm
oder Hintergrundprozesse ziehen bei dir Leistung runter.

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

87

Monday, September 9th 2019, 12:37am

Klar XD
Die ganzen Events sind von früheren Tests übrig.
Also meistens hab ich da so 36-39 FPS
Sobald ich den Aluxes oben links (der am linken Rand) zweimal angeklickt habe, und die 2500 Sprites da sind, gehts runter auf um die 20 FPS.
Josey has attached the following file:
  • Test - Kopie.rar (427.9 kB - 2 times downloaded - latest: Sep 9th 2019, 6:08pm)
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

88

Monday, September 9th 2019, 6:14pm

Hab es gerade probiert. Läuft bei mir mit ca. 38 FPS, wenn die Sprites gezeichnet werden.
Ansonsten läuft es mit 39/40 FPS, wie üblich.

:search:

Evtl. hast du tatsächlich unnötige Hintergrundprozesse am Laufen :D.
Oder einen uralt PC.

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

89

Monday, September 9th 2019, 11:21pm

Oder beides XD

Okay, dann danke bis hierhin, ich hab glaub ich alles, was ich brauche. Jetzt baue ich das ins System und schau, obs funktioniert XD
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Send private message

90

Monday, September 9th 2019, 11:46pm

Huhu,

Im Moment werden die Sprites zwar gelöscht, aber alle Map-Objekte werden bisher immernoch mit jedem Frame darauf überprüft ob sie auf dem Bildschirm sind und einen Sprite brauchen (in der Spriteset_Map - update Methode). An der Stelle lässt sich die Lösung definitiv noch optimieren.

Eine einfache Möglichkeit wäre seltener zu prüfen, zum Beispiel nur wenn sich die Karte um ein weiteres Tile bewegt hat. Dafür bräuchtest du zusätzliche Variablen in Spriteset_Map um deine alte Position zu speichern und sie mit der aktuellen Position zu vergleichen.
Allerdings müsstest du auch die Methode anpassen die bestimmt ob ein Objekt in Sichtweite ist (screen_visible? in deiner Map_Object Klasse) und die Bereichsabfrage um einen entsprechenden Puffer ergänzen.

Eine weitere Möglichkeit wäre die Map-Objekte in irgendeiner Form vorzusortieren, sodass nicht jedes Objekt einzeln geprüft werden muss.
Eine Möglichkeit wäre etwa eine Tabelle anzulegen um deine Map-Objekte auf einzelne Kartenabschnitte aufzuteilen. Spriteset_Map müsste dann nur die Objekte in den sichtbaren Kartenabschnitten überprüfen.
Deine Map_Object - Klasse würde damit vermutlich etwas komplexer, da du mit jedem Koordinaten/Größenwechsel eines Objekts auch die Tabelle aktualisieren müsstest.


(Leider im Moment keine ausführlichere Erklärung zur Hand, hoffe es hilft trotzdem irgendwem irgendwie :( )
Wird bei Bedarf noch ergänzt. :)

Josey

Storyteller

  • "Josey" started this thread

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Send private message

91

Tuesday, September 10th 2019, 12:18am

Das klingt gut. Wenn das noch geht, würde es die FPS noch ein bisschen verbessern.
Die erste Methode hilft da vermutlich wenig, weil die Ruckler ja eh in Bewegung auftauchen. Aber die zweite Methode interessiert mich und klingt umsetzbar:
Die Map-Objekte haben feste Orte. So wäre Sprite1 immer an Koordinate 8/4, Sprite 2 bei 9/4, Sprite 3 bei 10/4, usw. Wenn dort grad kein Baum oder Gras wächst, bleibt der Sprite leer. Das ganze ist als sauberes Gitter aufgebaut, also unter 1 kommt 76, dann 151, usw (das Raster ist 75 Tiles breit, nicht alle davon können besetzt werden, abr ein sauberes Raster ist leichter zu kontrollieren)
Hilft das irgendwie? XD
Das mit dem Größenwechsel verstehe ich noch nicht. Die Sprite sind nicht immer gleich groß, meinst du das?
Notfalldiscord: Hier klicken


  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Social bookmarks