I've tested some of those new natives and collect some problems so far (based on 1.31.1.12173 PTR), it's time to give some feedback (hope this isn't too late).
* I made a simple classify that wrote a mark on each entry's beginning:
[*P] means a problem (problems could be uncertain bugs, or things that hard to get with).
[*B] means an obvious bug.
[*S] means a suggestion.
* I made a simple classify that wrote a mark on each entry's beginning:
[*P] means a problem (problems could be uncertain bugs, or things that hard to get with).
[*B] means an obvious bug.
[*S] means a suggestion.
Hardware:
- [*P] Keyboard events won't work while holding the mouse left button down. (This problem is a disaster, it killed many possibilities on gameplay creation, please pay attention to)
- [*P] Events of key [Shift], [Ctrl], [Alt], [F5] doesn't work after registered.
- [*P] Event
EVENT_PLAYER_MOUSE_DOWN
can't be triggering with the mouse middle button.
- [*P] Missing native(s) for the mouse wheel.
- [*P] Missing native(s) to get the mouse's screen coordinates.
- [*S] Mouse/keyboard events' syncing causes unstable delays (can't avoid by
GetLocalPlayer
), those events should have an async option that will become more flexible. (The delay-issue really make people nuts when playing Music/Rhythm or Action etc type games)
- [*S] Provide native(s) to modify those default hotkeys/functionalities (e.g. camera control, quick save, menu, etc), or just let custom mouse/keyboard events can override their default functionalities.
- [*S] Add more utility natives for the mouse, e.g. native for modifying the cursor's texture, natives for set/get the cursor's animation status/index, native for directly calling the placement cursor without clicking command buttons, etc.
UI Frame:
- [*P] The widescreen mode still uses a 4:3 resolution layout that regular frames can't be positioned to both sides.
- [*P] Missing native to get the mouseover frame.
- [*P] Missing native to get the keyboard focused frame.
- [*P] (
BlzDestroyFrame
) Destroy any frame on initialization (exactly, at main() execution) will crash the game when the game starts. (Reset a different parent for the deletion frame before the destroy calls, could avoid that crash in most case, not find the reason yet) - [*P] (
BlzFrameSetFocus
) Set focus on any editbox frame, the keyboard focus will lock to that frame and can only be released after clicking it once or activate another editbox frame. (Besides,BlzFrameSetFocus
seem effected on frametype "EDITBOX" only) - [*P] Event
FRAMEEVENT_MOUSE_DOWN
andFRAMEEVENT_MOUSE_DOUBLECLICK
seem doesn't work at any frametype. - [*P] Missing native to get the mouse wheel's delta for event
FRAMEEVENT_MOUSE_WHEEL
. - [*S] The process of modifying command buttons is kind of complicated, it should be more simple. (Specifically, the 12 command buttons were too coupling with their layout parent frame that users need to do some extra works in order to modify them properly)
- [*S] Hope for some simplification on model-frametypes, like add some natives to set/get the model's properties (especially, the camera). (Seem users need to edit the model file properly in order to use those frametypes; it's hard to test those types since there hasn't any explanation for them at present)
- [*S] Hope there's a way to modify the chat editbox (which popups by press enter), like add it to
originframetype
.
Lua:
- [*B] There's a fatal error on percent sign (%) parsing with Lua compiler, wrong code saved to war3map.lua by the compiler if there has any "%" in the code (the Lua engine runs alright as long as got correct code from war3map.lua). (I had tested the "%" as strings, operator mod, patterns of regex and string.format, found the parse on escape char "%" has lacked, and this kind of parse seem not been restricted)
- [*B] Type
eventid
andgamestate
can't match those constant events of their children types correctly. - [*P] The Lua global variables of those objects which placed in the editor (that "gg_..." things) can't be auto-assigned on initialization, users have to selected-used them in a GUI trigger in order to assign them (this probably about memory saving, but it's an inconvenience), add an userdata or native in order to access those "gg_" objects may be a good idea.
- [*P] The string escape char "\t" has no result; "\r" has wrong result (it should back to start of the line, not a line feed like "\n")
Others:
- [*S] Assign any variable in
globals...endglobals
block (or Lua's global environment) by any function's returns value which only available after game loaded (e.g.GetCameraBoundMinX
,BlzGetOriginFrame
, etc), the game will crashes on loading; it will be helpful if the compiler can throw an error message about this. - [*S] Hope to see a farther distant view (extended FarZ limit). (The patch 1.31 brings so many possibilities that lots of creators certainly can't be satisfied with just making a "map", but the 10000 FarZ limit really restricts a grand 3D scene construction)