-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve development of higher resolution games in AGS #1009
Comments
only a small note - |
Only to outline basic directions (!!), following seem to be three main problems when dealing with high-res (and generally "resource-heavy") games:
In regards to disk space, improving compression seem to be a natural choice, but at the same time it increases the speed problem, because for every compression there has to be a decompression (duh), unless we are talking about lossy compressions (but then this is something that AGS should not probably do on its own, and let user decide before importing an item into a project). An alternate approach could be in finding ways of reusing assets and avoiding duplicate data where possible. This involves giving game developer both tips and instruments of doing so (I am just noting this as an abstract idea, because I don't have a practical example ready... ok, maybe something like #996, but in larger scale). Regarding runtime memory, the primary idea is to keep as little in memory at once as convenient, but at the same time this has to be balanced with ability to load it up again when needed. There's an interesting idea discussed in the past on forums, where developer makes a graph for the game, defining connected areas, and when player moves around the game, the engine loads up data from neighbour areas and unloads/saves in temp files what has been left behind. This may not be a big priority here, but perhaps something to consider after we have a proper resource streaming system in the engine. Again, there has to be no unnecessary duplicates. For example, right now the raw sprites (bitmaps) are shared between objects, but DDBs (textures) converted from a sprite are not, which is pretty silly and suboptimal (a ticket is a due). For runtime speed, the solutions are in NOTE: I heard that @sonneveld was experimenting with buffered input streams and threaded resource loading, so probably there's already some work being done on items from the above list. |
Regarding disk space, my main concern is the spritecache size for the developer making the game and the fact that he must store that in his/her source version control system, because it can't be rebuilt from the source images and an index in the Game.agf alone. |
agsutils' agsprite tool can build acsprset.spr and sprindex.dat from input files in the FS |
Rebuilding sprite cache was in plans for 3.5.0 development, but we did not fully implement this because of few internal workflow problems in the Editor. Eventually, according to @morganwillcock's plans, sprite file will be removed from the project sources and only be made as an output for game packaging. That should solve this problem. |
Hey, since many pain points have since been solved, and it's hard to act without specifics, I am closing this one. |
Recently, many different developers have looked into AGS with the expectation of using it for developing high resolution games - 1600x900 and 1920x1080 games. At the same time, they have reported different problems when using AGS regarding performance, either sprite loading is slow, or they hit memory limits, or they get stuttering animation.
At the same time, it's apparent AGS developers lacks a minimal game, even better if the project is open sourced, that uses high resolution assets where all these reported problems reproduce so profiling and testing can help trace bottlenecks. Note that this game project will be very big in size because of not only the assets, but also spritecache.
This issue is for gathering these reports so there can be discussion around this goal and linking related issues that already exist can be linked here and smaller tasks that enable reaching the goal of using AGS with high resolution assets and making high resolution games.
This issue is not about fundamental changes in how AGS works (no discussion on skeletal animation or vectorial games). Also issues with AGS Scripting or other possible performance issues, not related to these specific high resolution assets should not go here either.
forum posts: 1, 2, 3, 4, 5, 6.
Editor side:
Engine side:
UPDATE:
This issue was written a long time ago, these are some changes that happened in the meanwhile:
The text was updated successfully, but these errors were encountered: