Big list of feature requests based on our experience on Ludum Dare

#1

Hi there!

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.

17 Likes

#2

Link on issue from 1.4 - Scaling Collision Object when Game Object is scaled (DEF-521)

Explanation picture for 1.7 - https://gyazo.com/29efa9ababafe87dbab1f21b7786bfd3

2 Likes

#3

Links for 1.6
In editor: https://gyazo.com/da62c6033c34a844da28ed1e30a5d166
In game: https://gyazo.com/267baea08a3ed308615a75e7c786eb88

1 Like

#4

Thaaaaat’s a big nice work done! Interesting priorities structure though. E.g. in criticals there’s stuff we don’t seem to treat that way (I’ll leave it to the devs here). But it is very cool to look up into your mind at this point. Lets see what the community feedback is.

2 Likes

#5

Nice list! Thx!

Re 1.2: Strange, I thought we had fixed that. I just tested this too, and got the same result. We’ll create a ticket for that (if we don’t have it already)

Re 1.6: Have you tried setting the “extrude borders” in the .tilesource file? This feature makes the tiles extra large, which allows for non aligned coordinates (such as when moving the camera around smoothly). This will remove the need for extra .render_script fixes. I’m not sure how other engines do this, but this is a feature where different games will have different needs with respect to texture size, thus we won’t try to automatically guess one good value for everyone.

Re 1.7: This is a known issue that haven’t been fixed yet. It’s good to hear that it’s needed, it will make it easier to prioritize. @sven or @jakob.pogulis, could you see if we have a jira ticket for this? (ask Ragnar)

Re 1.8: We have had such discussions recently in the team, and it’s something we want as well. In the meantime, the best option is to use a tool such as Tiled, and load/parse data yourself. @pkeod has an example here..
Another option is to put special tiles in your tilemap (in a non visible layer), and parse them out during init, and convert them to whatever data they represent (e.g. waypoints). It’s crude, but it works.

I just answered on those (high prio) items I know something about, and as I don’t have access to our ticket system, I currently can’t create new ticket for the issues listed here. I’ll leave that for the team tomorrow :slight_smile:

6 Likes

#6

As one of the programmers for this LD game i double everything in the OP post :slight_smile:
Also would be nice to have some basic features in code editor (auto identation, variables highlighting and stuff). I suppose some if it is planned be in the next editor version anyways.

3 Likes

#7

For 2.1, you can get the action.y / action.x or action.screen_x / action.screen_y either without conditions or by checking for nil action_id if you do want a check.

function init(self)
    msg.post(".", "acquire_input_focus")
end

function on_input(self, action_id, action)
     msg.post("@render:", "draw_line", { start_point = vmath.vector3(0, 0, 0), end_point = vmath.vector3(action.x, action.y, 0), color = vmath.vector4(1, 1, 1, 1) } )
end

As the mouse point moves around, useful data is being sent to on_input

{
  screen_dy = 6,
  x = 1195.5,
  screen_x = 1195,
  dx = -2,
  y = 688.5,
  screen_y = 689,
  screen_dx = -2,
  dy = 6,
}
{
  screen_dy = 6,
  x = 1194.5,
  screen_x = 1194,
  dx = -1,
  y = 694.5,
  screen_y = 695,
  screen_dx = -1,
  dy = 6,
}
{
  screen_dy = 2,
  x = 764.5,
  screen_x = 764,
  dx = 6,
  y = 361.5,
  screen_y = 362,
  screen_dx = 6,
  dy = 2,
}
5 Likes

#8

After this LD36, the most of this requests are oblivious and important!
Subscribe on this! :slight_smile:

And want to see multiply gamepads soon (dreams :))

2 Likes

#9

Thank you for the very nice list of suggestions. We really appreciate that you took the time to write this. Here’s a summary:

1.1 Mouse cursor
DEF-1619 Add option to hide mouse cursor in desktop build
DEF-2065 Option to lock and hide mouse pointer

1.2 Double windows
DEF-1774 The Console windows still shows in release builds on Win32

1.3 Too fast
DEF-1785 Software throttling of the frames
Forum thread: Why is the update speed too fast? (DEF-1785) (SOLVED)
variable_dt - Check if time step should be measured against actual time or be fixed (set to update_frequency)

1.4 Collision object scaling
DEF-521 GameObject scales do not apply to physics objects
Forum thread: Scaling Collision Object when Game Object is scaled (DEF-521)

1.5 Change resolution at run-time
DEF-2082 Set window size from script

1.6 Black lines in tilemap
Solution: Set extrude-borders on the tilesource

1.7 Tiles sorting
DEF-1184 Split tilemaps into layers when sorting for draw order

1.8 Tilemap metadata
DEF-2089 Add support for metadata in tilemaps

2.1 Track mouse position
See @pkeod’s answer. You will get action_id nil and action containing all of the data

2.2 Backward links
Not sure how this should be visualized. @ragnar_svensson, any ideas?

2.3 Scale controls behind current window
I have never heard of this issue before. What do you mean by “behind current window”?

2.4 Improved collision shape controls
Is this something we could consider in the new editor @Ragnar_Svensson?

2.5 Customizable key bindings
True, maybe this should be built into the engine. Has this been discussed in the past @Ragnar_Svensson?

3.1-3.4 Editor improvements
Could these be improved in the new editor @Ragnar_Svensson

7 Likes

#10

2.2 I really like this idea. I immediately thought of adding this to the future search-field. So typing something like: “link:a.script” would result in the list “a.go”, “my.collection”. You could also imagine something like right-clicking on a file and selecting “Links”, would result in the same thing being put into the search-field.
2.4 Not sure I understand exactly how this would work. Is what we are talking about the equivalent of selecting face/edge and translating in Maya/Blender? The user need makes perfect sense though, i.e. assymetrical resizing.
2.5 Yes, it has been brought up before but we haven’t gone into it in too much detail yet. But this also makes perfect sense, to have something like an input rebind-table which you can persist in user preferences. It would also require an alternative way to check input, to avoid “mapping every key” as stated in the OP.
3.1-3.4 Yes, I’ll add them to the backlog.

4 Likes

#11

I completely focused on the long list of feature requests and forgot to congratulate you on completing the Ludum Dare! The game is really nice!

5 Likes

#12

Agree. I use it as an example of what people do with Defold in 48 hours now. Big kudos for the HTML5 build btw! It dramatically helps getting more people play your game.

3 Likes

#13

Thank you all for the quick response! I’m really appreciate that.

I will clarify some points.

1.2. You can observe two windows in our Win build that we deployed here http://smash-bash.com/files/SMASH_BASH_Sukhov_vs_Zombies_-_Ludum_Dare_36.zip

Here how it looks https://gyazo.com/44ecccd28459e61424b56b5359d6995c

This build was made on Version 1.2.87

1.7. My proposal here is to make second folder in tilemap outliner https://gyazo.com/9074a2ea96f5e3a50f61b23c461efdea
Make two tilemap materials and assign them to folders. And use it in corresponding places in render script. It is quite easy and can help to make multi-layered levels.

Talking about sorting on objects level, I think we will try to solve it by using real objects instead of trying use tiles with sophisticated sorting logic.

2.2. My proposal to visualize it in resource properties. Example https://gyazo.com/a50399a438bfed5699cdf1234dcd7d59

2.3. Sorry, I forget to add screenshot. It happens when I try to change collision scale. Controls shows in the distance from selected object. https://gyazo.com/4031b149eb823031bf9d8d3d5b543a84
Othe controls shows correctly https://gyazo.com/5d6225478d824f69a44d7380c01ef77d

2.5. My proposal to add function to assign key binding from script. Another proposal is to allow to read any pressed button in on_input section.

3.1. Please, please, please.

3.2. Also proof pic just in case https://gyazo.com/6eaadad5fb9f0480f510ce89a2fadb16

3 Likes

#14

Aaaaaaaah! That’s not natural sort! Alphabetical sorting in file lists make me sad :scream:

2 Likes

#15

2.4 is describing the means of scaling he’s expecting from just about all other things not 3D apps, and not After Effects. There’s a good case to be made that the first AE Script most new learners use is to overcome this centred scaling so that it behaves more sensibly.

In Adobe Illustrator, Photoshop, Flash, etc, dragging a handle to scale results in the opposite handle being the automatic anchor point for the scale operation.

ie drag from bottom right handle, the top left handle (of a sprite/rectangle) becomes the anchor for the scaling operation.

This is common to all drawing, illustration and pixel editing apps, including, Corel, Xara, Freehand and many, many others. It’s only 3D design apps (and After Effects) that assume a constant midpoint anchor, unless otherwise specified.

To do center(midpoint) scaling in Illustrative and pixel editing apps usually requires holding down a modifier key, and then dragging.

The reasons this make sense (for just about all illustrative, layout and pixel editing) is that there’s an edge to which something should abut, and then be dragged/stretched to its next desirable location, and just about everything in design is thought about from a top left to bottom right sense.

There is nothing more annoying than using After Effects drag scaling because of its centre default of origin for scaling. It’s infuriating. This is the same feeling he’s complaining about with regards this request. It’s better to default to proportional (aspect ratio remains same) scaling from corners, with opposing corners set to anchor during scale operation. For non-proportional scaling, mid handles to be used, with opposing handle being the anchor.

Better for those of us that design, that is :wink:

5 Likes

#16

2.2 Finally got around to fixing this in Editor2

2 Likes

#17

Hi,
Have you some progress with DEF-1774 and DEF-2082 ?
Now we prepare PC build of our game, and it’s a blocker for this moment (

0 Likes

#18

No, there is no progress on these, but now that we know that they are blocking a PC release for you we will be able to give them a higher priority. When do you plan to release your game?

1 Like

#19

Now we plan release in january. But PC publisher want to see finished build in december (
Thanks!

1 Like

#20

I’ve forwarded these two to the engine team, @Sara and @Oleg_The_Evangelist. 1.2.94 will be released on Monday and then we’ll be able to do one more release before Christmas. I will let Sara, Oleg and the team get back to you.

3 Likes