My team participated in Ludum Dare 36 to try making something complex enough to evaluate Defold possibilities. And here our result: http://ludumdare.com/compo/ludum-dare-36/?action=preview&uid=44195
It may look robust, but we know how many difficulties we faced and what hacks was used. Many of them are real blockers for scaling project into big commercial product. So I want to post all our findings here to keep tracking.
Part 1: Criticals
1.1 There no obvious option how to change cursor for PC version. Mouse pointer is the most important part of UI. You can’t release your game with fantasy old-style interface and default Windows cursor.
1.2. PC build launches in two windows. This is uncommon behavior for PC client games and may confuse end users. Moreover it blocks option to designate videocard to game, because from videocard tools user can select only videocard for the first application (console window). What is maybe critical for some users.
1.3. We had issue with wrong timing. One of our players got this www.youtube.com/watch?v=F5WIsc44Dl8 It was solved by checking variable_dt in display settings in project settings. It is not okay to have dependencies between game behavior and fps.
1.4. Editor must be WYSIWYG. In other case developer lose control under what’s happening in his game. We got the issue that collision of scaled object doesn’t match in the editor and in the game. This issue known since Nov 15.
1.5. There no options to change resolution and switch between window, borderless and fullscreen modes by user. We can get window height/width, but can’t set it. This is critical for PC client version.
1.6. How I see tilemap in the editor (pic1) and how I see it in the game (pic2) This issue with tile edges can be solved by making own render script, but it is very strange to see how important game element can’t work properly from the box. And I can’t say that we know how to guarantee fix this issue. Some of our players have complains on black lines between tiles.
1.7. There no way to organize proper objects and tiles sorting with keeping convenient editing. We was forced to split our tilemap on two parts, bottom and top, to be able to make tiles above game objects. But it is not possible to make large changes on map when it stores in two separated tilemaps. And this is very rough solution than doesn’t allow local sorting like staying in-front and behind the tree.
9 years ago when I worked in mobile games development we had custom-made editor that had simple logic of three layers. One bottom layer for tiles that always rendering before any objects. One top layers for tiles that will be rendered at last and will be above any other layers and objects. And one middle layer for tiles that needs to be sorted with gameplay objects. Sorting was simple. Each sprite had pivot point. Render priority used vertical coordinate of pivot point to choose which sprite render first. This allow to make complex levels with proper visualization of player and other characters.
1.8. There no way to assign gameplay logic to tiles. Like this tile has collision and can be passable and that tile can give +50% bonus to something. Only one way to do it – to use game objects for everything. But I’m not sure that this is good solution for performance. Other use when you assign collisions and triggers above tilemap is not good solution, because it is easy way to get bugs with difference between visual and actual mechanics.
Part 2: Major things
2.1. There no clear option to track mouse position if nothing pressed. It is necessary if you want to make reaction on mouse move for fun (button highlighting, cursor trail) or for gameplay (avoid obstacles by cursor).
2.2. There no option to see backward links. I can’t find which object or collection uses this or that resource. I know that editor knows about backward links because it know where links need to be changed when I do rename of resource. Option to look for backward links is necessary for big project to keep resources clean from not used junk.
2.3 Scale controls for collision appears in the wrong place. Sometimes behind current window.
2.4. Needed option to scale in one direction only. For example, I can’t change position of right side of collision without moving left side. In result I need to spend lot of time for iterations to find perfect place in the middle of two sides simultaneously instead of tuning one side by one.
2.5. No options to change key bindings by players. Only workaround when you bind ALL keys and have own binding system.
Part 3: Small improvements
3.1. Allow to drag scene window by scroll mouse button without pressing Alt. This is the one of the most common operations in the editor and it little bit ridiculous to press Alt just because. There no other function on the scroll button without Alt. But Alt has its own function – enabling menu operations from keyboard. One misclick and your input focus moved from editor window to menu.
3.2. It is a good feature with auto numeration for new objects in Outliner. But it has issue with numeration, when count goes after two digits. Object10 appears between Object1 and Object2 instead of being after Object 9. It is not convenient when you are working with big number of objects in one tree.
3.3. Each time when I need to build the version I need to search for proper folder from the root folder. It will be much more convenient if last used folder will be proposed for the next build.
3.4. Synchronization window is not informative. I do not know what’s going on synchronization, which files was updated and how long I need to wait. It has workaround with using TortoiseGit or orther Git clients, but casual synchronization window more appreciated.
In summary, for our team crucial to know will be this items addressed and when. Because currently we can’t plan release on Steam with desired level of quality.
p.s. I can’t post more than 2 links in post because I’m new user. Sorry. See other links in comments below.