Here is my modification of DizzyAGE from V2.40 to V2.60 I modifiyed it for my own projects, and will be glad if someone find it usefull. Also this version of DizzyAge V22.60 was used in Dizzy Scripting Engine for ZX Spectrum You can download it here: DizzyAGE V2.60 or see the source code with all changes description and download links at DizzyAGE V2.60 wiki
----------------------
Changes list:
2019-02-20 v2.60
game - new function DebugReloadCfg() - reloads and apply cfg from ini file (can be useful to rederfine keys options) - fixed bug: function KeyboardRead() now return correct keycodes
map editor - fixed bug: map background color in editor window now saves correctly - add option to change tilemap and tilebrouser background color
both - fixed bug: correct dpi settings in applications to correct scaling in modern Windows
2018-12-08 v2.5b
game - fixed bug: on some machines was fps drop with vsinc=on - new function DebugVideoMode(1) - reinitialize video mode according to ini file (resolution, scale, vsync, cool, etc) - new functions DebugScreenWidthMax() and DebugScreenHeightMax() - return windows desctop resolution - new Game properties G_INTERLACE, G_INTERLACE_TYPE1, G_INTERLACE_TYPE2, G_INTERLACE_COLOR - responsible for scanline effect - more information in status line (F11) - in DEV mode key F7 - change vsync mode ON/OFF
map editor - fixed bug: incorrect zooming on small maps - more zoom levels - up to x8 - Ctrl+Cursor_keys - move tile_map window - keys "K/J" - change grid size (also available in options menu) in map and tile_map windows - new brush_properties and find_brush windows with full options list (key "L" or new buttons on menu bar)
both - more layers - up to 16
-------------
If you have questions about new features and fixes, write here and I will answer.
-------------
For those who using mercurial vcs. You can clone repository by command:
hg clone https://[email redacted]/Verm/dizzyage
for compiling and building project you need Microsoft Visual Studio 2017
Hey, Happy to see people have interest in DizzyAGE and that games are still made with it :teethy:
That being said, I would like to keep any custom version of the engine, clearly marked as CUSTOM VERSION.
So please don't call this version DizzyAGE v2.60 since it will create confusion for developers. It is a custom branch with some features that were needed in Verm's game.
I wouldn't recommend normal developers to strain away from the official version.
Maybe DizzyAGE v2.4Verm.02 To clearly state that it started from the official v2.4 and it is custom by Verm.
Some of the changes (like the filtering) could be useful for others, but needs to be properly reviewed before adding in the official version. Let's find a way to include such features that EVERYBODY needs.
My main concern is COMPATIBILITY and PORTABILITY of all games. And there are now 141 games to care for :smile: I want to be able to bring all the games on the future platforms just by porting the official DizzyAGE engine. Games using custom versions of the engine may not work since I can't manage other people's changes.
----
So, one idea is to have a board of developers voting and reviewing eventual changes in the engine. It can be a dedicated thread on this forums, where active developers or people with experience can review. Ideally C++ experience and knowledge of the DizzyAGE engine as well.
We need to make sure these changes are REALLY NEEDED and that they don't break all the 141 games. Also changes should not impose limitations on eventual future more important features or functionality.
Each proposed change should be explained in detail and reviewed by these developers (code and functionality). State if it's a bug in the official version, an improvement to the editor for easy edit, or a new runtime feature for all games that will use latest version. Under no circumstances these changes should break the old games made with the official version.
Since my time is very limited, I should know if it's something that A LOT of developers want and if it MAKES SENSE to the DizzyAGE engine and its community. The purpose is not to make it do something it wasn't intended for, but small things that people always needed should be included rather than splitting the engine and the games in different versions.
I had a quick look through the changes and here are a few quick thoughts: Not trying to do a full review, since I'd like first to know if any of these changes are voted by many developers as really needed in the official version.
DizApp included engine specific lib in edidor code losing portability on other platforms #include "Mmsystem.h" #pragma comment(lib,"winmm.lib") what is the need of timeBeginPeriod(1); if really needed should be wrapped at engine level if optional, config must be exposed
Filter option could be a good addition for games that don't need pixel perfect not sure the implementation is right maybe shouyld come like other options, from cfg.LoadRenderCfg not directly from ini in InitVideoMode or it should be an option per game not sure if developer or player should change it during game either the game was made using this or not.
Interlace I see the idea of a retro tv effect but I don't think this is the right implementation lots of lines this is usually done with textures, like postprocess a more generic flow for postprocess effect should be used should be doable from script
stats too much info, should keep only base stuff
opengl api for compatibility reasons the flow of choosing the api was carefully written not sure now what are the implications of adding m_api in cfg like that but in your LoadRenderCfg i think there's a bug shouldn't be cfg.m_api = api? the function is supposed to write in cfg and api, not in m_api
versioning check was also different currently 2.4 is the same as 2.41 or 2.4b so small changes in the engine can be added without affecting the games
keyboard changes not sure why you changed int key = qcount ? I9_GetKeyQValue(0) : 0; to int key = qcount ? I9_GetKeyQCode(0) : 0; since for the status function it's still I9_GetKeyValue(key); I think both should return the state of the key, one by code, one by queue (not sure though now)
accessing desktop resolution in script may create compatibility and portability issues with games that start doing stuff with the game's window
keep in mind that the idea is to be able to move these games on future platforms as easy as possible
EDI_TILEBKGR not used? what's the purpose?
F8 key to toggle filter state? how does it work? (hold/release?) what's the purpose draw stats should be basic info (fps)
CheckMapView might be good - couldn't check in detail now
cGUITileMap::Update checking for !ctrl was it a bug that this check was missing?
Note: all documentation texts should be in English, including todo. Versions in other languages are ok, but should be in sync with the English ones.
I'd love to be able to make a reasoned response, but I'm as thick as a brick when it comes to 'proper' coding. I like version 2.4 even though I still have to struggle at times to understand why something happens - and personally, would not like to see major changes enforced on people just trying to make fun games for people to enjoy, unless the people making the changes can write 'idiot guides' that explain changes in a language us 'amateurs' can understand. {yolkfolk}:scratch:
Yes, Grandad, that's my plan. I will update the official version only if something is really needed for many users and it's easy to explain to everyone and deliver it in a smooth format with documentation and examples. No worries.
For advanced users who want to play with something different, they have the code, but also the risk of loosing portability and the overhead for maintaining their versions in synch with eventual future official versions.
I've had a little play around with this and I've got a couple of thoughts.
First, I really like having extra layers. With the game I'm working on now, I'm finding 8 layers too restrictive.
More importantly, I've noticed that DizzyAGE tends to slow down when you increase the fps rate above 36. This may be because I have an old laptop, but I've found it happens with a bunch of games, including my current one. For example, The Last Hero tends to run slow sometimes. This doesn't happen with this new version and I wonder why?
Anyway, those are the two features I'd like to see included in DizzyAGE proper. Thanks VermV for making this available. {yolkfolk}:joy: