This question seems similar to other questions but no other topics I saw helped. I'm making a game in GML (GameMaker Language).
Regardless of the language/software, this should be a universal topic.
Okay, so I currently barely exceed 60FPS on a game with no code in the tick (step? frame? iteration?) so it should most definitely not be a CPU issue. My computer is fantastic and I can run nearly all (if not, all) games at ultra and high settings. Anyway, my game is isometric and tiles are 32x16.
The terrain data ds_grid (like a 2D array, but can't be jagged) is never changed except when loading other maps. I need the game to be played in a max of 1080p, and higher resolutions won't be implicitly supported.
So, I have a nested for-loop, to loop through a calculated minx/maxx and miny/maxy, basically defining the rectangular area in the terrain data ds_grid that I need to render. However, at the moment, in 1080p, after applying a variable called count to increment every iteration of the nested loop, I have nearly 8000 draw calls every frame, rendering every tile near the view.
Remember, the tiles are both isometric and small, so there are a lot of things needed to be rendered. There are multiple grass tiles to reduce texture repeating. There is also a water tile, and I may add other terrain tiles. So basically, I need a method of rendering tons of tiles (that don't change) with a much higher (preferably at least 300) FPS.
MORE INFO: in GM, a ds_grid is a data structure that is very similar to a 2D array, where the main differences are that it cannot be jagged (it's similar to a table) and any cell can hold any data type, so I could have strings and real numbers etc. all in the same ds_grid.
My ds_grid contains enumeration values, such as tile.grass or tile.water.
The terrain does not fit within the screen borders, and resolution directly affects view size.
ds_grid
store? Sprite indexes? Background indexes? Tiles ones? Or, a subimage index referred to a unique sprite storing any kind of terrain sprite? Please, give as much related info as you can so we can figure out better what can be done to help you improving performances. \$\endgroup\$