|
8 | 8 | }, |
9 | 9 | "properties": { |
10 | 10 | "adaptGameResolutionAtRuntime": true, |
| 11 | + "antialiasingMode": "MSAA", |
| 12 | + "antialisingEnabledOnMobile": false, |
11 | 13 | "folderProject": false, |
12 | 14 | "orientation": "landscape", |
13 | 15 | "packageName": "com.example.gamename", |
|
650 | 652 | ], |
651 | 653 | "objects": [ |
652 | 654 | { |
| 655 | + "adaptCollisionMaskAutomatically": false, |
653 | 656 | "assetStoreId": "", |
654 | 657 | "name": "Bard4", |
655 | 658 | "tags": "", |
|
965 | 968 | "behaviors": [] |
966 | 969 | }, |
967 | 970 | { |
| 971 | + "adaptCollisionMaskAutomatically": false, |
968 | 972 | "assetStoreId": "", |
969 | 973 | "name": "Bard6", |
970 | 974 | "tags": "", |
|
1271 | 1275 | ] |
1272 | 1276 | }, |
1273 | 1277 | { |
| 1278 | + "adaptCollisionMaskAutomatically": false, |
1274 | 1279 | "assetStoreId": "", |
1275 | 1280 | "name": "Stone", |
1276 | 1281 | "tags": "", |
|
1347 | 1352 | "textG": 0, |
1348 | 1353 | "textR": 0 |
1349 | 1354 | }, |
1350 | | - "comment": "The characters have a pixel-perfect behavior that makes them move after the keys are released and stop exactly in a cell.\nThere is nothing else to do. The following events are mainly about sprite animation.", |
1351 | | - "comment2": "" |
| 1355 | + "comment": "The characters have a pixel-perfect behavior that makes them move after the keys are released and stop exactly in a cell.\nThere is nothing else to do. The following events are mainly about sprite animation." |
1352 | 1356 | }, |
1353 | 1357 | { |
1354 | 1358 | "type": "BuiltinCommonInstructions::Standard", |
|
1489 | 1493 | "textG": 0, |
1490 | 1494 | "textR": 0 |
1491 | 1495 | }, |
1492 | | - "comment": "Wait a bit.", |
1493 | | - "comment2": "" |
| 1496 | + "comment": "Wait a bit." |
1494 | 1497 | }, |
1495 | 1498 | { |
1496 | 1499 | "type": "BuiltinCommonInstructions::Standard", |
|
1541 | 1544 | "textG": 0, |
1542 | 1545 | "textR": 0 |
1543 | 1546 | }, |
1544 | | - "comment": "Choose a random direction.", |
1545 | | - "comment2": "" |
| 1547 | + "comment": "Choose a random direction." |
1546 | 1548 | }, |
1547 | 1549 | { |
1548 | 1550 | "type": "BuiltinCommonInstructions::Standard", |
|
1591 | 1593 | "textG": 0, |
1592 | 1594 | "textR": 0 |
1593 | 1595 | }, |
1594 | | - "comment": "The pixel-perfect behavior forces the characters to move to the next cell.\nThere is only to give them an impulse in the right direction.", |
1595 | | - "comment2": "" |
| 1596 | + "comment": "The pixel-perfect behavior forces the characters to move to the next cell.\nThere is only to give them an impulse in the right direction." |
1596 | 1597 | }, |
1597 | 1598 | { |
1598 | 1599 | "type": "BuiltinCommonInstructions::Standard", |
|
1711 | 1712 | "ambientLightColorB": 32, |
1712 | 1713 | "ambientLightColorG": 0, |
1713 | 1714 | "ambientLightColorR": 0, |
| 1715 | + "camera3DFarPlaneDistance": 10000, |
| 1716 | + "camera3DFieldOfView": 45, |
| 1717 | + "camera3DNearPlaneDistance": 0.1, |
1714 | 1718 | "followBaseLayerCamera": false, |
1715 | 1719 | "isLightingLayer": false, |
| 1720 | + "isLocked": false, |
1716 | 1721 | "name": "", |
| 1722 | + "renderingType": "", |
1717 | 1723 | "visibility": true, |
1718 | 1724 | "cameras": [ |
1719 | 1725 | { |
|
1764 | 1770 | "name": "TopDownMovementAnimator", |
1765 | 1771 | "previewIconUrl": "https://asset-resources.gdevelop.io/public-resources/Icons/Glyphster Pack/Master/SVG/Arrows/a6026156355ae5f03613b03971e4ddb50d0c95b8901e7a21edc57f33f0032e42_Arrows_thin_arrows_all_directions_cross.svg", |
1766 | 1772 | "shortDescription": "Change the animation according to the movement direction.", |
1767 | | - "version": "0.1.0", |
| 1773 | + "version": "0.1.1", |
1768 | 1774 | "description": "Change the animation according to the movement direction.", |
| 1775 | + "origin": { |
| 1776 | + "identifier": "TopDownMovementAnimator", |
| 1777 | + "name": "gdevelop-extension-store" |
| 1778 | + }, |
1769 | 1779 | "tags": [ |
| 1780 | + "top-down", |
1770 | 1781 | "animation", |
1771 | 1782 | "direction" |
1772 | 1783 | ], |
|
2032 | 2043 | "textG": 0, |
2033 | 2044 | "textR": 0 |
2034 | 2045 | }, |
2035 | | - "comment": "Use a small margin is used to avoid to flicker between 2 directions.", |
2036 | | - "comment2": "" |
| 2046 | + "comment": "Use a small margin is used to avoid to flicker between 2 directions." |
2037 | 2047 | }, |
2038 | 2048 | { |
2039 | 2049 | "type": "BuiltinCommonInstructions::Standard", |
2040 | 2050 | "conditions": [ |
2041 | 2051 | { |
2042 | 2052 | "type": { |
2043 | | - "inverted": true, |
2044 | 2053 | "value": "BuiltinCommonInstructions::CompareNumbers" |
2045 | 2054 | }, |
2046 | 2055 | "parameters": [ |
2047 | | - "abs(Object.Behavior:: DirectionDifference(Object.Behavior::SharedPropertyNewAnimationDirection(), Object.Behavior::PropertyAnimationDirection()))", |
| 2056 | + "abs(Object.Behavior::DirectionDifference(Object.Behavior::SharedPropertyNewAnimationDirection(), Object.Behavior::PropertyAnimationDirection()))", |
2048 | 2057 | ">", |
2049 | 2058 | "0.5 + 0.03125" |
2050 | 2059 | ] |
|
2162 | 2171 | }, |
2163 | 2172 | "parameters": [ |
2164 | 2173 | "Object", |
2165 | | - "Object. Behavior::PropertyAnimationName() + ToString(Object.Behavior::PropertyAnimationDirection())" |
| 2174 | + "Object.Behavior::PropertyAnimationName() + ToString(Object.Behavior::PropertyAnimationDirection())" |
2166 | 2175 | ] |
2167 | 2176 | } |
2168 | 2177 | ] |
|
2487 | 2496 | "textG": 0, |
2488 | 2497 | "textR": 0 |
2489 | 2498 | }, |
2490 | | - "comment": "Change the animation but keep the current frame number.", |
2491 | | - "comment2": "" |
| 2499 | + "comment": "Change the animation but keep the current frame number." |
2492 | 2500 | }, |
2493 | 2501 | { |
2494 | 2502 | "type": "BuiltinCommonInstructions::Standard", |
|
2609 | 2617 | "type": "Number", |
2610 | 2618 | "unit": "DegreeAngle", |
2611 | 2619 | "label": "Angle offset", |
2612 | | - "description": "Setted to 90°, \"Walk0\" becomes the animation for down.", |
| 2620 | + "description": "Set to 90°, \"Walk0\" becomes the animation for down.", |
2613 | 2621 | "group": "Direction", |
2614 | 2622 | "extraInformation": [], |
2615 | 2623 | "hidden": false, |
|
2654 | 2662 | }, |
2655 | 2663 | { |
2656 | 2664 | "author": "Gustavo Marciano", |
2657 | | - "category": "", |
| 2665 | + "category": "Visual effect", |
2658 | 2666 | "extensionNamespace": "", |
2659 | 2667 | "fullName": "YSort", |
2660 | 2668 | "helpPath": "", |
2661 | 2669 | "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNvcnQtYXNjZW5kaW5nIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDE3SDIyTDE4IDIxTDE0IDE3SDE3VjNIMTlNMiAxN0gxMlYxOUgyTTYgNVY3SDJWNU0yIDExSDlWMTNIMlYxMVoiIC8+PC9zdmc+", |
2662 | 2670 | "name": "YSort", |
2663 | 2671 | "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/sort-ascending.svg", |
2664 | 2672 | "shortDescription": "Create an illusion of depth by setting the Z-order based on the Y position of the object. Useful for isometric games, 2D games with a \"Top-Down\" view, RPG...", |
2665 | | - "version": "0.0.1", |
| 2673 | + "version": "0.1.0", |
2666 | 2674 | "description": [ |
2667 | 2675 | "Set the depth (Z-order) of the instance to the value of its Y position in the scene, creating an illusion of depth. The origin point of the object is used to determine the Z-order.", |
2668 | 2676 | "", |
2669 | | - "Useful for isometric games, 2D games with a \"Top-Down\" view, RPG..." |
| 2677 | + "This is useful for:", |
| 2678 | + "- isometric games ([open the project online](https://editor.gdevelop.io/?project=example://isometric-game))", |
| 2679 | + "- top-down games ([open the project online](https://editor.gdevelop.io/?project=example://top-down-grid-movement))" |
2670 | 2680 | ], |
2671 | 2681 | "origin": { |
2672 | 2682 | "identifier": "YSort", |
|
2677 | 2687 | "y-sort", |
2678 | 2688 | "depth", |
2679 | 2689 | "fake-depth", |
2680 | | - "isometric-depth", |
| 2690 | + "isometric", |
2681 | 2691 | "rpg" |
2682 | 2692 | ], |
2683 | 2693 | "authorIds": [], |
|
2693 | 2703 | { |
2694 | 2704 | "fullName": "", |
2695 | 2705 | "functionType": "Action", |
2696 | | - "name": "doStepPreEvents", |
| 2706 | + "name": "doStepPostEvents", |
2697 | 2707 | "sentence": "", |
2698 | 2708 | "events": [ |
| 2709 | + { |
| 2710 | + "type": "BuiltinCommonInstructions::Comment", |
| 2711 | + "color": { |
| 2712 | + "b": 109, |
| 2713 | + "g": 230, |
| 2714 | + "r": 255, |
| 2715 | + "textB": 0, |
| 2716 | + "textG": 0, |
| 2717 | + "textR": 0 |
| 2718 | + }, |
| 2719 | + "comment": "This is done in doStepPostEvents because the sort must happens right before the rendering to avoid a 1 frame delay." |
| 2720 | + }, |
2699 | 2721 | { |
2700 | 2722 | "type": "BuiltinCommonInstructions::Standard", |
2701 | 2723 | "conditions": [], |
|
2761 | 2783 | }, |
2762 | 2784 | "tags": [ |
2763 | 2785 | "pixel perfect", |
| 2786 | + "platformer", |
2764 | 2787 | "platform", |
2765 | | - "top down", |
| 2788 | + "top-down", |
2766 | 2789 | "movement", |
2767 | 2790 | "grid" |
2768 | 2791 | ], |
|
3557 | 3580 | "textG": 0, |
3558 | 3581 | "textR": 0 |
3559 | 3582 | }, |
3560 | | - "comment": "We don't know if the deceleration was already applied or not this step, but if the speed drifted from more than 1%, another extension is probably modifying the speed and it must not be overridden.", |
3561 | | - "comment2": "" |
| 3583 | + "comment": "We don't know if the deceleration was already applied or not this step, but if the speed drifted from more than 1%, another extension is probably modifying the speed and it must not be overridden." |
3562 | 3584 | }, |
3563 | 3585 | { |
3564 | 3586 | "type": "BuiltinCommonInstructions::Standard", |
|
3595 | 3617 | "textG": 0, |
3596 | 3618 | "textR": 0 |
3597 | 3619 | }, |
3598 | | - "comment": "Find how far to go to reach a pixel.", |
3599 | | - "comment2": "" |
| 3620 | + "comment": "Find how far to go to reach a pixel." |
3600 | 3621 | }, |
3601 | 3622 | { |
3602 | 3623 | "type": "BuiltinCommonInstructions::Standard", |
|
3740 | 3761 | "textG": 0, |
3741 | 3762 | "textR": 0 |
3742 | 3763 | }, |
3743 | | - "comment": "Move to the target as the movement behavior would do.", |
3744 | | - "comment2": "" |
| 3764 | + "comment": "Move to the target as the movement behavior would do." |
3745 | 3765 | }, |
3746 | 3766 | { |
3747 | 3767 | "type": "BuiltinCommonInstructions::Standard", |
|
3984 | 4004 | "textG": 0, |
3985 | 4005 | "textR": 0 |
3986 | 4006 | }, |
3987 | | - "comment": "Find how far to go to reach a pixel.", |
3988 | | - "comment2": "" |
| 4007 | + "comment": "Find how far to go to reach a pixel." |
3989 | 4008 | }, |
3990 | 4009 | { |
3991 | 4010 | "type": "BuiltinCommonInstructions::Standard", |
|
4165 | 4184 | "textG": 0, |
4166 | 4185 | "textR": 0 |
4167 | 4186 | }, |
4168 | | - "comment": "Move to the target as the movement behavior would do.", |
4169 | | - "comment2": "" |
| 4187 | + "comment": "Move to the target as the movement behavior would do." |
4170 | 4188 | }, |
4171 | 4189 | { |
4172 | 4190 | "type": "BuiltinCommonInstructions::Standard", |
|
4460 | 4478 | "textG": 0, |
4461 | 4479 | "textR": 0 |
4462 | 4480 | }, |
4463 | | - "comment": "Check if the character is decelerating.\nIt's done in doStepPostEvent because there is no way to know if the doStepPreEvents of this behavior is executed before or after the one of PlatformerCharcter.\nAs TimeDelta is used, we have to be sure the last PlatformerCharcter.doStepPreEvents call used the same TimeDelta. Which means this must be done after PlatformerCharcter.doStepPreEvents.", |
4464 | | - "comment2": "" |
| 4481 | + "comment": "Check if the character is decelerating.\nIt's done in doStepPostEvent because there is no way to know if the doStepPreEvents of this behavior is executed before or after the one of PlatformerCharcter.\nAs TimeDelta is used, we have to be sure the last PlatformerCharcter.doStepPreEvents call used the same TimeDelta. Which means this must be done after PlatformerCharcter.doStepPreEvents." |
4465 | 4482 | }, |
4466 | 4483 | { |
4467 | 4484 | "type": "BuiltinCommonInstructions::Standard", |
|
4535 | 4552 | "textG": 0, |
4536 | 4553 | "textR": 0 |
4537 | 4554 | }, |
4538 | | - "comment": "Save the speed to detect speed changes from outside.", |
4539 | | - "comment2": "" |
| 4555 | + "comment": "Save the speed to detect speed changes from outside." |
4540 | 4556 | }, |
4541 | 4557 | { |
4542 | 4558 | "type": "BuiltinCommonInstructions::Standard", |
|
0 commit comments