From cba9cb7a489dfd192db0c07098da5a03f01ae18d Mon Sep 17 00:00:00 2001 From: HelperWesley <72082749+HelperWesley@users.noreply.github.com> Date: Fri, 7 Nov 2025 21:13:32 -0330 Subject: [PATCH] Updating Starter Games Updating the names of objects and variables in some of the starter projects to be less generic. Also updating the README.md files of those starter games to better describe all mechanics and objects within the games. --- examples/starting-2d-car-racing/README.md | 3 +- .../starting-2d-car-racing.json | 196 ++- examples/starting-2d-driving/README.md | 3 +- .../starting-2d-driving.json | 120 +- .../starting-2d-platformer-shooter/README.md | 2 +- .../starting-2d-platformer-shooter.json | 1207 +++++++++++++---- examples/starting-3D-platformer/README.md | 3 +- .../starting-3D-platformer.json | 170 ++- examples/starting-3d-car-racing/README.md | 3 +- .../starting-3d-car-racing.json | 36 +- .../starting-3d-draggable-tiles/README.md | 3 +- .../starting-3d-draggable-tiles.json | 86 +- examples/starting-3d-driving/README.md | 3 +- .../starting-3d-driving.json | 170 ++- examples/starting-3d-endless-runner/README.md | 3 +- .../starting-3d-endless-runner.json | 57 +- examples/starting-3d-flight-sim/README.md | 3 +- .../starting-3d-flight-sim.json | 80 +- .../README.md | 4 +- ...starting-3d-point-and-click-adventure.json | 104 +- .../starting-3d-rts-unit-selection/README.md | 4 +- .../starting-3d-rts-unit-selection.json | 130 +- examples/starting-3d-shootemup/README.md | 4 +- .../starting-3d-shootemup.json | 58 +- examples/starting-3d-tank/README.md | 6 +- .../starting-3d-tank/starting-3d-tank.json | 50 +- examples/starting-3d-tile-placement/README.md | 3 +- .../starting-3d-tile-placement.json | 102 +- examples/starting-3d-top-down-rpg/README.md | 4 +- .../starting-3d-top-down-rpg.json | 76 +- .../starting-3d-twin-stick-shooter/README.md | 4 +- .../starting-3d-twin-stick-shooter.json | 117 +- .../starting-3d-vampire-survivor/README.md | 4 +- .../starting-3d-vampire-survivor.json | 114 +- .../starting-twin-stick-shooter.json | 70 +- 35 files changed, 1989 insertions(+), 1013 deletions(-) diff --git a/examples/starting-2d-car-racing/README.md b/examples/starting-2d-car-racing/README.md index 3f861f7ca..b772e397b 100644 --- a/examples/starting-2d-car-racing/README.md +++ b/examples/starting-2d-car-racing/README.md @@ -1,4 +1,3 @@ # 2D Racing -A 2D physics-based, top-down, game where the player is controlling a 2D car on a track with a lap counter and time counter. -Support keyboard and mobile controls for the player car. \ No newline at end of file +A top-down 2D car racing game where the player accelerates and steers using keyboard or mobile controls. The car uses physics-based movement and can collide with other physics obstacles in the scene. Checkpoints track the car’s position around the track, count laps completed, and record lap times. A timer measures the duration of each lap, and the UI displays the current lap number and most recent lap time. The engine sound effect increases in volume as the car’s speed increases. \ No newline at end of file diff --git a/examples/starting-2d-car-racing/starting-2d-car-racing.json b/examples/starting-2d-car-racing/starting-2d-car-racing.json index 173e9efbc..c8fd222ae 100644 --- a/examples/starting-2d-car-racing/starting-2d-car-racing.json +++ b/examples/starting-2d-car-racing/starting-2d-car-racing.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -220,15 +220,19 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.2725359896772996, - "windowMask": false + "zoomFactor": 0.26364576737708634, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { - "name": "Hazards", + "name": "Obstacles", "objects": [ { - "name": "Obstacle" + "name": "BushObstacle" + }, + { + "name": "WallObstacle" } ] } @@ -240,7 +244,7 @@ "customSize": false, "height": 0, "layer": "", - "name": "Dust", + "name": "DustParticle", "persistentUuid": "77194782-0159-469f-a96e-5cf664763e22", "width": 0, "x": 1984, @@ -312,7 +316,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Player", + "name": "PlayerCar", "persistentUuid": "7eb1c74a-e7c5-47e9-b3b8-9474f46036ec", "width": 0, "x": 578, @@ -328,7 +332,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "54a7c737-acd6-47e2-9d5f-30d678a00b29", "width": 0, "x": 64, @@ -344,7 +348,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "b114002a-23e2-47ed-a5a7-33dedb6389ca", "width": 0, "x": 0, @@ -360,7 +364,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "f6539a18-8b54-452f-93e9-f416a103e44e", "width": 0, "x": 960, @@ -376,7 +380,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "83f4dc59-b21f-4c97-9069-0b971dbf4d93", "width": 0, "x": 640, @@ -392,7 +396,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "70b29580-2cba-4bed-af9a-d7ba5c4975fe", "width": 0, "x": 768, @@ -408,7 +412,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "975f7463-1e76-417e-ad44-e8d50c5b06a2", "width": 0, "x": 192, @@ -424,7 +428,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "f8c1254b-9e98-4143-9bc8-9ffa1a176200", "width": 0, "x": 512, @@ -535,7 +539,7 @@ "keepRatio": true, "layer": "", "locked": true, - "name": "Wall", + "name": "WallObstacle", "persistentUuid": "0b8c683d-ee86-4adf-908b-9a4a2c48e431", "width": 832, "x": 224, @@ -567,12 +571,12 @@ { "adaptCollisionMaskAutomatically": false, "assetStoreId": "", - "name": "Player", + "name": "PlayerCar", "type": "Sprite", "updateIfNotVisible": false, "variables": [ { - "name": "Lap", + "name": "LapNumber", "type": "number", "value": 0 }, @@ -701,7 +705,7 @@ { "adaptCollisionMaskAutomatically": false, "assetStoreId": "", - "name": "Obstacle", + "name": "BushObstacle", "type": "Sprite", "updateIfNotVisible": false, "variables": [], @@ -774,7 +778,7 @@ "flow": 20, "jumpForwardInTimeOnCreation": 0, "maxParticleNb": 300, - "name": "Dust", + "name": "DustParticle", "particleAlpha1": 204, "particleAlpha2": 0, "particleAlphaRandomness1": 0, @@ -1086,7 +1090,7 @@ "bottomMargin": 10, "height": 32, "leftMargin": 10, - "name": "Wall", + "name": "WallObstacle", "rightMargin": 10, "texture": "assets\\StartingWall.png", "tiled": false, @@ -1169,10 +1173,7 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Player" - }, - { - "objectName": "Obstacle" + "objectName": "PlayerCar" }, { "objectName": "CheckpointArrow" @@ -1181,10 +1182,13 @@ "objectName": "Road" }, { - "objectName": "Wall" + "objectName": "BushObstacle" }, { - "objectName": "Dust" + "objectName": "WallObstacle" + }, + { + "objectName": "DustParticle" }, { "objectName": "LapText" @@ -1232,12 +1236,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()+180", + "PlayerCar.Angle() + 180", "10*TimeDelta()*60", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1261,12 +1265,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()", + "PlayerCar.Angle()", "22*TimeDelta()*60", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1290,9 +1294,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60" + "6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60" ] } ] @@ -1316,9 +1320,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "-6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60" + "-6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60" ] } ] @@ -1343,12 +1347,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()", + "PlayerCar.Angle()", "22*TimeDelta()*60*PedalJoystick.StickForce()", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1373,12 +1377,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()+180", + "PlayerCar.Angle() + 180", "10*TimeDelta()*60*PedalJoystick.StickForce()", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1403,9 +1407,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60*SteeringJoystick.StickForce()" + "6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60 * SteeringJoystick.StickForce()" ] } ] @@ -1430,9 +1434,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "-6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60*SteeringJoystick.StickForce()" + "-6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60 * SteeringJoystick.StickForce()" ] } ] @@ -1445,7 +1449,7 @@ "value": "CollisionNP" }, "parameters": [ - "Player", + "PlayerCar", "Road", "", "", @@ -1465,7 +1469,7 @@ "value": "Physics2::LinearDamping" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", "=", "4" @@ -1482,7 +1486,7 @@ "value": "CollisionNP" }, "parameters": [ - "Player", + "PlayerCar", "Road", "", "", @@ -1496,7 +1500,7 @@ "value": "Physics2::LinearDamping" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", "=", "8" @@ -1557,7 +1561,7 @@ "", "0", "=", - "min((Player.Physics2::LinearVelocity()/300), 1)" + "min((PlayerCar.Physics2::LinearVelocity() / 300), 1)" ] }, { @@ -1568,7 +1572,7 @@ "", "0", "=", - "min((Player.Physics2::LinearVelocity())*10, 25)" + "min((PlayerCar.Physics2::LinearVelocity()) * 10, 25)" ] } ] @@ -1581,9 +1585,9 @@ "value": "Physics2::Collision" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Hazards", + "Obstacles", "" ] }, @@ -1621,11 +1625,11 @@ "value": "MettreXY" }, "parameters": [ - "Dust", + "DustParticle", "=", - "Player.CenterX()", + "PlayerCar.CenterX()", "=", - "Player.CenterY()" + "PlayerCar.CenterY()" ] }, { @@ -1633,9 +1637,9 @@ "value": "SetAngle" }, "parameters": [ - "Dust", + "DustParticle", "=", - "Player.Angle()+180" + "PlayerCar.Angle() + 180" ] } ] @@ -1645,6 +1649,7 @@ "colorG": 176, "colorR": 74, "creationTime": 0, + "folded": true, "name": "Racing", "source": "", "type": "BuiltinCommonInstructions::Group", @@ -1667,7 +1672,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "SceneInstancesCount(CheckpointArrow)" @@ -1692,8 +1697,8 @@ }, "parameters": [ "CheckpointArrow", - "Player.CenterX()", - "Player.CenterY()", + "PlayerCar.CenterX()", + "PlayerCar.CenterY()", "" ] }, @@ -1702,7 +1707,7 @@ "value": "BuiltinCommonInstructions::CompareNumbers" }, "parameters": [ - "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(Player))", + "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(PlayerCar))", "<", "90" ] @@ -1712,7 +1717,7 @@ "value": "BuiltinCommonInstructions::CompareNumbers" }, "parameters": [ - "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(Player))", + "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(PlayerCar))", ">", "-90" ] @@ -1731,7 +1736,7 @@ "CheckpointArrow", "Checkpoint", "=", - "Player.LastCheckPoint+1" + "PlayerCar.LastCheckPoint + 1" ] } ], @@ -1741,7 +1746,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "CheckpointArrow.Checkpoint" @@ -1768,7 +1773,7 @@ "value": "NumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "SceneInstancesCount(CheckpointArrow)" @@ -1781,7 +1786,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "1" @@ -1792,8 +1797,8 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", - "Lap", + "PlayerCar", + "LapNumber", "+", "1" ] @@ -1803,7 +1808,7 @@ "value": "ResetObjectTimer" }, "parameters": [ - "Player", + "PlayerCar", "\"LapTimer\"" ] } @@ -1823,7 +1828,7 @@ "LapText", "Text", "=", - "\"Time: \" + ToString(roundTo(Player.ObjectTimerElapsedTime(\"LapTimer\"), 1)) + \"\nLap: \" + Player.Lap" + "\"Time: \" + ToString(roundTo(PlayerCar.ObjectTimerElapsedTime(\"LapTimer\"), 1)) + \"\nLap: \" + PlayerCar.LapNumber" ] } ] @@ -1893,43 +1898,7 @@ "renderingType": "", "visibility": true, "cameras": [], - "effects": [ - { - "effectType": "Scene3D::HemisphereLight", - "name": "3D Ambient Hemisphere Light", - "doubleParameters": { - "elevation": 40, - "intensity": 0.33, - "rotation": 300 - }, - "stringParameters": { - "groundColor": "127;127;127", - "skyColor": "255;255;255", - "top": "Z+" - }, - "booleanParameters": {} - }, - { - "effectType": "Scene3D::DirectionalLight", - "name": "3D Sun Light", - "doubleParameters": { - "distanceFromCamera": 1500, - "elevation": 40, - "frustumSize": 4000, - "intensity": 0.75, - "minimumShadowBias": 0, - "rotation": 300 - }, - "stringParameters": { - "color": "255;255;255", - "shadowQuality": "medium", - "top": "Z+" - }, - "booleanParameters": { - "isCastingShadow": true - } - } - ] + "effects": [] } ], "behaviorsSharedData": [ @@ -7944,6 +7913,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-2d-driving/README.md b/examples/starting-2d-driving/README.md index d7ce6ab0b..e6330dcca 100644 --- a/examples/starting-2d-driving/README.md +++ b/examples/starting-2d-driving/README.md @@ -1,4 +1,3 @@ # 2D Driving -A 2D physics-based, top-down, game where the player is controlling a 2D car. -It has some obstacles that can be pushed away. Support keyboard and mobile controls for the player car. \ No newline at end of file +A top-down 2D car driving game where the player accelerates and steers using keyboard or mobile controls. The car uses physics-based movement and can collide with other physics obstacles in the scene. The engine sound effect increases in volume as the car’s speed increases. \ No newline at end of file diff --git a/examples/starting-2d-driving/starting-2d-driving.json b/examples/starting-2d-driving/starting-2d-driving.json index 4805693d6..0d83ac72a 100644 --- a/examples/starting-2d-driving/starting-2d-driving.json +++ b/examples/starting-2d-driving/starting-2d-driving.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -188,7 +188,7 @@ "title": "", "v": 255, "uiSettings": { - "grid": true, + "grid": false, "gridType": "rectangular", "gridWidth": 64, "gridHeight": 64, @@ -196,16 +196,17 @@ "gridOffsetY": 0, "gridColor": 10401023, "gridAlpha": 0.8, - "snap": true, - "zoomFactor": 0.35534345588170596, - "windowMask": false + "snap": false, + "zoomFactor": 0.2912258866911175, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { - "name": "Hazards", + "name": "Obstacles", "objects": [ { - "name": "Obstacle" + "name": "BushObstacle" } ] } @@ -217,7 +218,7 @@ "customSize": false, "height": 0, "layer": "", - "name": "Dust", + "name": "DustParticle", "persistentUuid": "77194782-0159-469f-a96e-5cf664763e22", "width": 0, "x": 1984, @@ -289,7 +290,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Player", + "name": "PlayerCar", "persistentUuid": "7eb1c74a-e7c5-47e9-b3b8-9474f46036ec", "width": 0, "x": 128, @@ -305,7 +306,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "54a7c737-acd6-47e2-9d5f-30d678a00b29", "width": 0, "x": 64, @@ -321,7 +322,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "b114002a-23e2-47ed-a5a7-33dedb6389ca", "width": 0, "x": 0, @@ -337,7 +338,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "f6539a18-8b54-452f-93e9-f416a103e44e", "width": 0, "x": 960, @@ -353,7 +354,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "83f4dc59-b21f-4c97-9069-0b971dbf4d93", "width": 0, "x": 640, @@ -369,7 +370,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "70b29580-2cba-4bed-af9a-d7ba5c4975fe", "width": 0, "x": 768, @@ -385,7 +386,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "975f7463-1e76-417e-ad44-e8d50c5b06a2", "width": 0, "x": 192, @@ -401,7 +402,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "BushObstacle", "persistentUuid": "f8c1254b-9e98-4143-9bc8-9ffa1a176200", "width": 0, "x": 512, @@ -416,7 +417,7 @@ { "adaptCollisionMaskAutomatically": false, "assetStoreId": "", - "name": "Player", + "name": "PlayerCar", "type": "Sprite", "updateIfNotVisible": false, "variables": [], @@ -539,7 +540,7 @@ { "adaptCollisionMaskAutomatically": false, "assetStoreId": "", - "name": "Obstacle", + "name": "BushObstacle", "type": "Sprite", "updateIfNotVisible": false, "variables": [], @@ -612,7 +613,7 @@ "flow": 20, "jumpForwardInTimeOnCreation": 0, "maxParticleNb": 300, - "name": "Dust", + "name": "DustParticle", "particleAlpha1": 204, "particleAlpha2": 0, "particleAlphaRandomness1": 0, @@ -847,16 +848,16 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Player" + "objectName": "PlayerCar" }, { - "objectName": "Obstacle" + "objectName": "BushObstacle" }, { "objectName": "Road" }, { - "objectName": "Dust" + "objectName": "DustParticle" }, { "folderName": "Mobile Controls", @@ -901,12 +902,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()+180", + "PlayerCar.Angle() + 180", "10*TimeDelta()*60", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -930,12 +931,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()", + "PlayerCar.Angle()", "22*TimeDelta()*60", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -959,9 +960,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60" + "6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60" ] } ] @@ -985,9 +986,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "-6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60" + "-6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60" ] } ] @@ -1012,12 +1013,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()", + "PlayerCar.Angle()", "22*TimeDelta()*60*PedalJoystick.StickForce()", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1042,12 +1043,12 @@ "value": "Physics2::ApplyPolarForce" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Player.Angle()+180", + "PlayerCar.Angle() + 180", "10*TimeDelta()*60*PedalJoystick.StickForce()", - "Player.CenterX()", - "Player.CenterY()" + "PlayerCar.CenterX()", + "PlayerCar.CenterY()" ] } ] @@ -1072,9 +1073,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60*SteeringJoystick.StickForce()" + "6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60 * SteeringJoystick.StickForce()" ] } ] @@ -1099,9 +1100,9 @@ "value": "Physics2::ApplyTorque" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "-6*(Player.Physics2::LinearVelocity()/400)*TimeDelta()*60*SteeringJoystick.StickForce()" + "-6 * (PlayerCar.Physics2::LinearVelocity() / 400) * TimeDelta() * 60 * SteeringJoystick.StickForce()" ] } ] @@ -1114,7 +1115,7 @@ "value": "CollisionNP" }, "parameters": [ - "Player", + "PlayerCar", "Road", "", "", @@ -1134,7 +1135,7 @@ "value": "Physics2::LinearDamping" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", "=", "4" @@ -1151,7 +1152,7 @@ "value": "CollisionNP" }, "parameters": [ - "Player", + "PlayerCar", "Road", "", "", @@ -1165,7 +1166,7 @@ "value": "Physics2::LinearDamping" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", "=", "8" @@ -1226,7 +1227,7 @@ "", "0", "=", - "min((Player.Physics2::LinearVelocity()/300), 1)" + "min((PlayerCar.Physics2::LinearVelocity() / 300), 1)" ] }, { @@ -1237,7 +1238,7 @@ "", "0", "=", - "min((Player.Physics2::LinearVelocity())*10, 25)" + "min((PlayerCar.Physics2::LinearVelocity()) * 10, 25)" ] } ] @@ -1250,9 +1251,9 @@ "value": "Physics2::Collision" }, "parameters": [ - "Player", + "PlayerCar", "Physics2", - "Hazards", + "Obstacles", "" ] }, @@ -1290,11 +1291,11 @@ "value": "MettreXY" }, "parameters": [ - "Dust", + "DustParticle", "=", - "Player.CenterX()", + "PlayerCar.CenterX()", "=", - "Player.CenterY()" + "PlayerCar.CenterY()" ] }, { @@ -1302,9 +1303,9 @@ "value": "SetAngle" }, "parameters": [ - "Dust", + "DustParticle", "=", - "Player.Angle()+180" + "PlayerCar.Angle() + 180" ] } ] @@ -7365,6 +7366,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-2d-platformer-shooter/README.md b/examples/starting-2d-platformer-shooter/README.md index b49b50a1f..2d48a39de 100644 --- a/examples/starting-2d-platformer-shooter/README.md +++ b/examples/starting-2d-platformer-shooter/README.md @@ -1,3 +1,3 @@ # 2D Platformer Shooter -A 2D Mega Man-like starter game where the player controls a character who can jump on platforms and shoot bullets that can hit enemies. Support for mobile and keyboard controls. \ No newline at end of file +A 2D side-scrolling platformer where the player can move left or right, jump, and fall down. The player can fire bullets that travel in the direction the character is facing, and the character’s sprite flips when changing direction. Bullets can collide with target objects and destroy them upon collision. The game supports both keyboard and mobile controls for both movement and shooting. \ No newline at end of file diff --git a/examples/starting-2d-platformer-shooter/starting-2d-platformer-shooter.json b/examples/starting-2d-platformer-shooter/starting-2d-platformer-shooter.json index 162c1e855..829a17a3d 100644 --- a/examples/starting-2d-platformer-shooter/starting-2d-platformer-shooter.json +++ b/examples/starting-2d-platformer-shooter/starting-2d-platformer-shooter.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 239, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-platformer", "version": "1.0.0", - "name": "starting_megamanshooter", + "name": "starting-2d-platformer-shooter", "description": "", "author": "", "windowWidth": 1280, @@ -210,7 +210,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.5843784410740976, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], "variables": [], @@ -221,7 +222,7 @@ "height": 78.99999999999999, "keepRatio": true, "layer": "", - "name": "Platformer_Character", + "name": "Player", "persistentUuid": "4ded1d81-e820-41d3-868a-3f314e5850bd", "width": 79, "x": 608, @@ -255,7 +256,7 @@ "keepRatio": true, "layer": "MobileControls", "locked": true, - "name": "Joystick", + "name": "MovementJoystick", "persistentUuid": "855d809a-f954-4072-86d5-1d6f0b24a066", "width": 0, "x": 176, @@ -405,7 +406,7 @@ { "adaptCollisionMaskAutomatically": false, "assetStoreId": "", - "name": "Platformer_Character", + "name": "Player", "type": "Sprite", "updateIfNotVisible": false, "variables": [], @@ -699,7 +700,7 @@ }, { "assetStoreId": "e71bd69f896d6c7531b48c65ceb5da25071d4fbdeb518aeceecba8d21f34ed8d", - "name": "Joystick", + "name": "MovementJoystick", "type": "SpriteMultitouchJoystick::SpriteMultitouchJoystick", "variant": "", "variables": [], @@ -1019,7 +1020,7 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Platformer_Character" + "objectName": "Player" }, { "objectName": "Platform_Ground" @@ -1037,7 +1038,7 @@ "folderName": "Mobile Controls", "children": [ { - "objectName": "Joystick" + "objectName": "MovementJoystick" }, { "objectName": "JumpButton" @@ -1100,7 +1101,7 @@ "value": "FlippableCapability::FlippableBehavior::FlippedX" }, "parameters": [ - "Platformer_Character", + "Player", "Flippable" ] } @@ -1111,10 +1112,10 @@ "value": "FireBullet::FireBullet::Fire" }, "parameters": [ - "Platformer_Character", + "Player", "FireBullet", - "Platformer_Character.CenterX()", - "Platformer_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "Bullet", "180", "500", @@ -1132,7 +1133,7 @@ "value": "FlippableCapability::FlippableBehavior::FlippedX" }, "parameters": [ - "Platformer_Character", + "Player", "Flippable" ] } @@ -1143,10 +1144,10 @@ "value": "FireBullet::FireBullet::Fire" }, "parameters": [ - "Platformer_Character", + "Player", "FireBullet", - "Platformer_Character.CenterX()", - "Platformer_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "Bullet", "0", "500", @@ -2464,12 +2465,27 @@ "value": "Idle", "type": "Choice", "label": "State", - "extraInformation": [ - "Idle", - "Hovered", - "PressedInside", - "PressedOutside", - "Validated" + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Hovered", + "value": "Hovered" + }, + { + "label": "PressedInside", + "value": "PressedInside" + }, + { + "label": "PressedOutside", + "value": "PressedOutside" + }, + { + "label": "Validated", + "value": "Validated" + } ], "hidden": true, "name": "State" @@ -3008,6 +3024,7 @@ "extraInformation": [ "ButtonStates::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -3017,6 +3034,7 @@ "extraInformation": [ "EffectCapability::EffectBehavior" ], + "choices": [], "name": "Effect" }, { @@ -3456,6 +3474,7 @@ "extraInformation": [ "AnimatableCapability::AnimatableBehavior" ], + "choices": [], "name": "Animation" }, { @@ -3465,6 +3484,7 @@ "extraInformation": [ "ButtonStates::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -4858,6 +4878,7 @@ "extraInformation": [ "ButtonStates::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -4867,6 +4888,7 @@ "extraInformation": [ "EffectCapability::EffectBehavior" ], + "choices": [], "name": "Effect" }, { @@ -4911,40 +4933,139 @@ "type": "Choice", "label": "Fade-in easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeInEasing" }, @@ -4953,40 +5074,139 @@ "type": "Choice", "label": "Fade-out easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeOutEasing" }, @@ -5010,10 +5230,19 @@ "value": "Idle", "type": "Choice", "label": "", - "extraInformation": [ - "Idle", - "Focused", - "Pressed" + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Focused", + "value": "Focused" + }, + { + "label": "Pressed", + "value": "Pressed" + } ], "hidden": true, "name": "PreviousState" @@ -5043,10 +5272,19 @@ "value": "NoTween", "type": "Choice", "label": "", - "extraInformation": [ - "NoTween", - "FadeIn", - "FadeOut" + "choices": [ + { + "label": "NoTween", + "value": "NoTween" + }, + { + "label": "FadeIn", + "value": "FadeIn" + }, + { + "label": "FadeOut", + "value": "FadeOut" + } ], "hidden": true, "name": "TweenState" @@ -6001,6 +6239,7 @@ "extraInformation": [ "ScalableCapability::ScalableBehavior" ], + "choices": [], "name": "Scale" }, { @@ -6010,6 +6249,7 @@ "extraInformation": [ "ButtonStates::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -6019,6 +6259,7 @@ "extraInformation": [ "Tween::TweenBehavior" ], + "choices": [], "name": "Tween" }, { @@ -6067,40 +6308,139 @@ "type": "Choice", "label": "Fade-in easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeInEasing" }, @@ -6109,40 +6449,139 @@ "type": "Choice", "label": "Fade-out easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeOutEasing" }, @@ -6150,10 +6589,19 @@ "value": "Idle", "type": "Choice", "label": "", - "extraInformation": [ - "Idle", - "Focused", - "Pressed" + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Focused", + "value": "Focused" + }, + { + "label": "Pressed", + "value": "Pressed" + } ], "hidden": true, "name": "PreviousState" @@ -7115,6 +7563,7 @@ "extraInformation": [ "ButtonStates::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -7124,6 +7573,7 @@ "extraInformation": [ "Tween::TweenBehavior" ], + "choices": [], "name": "Tween" }, { @@ -7169,40 +7619,139 @@ "type": "Choice", "label": "Fade-in easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeInEasing" }, @@ -7211,40 +7760,139 @@ "type": "Choice", "label": "Fade-out easing", "group": "Speed", - "extraInformation": [ - "linear", - "easeInQuad", - "easeOutQuad", - "easeInOutQuad", - "easeInCubic", - "easeOutCubic", - "easeInOutCubic", - "easeInQuart", - "easeOutQuart", - "easeInOutQuart", - "easeInQuint", - "easeOutQuint", - "easeInOutQuint", - "easeInOutSine", - "easeInExpo", - "easeOutExpo", - "easeInOutExpo", - "easeInCirc", - "easeOutCirc", - "easeInOutCirc", - "easeOutBounce", - "easeInBack", - "easeOutBack", - "easeInOutBack", - "elastic", - "swingFromTo", - "swingFrom", - "swingTo", - "bounce", - "bouncePast", - "easeFromTo", - "easeFrom", - "easeTo" + "choices": [ + { + "label": "linear", + "value": "linear" + }, + { + "label": "easeInQuad", + "value": "easeInQuad" + }, + { + "label": "easeOutQuad", + "value": "easeOutQuad" + }, + { + "label": "easeInOutQuad", + "value": "easeInOutQuad" + }, + { + "label": "easeInCubic", + "value": "easeInCubic" + }, + { + "label": "easeOutCubic", + "value": "easeOutCubic" + }, + { + "label": "easeInOutCubic", + "value": "easeInOutCubic" + }, + { + "label": "easeInQuart", + "value": "easeInQuart" + }, + { + "label": "easeOutQuart", + "value": "easeOutQuart" + }, + { + "label": "easeInOutQuart", + "value": "easeInOutQuart" + }, + { + "label": "easeInQuint", + "value": "easeInQuint" + }, + { + "label": "easeOutQuint", + "value": "easeOutQuint" + }, + { + "label": "easeInOutQuint", + "value": "easeInOutQuint" + }, + { + "label": "easeInOutSine", + "value": "easeInOutSine" + }, + { + "label": "easeInExpo", + "value": "easeInExpo" + }, + { + "label": "easeOutExpo", + "value": "easeOutExpo" + }, + { + "label": "easeInOutExpo", + "value": "easeInOutExpo" + }, + { + "label": "easeInCirc", + "value": "easeInCirc" + }, + { + "label": "easeOutCirc", + "value": "easeOutCirc" + }, + { + "label": "easeInOutCirc", + "value": "easeInOutCirc" + }, + { + "label": "easeOutBounce", + "value": "easeOutBounce" + }, + { + "label": "easeInBack", + "value": "easeInBack" + }, + { + "label": "easeOutBack", + "value": "easeOutBack" + }, + { + "label": "easeInOutBack", + "value": "easeInOutBack" + }, + { + "label": "elastic", + "value": "elastic" + }, + { + "label": "swingFromTo", + "value": "swingFromTo" + }, + { + "label": "swingFrom", + "value": "swingFrom" + }, + { + "label": "swingTo", + "value": "swingTo" + }, + { + "label": "bounce", + "value": "bounce" + }, + { + "label": "bouncePast", + "value": "bouncePast" + }, + { + "label": "easeFromTo", + "value": "easeFromTo" + }, + { + "label": "easeFrom", + "value": "easeFrom" + }, + { + "label": "easeTo", + "value": "easeTo" + } ], "name": "FadeOutEasing" }, @@ -7252,10 +7900,19 @@ "value": "Idle", "type": "Choice", "label": "", - "extraInformation": [ - "Idle", - "Focused", - "Pressed" + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Focused", + "value": "Focused" + }, + { + "label": "Pressed", + "value": "Pressed" + } ], "hidden": true, "name": "PreviousState" @@ -10359,6 +11016,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "Property" }, { @@ -10372,9 +11030,15 @@ "type": "Choice", "label": "Joystick name", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -10909,6 +11573,7 @@ "extraInformation": [ "TopDownMovementBehavior::TopDownMovementBehavior" ], + "choices": [], "name": "TopDownMovement" }, { @@ -10921,9 +11586,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -10932,10 +11603,19 @@ "type": "Choice", "label": "Stick mode", "group": "Controls", - "extraInformation": [ - "Analog", - "360°", - "8 Directions" + "choices": [ + { + "label": "Analog", + "value": "Analog" + }, + { + "label": "360°", + "value": "360°" + }, + { + "label": "8 Directions", + "value": "8 Directions" + } ], "name": "StickMode" } @@ -11060,6 +11740,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -11954,9 +12635,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -11975,6 +12662,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbAnchorOrigin" }, @@ -11994,6 +12682,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbIsScaledProportionally" }, @@ -17125,6 +17814,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "PlatformerCharacter" }, { @@ -17134,6 +17824,7 @@ "extraInformation": [ "SmoothCamera::SmoothCamera" ], + "choices": [], "name": "SmoothCamera" }, { @@ -22170,6 +22861,7 @@ "Linear", "Exponential" ], + "choices": [], "advanced": true, "name": "ExponentialCoolingRate" }, @@ -23514,6 +24206,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "PlatformerBehavior" }, { @@ -23523,6 +24216,7 @@ "extraInformation": [ "AnimatableCapability::AnimatableBehavior" ], + "choices": [], "name": "Animation" }, { @@ -23532,6 +24226,7 @@ "extraInformation": [ "FlippableCapability::FlippableBehavior" ], + "choices": [], "name": "Flippable" } ], diff --git a/examples/starting-3D-platformer/README.md b/examples/starting-3D-platformer/README.md index 01c587af8..88ecaca89 100644 --- a/examples/starting-3D-platformer/README.md +++ b/examples/starting-3D-platformer/README.md @@ -1,4 +1,3 @@ # 3D Platformer -A 3D, physics-based, platformer starter game. It has a ground and platforms where the player can jump or which can be pushed, as well as coins to collect. -The camera moves around the player. It has mobile and mouse/keyboard controls. \ No newline at end of file +A 3D physics-based platformer where the player controls a character that can move forward, backward, left, and right, as well as jump and fall. The player can push a 3D physics box, jump on and collide with static boxes, and collect coin objects. A third-person camera follows behind the player, but can also be manually controlled by the player. The game supports both keyboard and mouse controls as well as mobile touch controls. \ No newline at end of file diff --git a/examples/starting-3D-platformer/starting-3D-platformer.json b/examples/starting-3D-platformer/starting-3D-platformer.json index decc91de6..ee258b7c5 100644 --- a/examples/starting-3D-platformer/starting-3D-platformer.json +++ b/examples/starting-3D-platformer/starting-3D-platformer.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 237, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "", "version": "1.0.0", - "name": "3D Platformer Game", + "name": "starting-3D-platformer", "description": "", "author": "", "windowWidth": 1280, @@ -220,7 +220,7 @@ "title": "", "v": 255, "uiSettings": { - "grid": true, + "grid": false, "gridType": "rectangular", "gridWidth": 64, "gridHeight": 64, @@ -228,9 +228,10 @@ "gridOffsetY": 0, "gridColor": 10401023, "gridAlpha": 0.8, - "snap": true, + "snap": false, "zoomFactor": 0.43357743047025415, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], "variables": [ @@ -752,6 +753,7 @@ "LockedCameraAngle": false }, { + "isFolded": true, "name": "Platformer3DMultitouchMapper", "type": "SpriteMultitouchJoystick::Platformer3DMultitouchMapper", "PhysicsCharacter3D": "PhysicsCharacter3D", @@ -3054,6 +3056,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -3266,6 +3269,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -5497,6 +5501,7 @@ "extraInformation": [ "Scene3D::Base3DBehavior" ], + "choices": [], "name": "Object3D" }, { @@ -10256,6 +10261,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "Property" }, { @@ -10269,9 +10275,15 @@ "type": "Choice", "label": "Joystick name", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -10392,6 +10404,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -10405,9 +10418,15 @@ "type": "Choice", "label": "Walk joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -10517,6 +10536,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -10530,9 +10550,15 @@ "type": "Choice", "label": "Walk joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -11475,6 +11501,7 @@ "extraInformation": [ "Scene3D::Base3DBehavior" ], + "choices": [], "name": "Object3D" }, { @@ -11488,9 +11515,15 @@ "type": "Choice", "label": "Camera joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "CameraStick" }, @@ -11706,6 +11739,7 @@ "extraInformation": [ "Physics3D::PhysicsCar3D" ], + "choices": [], "name": "PhysicsCar3D" }, { @@ -11719,9 +11753,15 @@ "type": "Choice", "label": "Steer joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "SteerJoystickIdentifier" }, @@ -11730,9 +11770,15 @@ "type": "Choice", "label": "Speed joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "SpeedJoystickIdentifier" }, @@ -12265,6 +12311,7 @@ "extraInformation": [ "TopDownMovementBehavior::TopDownMovementBehavior" ], + "choices": [], "name": "TopDownMovement" }, { @@ -12277,9 +12324,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -12288,10 +12341,19 @@ "type": "Choice", "label": "Stick mode", "group": "Controls", - "extraInformation": [ - "Analog", - "360°", - "8 Directions" + "choices": [ + { + "label": "Analog", + "value": "Analog" + }, + { + "label": "360°", + "value": "360°" + }, + { + "label": "8 Directions", + "value": "8 Directions" + } ], "name": "StickMode" } @@ -12416,6 +12478,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -13540,9 +13603,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -13561,6 +13630,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbAnchorOrigin" }, @@ -13580,6 +13650,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbIsScaledProportionally" }, @@ -15027,6 +15098,7 @@ "extraInformation": [ "Scene3D::Base3DBehavior" ], + "choices": [], "name": "Object3D" }, { @@ -15765,6 +15837,7 @@ "extraInformation": [ "SpriteToggleSwitch::ButtonFSM" ], + "choices": [], "name": "ButtonFSM" }, { @@ -16883,12 +16956,27 @@ "value": "Idle", "type": "Choice", "label": "State", - "extraInformation": [ - "Idle", - "Hovered", - "PressedInside", - "PressedOutside", - "Validated" + "choices": [ + { + "label": "Idle", + "value": "Idle" + }, + { + "label": "Hovered", + "value": "Hovered" + }, + { + "label": "PressedInside", + "value": "PressedInside" + }, + { + "label": "PressedOutside", + "value": "PressedOutside" + }, + { + "label": "Validated", + "value": "Validated" + } ], "hidden": true, "name": "State" @@ -17049,6 +17137,7 @@ "initialVariables": [] } ], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -18284,7 +18373,8 @@ "stringProperties": [], "initialVariables": [] } - ] + ], + "editionSettings": {} } ] } diff --git a/examples/starting-3d-car-racing/README.md b/examples/starting-3d-car-racing/README.md index 17ccfc646..4cd9291c1 100644 --- a/examples/starting-3d-car-racing/README.md +++ b/examples/starting-3d-car-racing/README.md @@ -1,4 +1,3 @@ # 3D Racing -A 3D physics-based game where the player is controlling a 3D car on a track with a lap counter and time counter. It has a ramp on the track where the car can jump. -Support keyboard and mobile controls for the player car. \ No newline at end of file +A 3D car racing game with a third-person camera view. The player accelerates and steers using keyboard or mobile controls. The car uses physics-based movement and can collide with other physics obstacles in the 3D environment. Checkpoints track the car’s position around the track, count completed laps, and measure lap times. A timer records each lap’s duration, and the UI displays the current lap number and most recent lap time. \ No newline at end of file diff --git a/examples/starting-3d-car-racing/starting-3d-car-racing.json b/examples/starting-3d-car-racing/starting-3d-car-racing.json index 23e636e0f..26eecc443 100644 --- a/examples/starting-3d-car-racing/starting-3d-car-racing.json +++ b/examples/starting-3d-car-racing/starting-3d-car-racing.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 243, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -287,7 +287,7 @@ "depth": 33, "height": 39, "layer": "", - "name": "Player", + "name": "PlayerCar", "persistentUuid": "31232cc0-c2cd-4841-8233-8189786cb81f", "width": 74, "x": 640, @@ -883,7 +883,7 @@ }, { "assetStoreId": "cddab55130dbd5a0b36f763200e876fb514aa608e1b057a136ebdb5f80006e2c", - "name": "Player", + "name": "PlayerCar", "type": "Scene3D::Model3DObject", "variables": [ { @@ -892,7 +892,7 @@ "value": 0 }, { - "name": "Lap", + "name": "LapNumber", "type": "number", "value": 0 } @@ -1419,7 +1419,7 @@ "objectName": "CheckpointArrow" }, { - "objectName": "Player" + "objectName": "PlayerCar" }, { "objectName": "TrafficCone" @@ -1462,7 +1462,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "SceneInstancesCount(CheckpointArrow)" @@ -1487,8 +1487,8 @@ }, "parameters": [ "CheckpointArrow", - "Player.CenterX()", - "Player.CenterY()", + "PlayerCar.CenterX()", + "PlayerCar.CenterY()", "" ] }, @@ -1497,7 +1497,7 @@ "value": "BuiltinCommonInstructions::CompareNumbers" }, "parameters": [ - "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(Player))", + "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(PlayerCar))", "<", "90" ] @@ -1507,7 +1507,7 @@ "value": "BuiltinCommonInstructions::CompareNumbers" }, "parameters": [ - "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(Player))", + "AngleDifference(AngleBetweenPositions(CheckpointArrow.CenterX(), CheckpointArrow.CenterY(), CheckpointArrow.PointX(\"TravelDirection\"), CheckpointArrow.PointY(\"TravelDirection\")), CheckpointArrow.AngleToObject(PlayerCar))", ">", "-90" ] @@ -1526,7 +1526,7 @@ "CheckpointArrow", "Checkpoint", "=", - "Player.LastCheckPoint+1" + "PlayerCar.LastCheckPoint + 1" ] } ], @@ -1536,7 +1536,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "CheckpointArrow.Checkpoint" @@ -1563,7 +1563,7 @@ "value": "NumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "SceneInstancesCount(CheckpointArrow)" @@ -1576,7 +1576,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", + "PlayerCar", "LastCheckPoint", "=", "1" @@ -1587,8 +1587,8 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Player", - "Lap", + "PlayerCar", + "LapNumber", "+", "1" ] @@ -1598,7 +1598,7 @@ "value": "ResetObjectTimer" }, "parameters": [ - "Player", + "PlayerCar", "\"LapTimer\"" ] } @@ -1618,7 +1618,7 @@ "LapText", "Text", "=", - "\"Time: \" + ToString(roundTo(Player.ObjectTimerElapsedTime(\"LapTimer\"), 1)) + \"\nLap: \" + Player.Lap" + "\"Time: \" + ToString(roundTo(PlayerCar.ObjectTimerElapsedTime(\"LapTimer\"), 1)) + \"\nLap: \" + PlayerCar.LapNumber" ] } ] diff --git a/examples/starting-3d-draggable-tiles/README.md b/examples/starting-3d-draggable-tiles/README.md index 384360e32..8a0a7a68e 100644 --- a/examples/starting-3d-draggable-tiles/README.md +++ b/examples/starting-3d-draggable-tiles/README.md @@ -1,4 +1,3 @@ # Board game with draggable tiles -A 3D board game where 3 different kind of tiles can be dragged on the grid of the board. A tile can't be dragged if another tile is already present on a cell of the board. -Support for both mouse and mobile controls. \ No newline at end of file +A 3D board game-style game with pieces represented as 3D models placed on a grid. Players can pick up and drag pieces to different tiles using a mouse or mobile touch controls. The system prevents multiple pieces from occupying the same grid space and supports multiple distinct game piece types that can be picked up and moved in the scene. \ No newline at end of file diff --git a/examples/starting-3d-draggable-tiles/starting-3d-draggable-tiles.json b/examples/starting-3d-draggable-tiles/starting-3d-draggable-tiles.json index e3c60c591..b7c11659a 100644 --- a/examples/starting-3d-draggable-tiles/starting-3d-draggable-tiles.json +++ b/examples/starting-3d-draggable-tiles/starting-3d-draggable-tiles.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3ddraggabletiles", + "name": "starting-3d-draggable-tiles", "description": "", "author": "", "windowWidth": 1280, @@ -182,12 +182,13 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.31119749424452253, - "windowMask": false + "zoomFactor": 0.35534345588170113, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { - "name": "Pieces", + "name": "DraggablePiece", "objects": [ { "name": "Unit" @@ -247,7 +248,7 @@ "height": 704, "layer": "", "locked": true, - "name": "Tiles", + "name": "PlacementGrid", "persistentUuid": "d8a84d05-190d-4afb-a70d-56adf0d454dc", "width": 1152, "x": 64, @@ -511,11 +512,11 @@ "topFaceResourceName": "", "bottomFaceResourceName": "", "frontFaceVisible": true, - "backFaceVisible": true, - "leftFaceVisible": true, - "rightFaceVisible": true, - "topFaceVisible": true, - "bottomFaceVisible": true, + "backFaceVisible": false, + "leftFaceVisible": false, + "rightFaceVisible": false, + "topFaceVisible": false, + "bottomFaceVisible": false, "frontFaceResourceRepeat": true, "backFaceResourceRepeat": false, "leftFaceResourceRepeat": false, @@ -656,7 +657,7 @@ }, { "assetStoreId": "", - "name": "Tiles", + "name": "PlacementGrid", "type": "Scene3D::Cube3DObject", "variables": [], "effects": [], @@ -675,11 +676,11 @@ "topFaceResourceName": "", "bottomFaceResourceName": "", "frontFaceVisible": true, - "backFaceVisible": true, - "leftFaceVisible": true, - "rightFaceVisible": true, - "topFaceVisible": true, - "bottomFaceVisible": true, + "backFaceVisible": false, + "leftFaceVisible": false, + "rightFaceVisible": false, + "topFaceVisible": false, + "bottomFaceVisible": false, "frontFaceResourceRepeat": true, "backFaceResourceRepeat": false, "leftFaceResourceRepeat": false, @@ -709,7 +710,7 @@ "objectName": "Ground" }, { - "objectName": "Tiles" + "objectName": "PlacementGrid" }, { "objectName": "Camera" @@ -747,10 +748,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastXPosition", "=", - "Pieces.X()" + "DraggablePiece.X()" ] }, { @@ -758,10 +759,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastYPosition", "=", - "Pieces.Y()" + "DraggablePiece.Y()" ] } ] @@ -774,7 +775,7 @@ "value": "DraggableBehavior::Dropped" }, "parameters": [ - "Pieces", + "DraggablePiece", "Draggable" ] } @@ -786,7 +787,7 @@ }, "parameters": [ "", - "Pieces", + "DraggablePiece", "64", "64", "32", @@ -799,9 +800,9 @@ "value": "SetNumberVariable" }, "parameters": [ - "NewLocationX", + "NewXPosition", "=", - "Pieces.X()" + "DraggablePiece.X()" ] }, { @@ -809,9 +810,9 @@ "value": "SetNumberVariable" }, "parameters": [ - "NewLocationY", + "NewYPosition", "=", - "Pieces.Y()" + "DraggablePiece.Y()" ] } ], @@ -825,7 +826,7 @@ }, "parameters": [ "", - "Pieces" + "DraggablePiece" ] }, { @@ -833,10 +834,10 @@ "value": "NumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastXPosition", "=", - "NewLocationX" + "NewXPosition" ] }, { @@ -844,10 +845,10 @@ "value": "NumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastYPosition", "=", - "NewLocationY" + "NewYPosition" ] } ], @@ -884,11 +885,11 @@ "value": "MettreXY" }, "parameters": [ - "Pieces", + "DraggablePiece", "=", - "Pieces.LastXPosition", + "DraggablePiece.LastXPosition", "=", - "Pieces.LastYPosition" + "DraggablePiece.LastYPosition" ] } ] @@ -913,10 +914,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastXPosition", "=", - "Pieces.X()" + "DraggablePiece.X()" ] }, { @@ -924,10 +925,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Pieces", + "DraggablePiece", "LastYPosition", "=", - "Pieces.Y()" + "DraggablePiece.Y()" ] } ] @@ -940,12 +941,12 @@ "value": false }, { - "name": "NewLocationX", + "name": "NewXPosition", "type": "number", "value": 0 }, { - "name": "NewLocationY", + "name": "NewYPosition", "type": "number", "value": 0 } @@ -4861,6 +4862,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-3d-driving/README.md b/examples/starting-3d-driving/README.md index 55d6bf43b..0f5195c45 100644 --- a/examples/starting-3d-driving/README.md +++ b/examples/starting-3d-driving/README.md @@ -1,4 +1,3 @@ # 3D Driving -A 3D physics-based game where the player is controlling a car. -It has a groud composed on a road and grass and some traffic cones that can be pushed by the car. Keyboard, gamepad and mobile controls for the player car. \ No newline at end of file +A 3D car driving game with a third-person camera view. The player accelerates and steers using keyboard or mobile controls. The car uses physics-based movement and can collide with other physics obstacles in the 3D environment. \ No newline at end of file diff --git a/examples/starting-3d-driving/starting-3d-driving.json b/examples/starting-3d-driving/starting-3d-driving.json index 8eeb868d9..3e51f978a 100644 --- a/examples/starting-3d-driving/starting-3d-driving.json +++ b/examples/starting-3d-driving/starting-3d-driving.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 233, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "", "version": "1.0.0", - "name": "3D Driving Game", + "name": "starting-3d-driving", "description": "", "author": "", "windowWidth": 1280, @@ -180,7 +180,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.4789341884535378, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], "variables": [], @@ -263,7 +264,7 @@ "depth": 33, "height": 39, "layer": "", - "name": "Player", + "name": "PlayerCar", "persistentUuid": "31232cc0-c2cd-4841-8233-8189786cb81f", "width": 74, "x": -1291, @@ -736,22 +737,9 @@ }, { "assetStoreId": "cddab55130dbd5a0b36f763200e876fb514aa608e1b057a136ebdb5f80006e2c", - "name": "Player", + "name": "PlayerCar", "type": "Scene3D::Model3DObject", - "variables": [ - { - "folded": true, - "name": "Force", - "type": "number", - "value": 0 - }, - { - "folded": true, - "name": "Direction", - "type": "number", - "value": 0 - } - ], + "variables": [], "effects": [], "behaviors": [ { @@ -1109,7 +1097,7 @@ "objectName": "Grass_3D" }, { - "objectName": "Player" + "objectName": "PlayerCar" }, { "objectName": "TrafficCone" @@ -1147,23 +1135,7 @@ "renderingType": "", "visibility": true, "cameras": [], - "effects": [ - { - "effectType": "Scene3D::HemisphereLight", - "name": "3D Light", - "doubleParameters": { - "elevation": 45, - "intensity": 1, - "rotation": 0 - }, - "stringParameters": { - "groundColor": "64;64;64", - "skyColor": "255;255;255", - "top": "Y-" - }, - "booleanParameters": {} - } - ] + "effects": [] }, { "ambientLightColorB": 200, @@ -3659,6 +3631,7 @@ "extraInformation": [ "Scene3D::Base3DBehavior" ], + "choices": [], "name": "Object3D" }, { @@ -7542,6 +7515,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "Property" }, { @@ -7555,9 +7529,15 @@ "type": "Choice", "label": "Joystick name", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -7678,6 +7658,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -7691,9 +7672,15 @@ "type": "Choice", "label": "Walk joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -7803,6 +7790,7 @@ "extraInformation": [ "Physics3D::PhysicsCharacter3D" ], + "choices": [], "name": "PhysicsCharacter3D" }, { @@ -7816,9 +7804,15 @@ "type": "Choice", "label": "Walk joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -8761,6 +8755,7 @@ "extraInformation": [ "Scene3D::Base3DBehavior" ], + "choices": [], "name": "Object3D" }, { @@ -8774,9 +8769,15 @@ "type": "Choice", "label": "Camera joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "CameraStick" }, @@ -8992,6 +8993,7 @@ "extraInformation": [ "Physics3D::PhysicsCar3D" ], + "choices": [], "name": "PhysicsCar3D" }, { @@ -9005,9 +9007,15 @@ "type": "Choice", "label": "Steer joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "SteerJoystickIdentifier" }, @@ -9016,9 +9024,15 @@ "type": "Choice", "label": "Speed joystick", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "SpeedJoystickIdentifier" }, @@ -9551,6 +9565,7 @@ "extraInformation": [ "TopDownMovementBehavior::TopDownMovementBehavior" ], + "choices": [], "name": "TopDownMovement" }, { @@ -9563,9 +9578,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -9574,10 +9595,19 @@ "type": "Choice", "label": "Stick mode", "group": "Controls", - "extraInformation": [ - "Analog", - "360°", - "8 Directions" + "choices": [ + { + "label": "Analog", + "value": "Analog" + }, + { + "label": "360°", + "value": "360°" + }, + { + "label": "8 Directions", + "value": "8 Directions" + } ], "name": "StickMode" } @@ -9702,6 +9732,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -10826,9 +10857,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -10847,6 +10884,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbAnchorOrigin" }, @@ -10866,6 +10904,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbIsScaledProportionally" }, @@ -11080,6 +11119,7 @@ "extraInformation": [ "Physics3D::PhysicsCar3D" ], + "choices": [], "name": "PhysicsCar3D" }, { diff --git a/examples/starting-3d-endless-runner/README.md b/examples/starting-3d-endless-runner/README.md index cb260014b..7b80fdbc1 100644 --- a/examples/starting-3d-endless-runner/README.md +++ b/examples/starting-3d-endless-runner/README.md @@ -1,4 +1,3 @@ # 3D Endless Runner -A 3d, side-view, endless runner - similar to games like Geometry Dash. It has a player object which can jump, some platforms, obstacles to avoid. The level is a repeating layout. It displays a score increasing as the player progresses. -Support for mobile and keyboard controls. \ No newline at end of file +A 3D side scrolling endless runner platformer where the player constantly moves to the right, and can jump or fall to navigate the level. The player dies if they collide with hazard objects. The scene continuously scrolls, moving objects that go off the left side of the screen to the right side of the screen to repopulate the path. The UI displays the distance traveled by the player. The game supports both keyboard and mobile touch screen controls for jumping. \ No newline at end of file diff --git a/examples/starting-3d-endless-runner/starting-3d-endless-runner.json b/examples/starting-3d-endless-runner/starting-3d-endless-runner.json index 19c553ac7..5e166a851 100644 --- a/examples/starting-3d-endless-runner/starting-3d-endless-runner.json +++ b/examples/starting-3d-endless-runner/starting-3d-endless-runner.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-platformer", "version": "1.0.0", - "name": "starting_3dendlessrunner", + "name": "starting-3d-endless-runner", "description": "", "author": "", "windowWidth": 1280, @@ -215,7 +215,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.41943397827591883, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { @@ -259,7 +260,7 @@ "height": 96, "keepRatio": true, "layer": "MobileControls", - "name": "Distance", + "name": "Distance_UIText", "persistentUuid": "fb74c02c-1e3b-40d9-9002-7ac7f9de6d3a", "width": 1280, "x": 0, @@ -276,7 +277,7 @@ "height": 64, "keepRatio": true, "layer": "", - "name": "Point_Right", + "name": "Boundary_Right", "persistentUuid": "43d7ea15-3ff2-4a18-a3d7-00f1a8576afa", "width": 64, "x": 3648, @@ -292,7 +293,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Point_Left", + "name": "Boundary_Left", "persistentUuid": "25d15929-d5d9-4bdd-ac47-4785f11bcc38", "width": 0, "x": -1152, @@ -811,7 +812,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Platformer_Character", + "name": "Player", "persistentUuid": "736ec17f-276c-4919-acfa-bee037dea12c", "width": 0, "x": 73, @@ -839,7 +840,7 @@ "assetStoreId": "", "bold": false, "italic": false, - "name": "Distance", + "name": "Distance_UIText", "smoothed": true, "type": "TextObject::Text", "underlined": false, @@ -881,7 +882,7 @@ { "adaptCollisionMaskAutomatically": true, "assetStoreId": "", - "name": "Point_Right", + "name": "Boundary_Right", "type": "Sprite", "updateIfNotVisible": false, "variables": [ @@ -947,7 +948,7 @@ { "adaptCollisionMaskAutomatically": true, "assetStoreId": "", - "name": "Point_Left", + "name": "Boundary_Left", "type": "Sprite", "updateIfNotVisible": false, "variables": [ @@ -1255,7 +1256,7 @@ }, { "assetStoreId": "", - "name": "Platformer_Character", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -1356,7 +1357,7 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Platformer_Character" + "objectName": "Player" }, { "objectName": "Platform_Ground" @@ -1371,13 +1372,13 @@ "objectName": "Background" }, { - "objectName": "Distance" + "objectName": "Distance_UIText" }, { - "objectName": "Point_Right" + "objectName": "Boundary_Right" }, { - "objectName": "Point_Left" + "objectName": "Boundary_Left" }, { "objectName": "Camera" @@ -1438,7 +1439,7 @@ "value": "PlatformBehavior::SimulateRightKey" }, "parameters": [ - "Platformer_Character", + "Player", "PlatformerObject" ] } @@ -1481,7 +1482,7 @@ "value": "PlatformBehavior::SimulateJumpKey" }, "parameters": [ - "Platformer_Character", + "Player", "PlatformerObject" ] } @@ -1495,7 +1496,7 @@ "value": "CollisionNP" }, "parameters": [ - "Platformer_Character", + "Player", "Hazard", "", "", @@ -1525,7 +1526,7 @@ "value": "TextContainerCapability::TextContainerBehavior::SetValue" }, "parameters": [ - "Distance", + "Distance_UIText", "Text", "=", "ToString(floor(TimeFromStart()))" @@ -1538,7 +1539,7 @@ "parameters": [ "Background", "=", - "Platformer_Character.X()/2" + "Player.X() / 2" ] }, { @@ -1546,9 +1547,9 @@ "value": "MettreX" }, "parameters": [ - "Point_Left", + "Boundary_Left", "=", - "Platformer_Character.X()-Point_Left.DistanceFromPlayer" + "Player.X() - Boundary_Left.DistanceFromPlayer" ] }, { @@ -1556,9 +1557,9 @@ "value": "MettreX" }, "parameters": [ - "Point_Right", + "Boundary_Right", "=", - "Platformer_Character.X()+Point_Right.DistanceFromPlayer" + "Player.X() + Boundary_Right.DistanceFromPlayer" ] } ] @@ -1573,7 +1574,7 @@ "parameters": [ "RepeatingObjects", "<", - "Point_Left.X()" + "Boundary_Left.X()" ] } ], @@ -1597,8 +1598,8 @@ }, "parameters": [ "Platform_Ground", - "Point_Right.X()", - "Point_Right.Y()", + "Boundary_Right.X()", + "Boundary_Right.Y()", "" ] } @@ -1638,7 +1639,7 @@ "parameters": [ "RepeatingObjects", "=", - "Point_Right.X()" + "Boundary_Right.X()" ] } ] diff --git a/examples/starting-3d-flight-sim/README.md b/examples/starting-3d-flight-sim/README.md index be377db18..c1770ea6e 100644 --- a/examples/starting-3d-flight-sim/README.md +++ b/examples/starting-3d-flight-sim/README.md @@ -1,4 +1,3 @@ # 3D Flight Simulator -A 3D game where the player pilots a plane that can freely move through the sky, with an arcade-style feel. There is a ground surface, and the plane cannot pass through it. -Supports both keyboard and mobile controls for the player’s aircraft. \ No newline at end of file +A 3D flight game with a plane represented by a 3D model and a ground object the plane cannot pass below. The player controls the plane’s tilt (left/right), pitch (forward/backward), and speed using keyboard or mobile touch controls. A third-person camera follows the plane, following its angle and pitch automatically, to properly follow the player movement. \ No newline at end of file diff --git a/examples/starting-3d-flight-sim/starting-3d-flight-sim.json b/examples/starting-3d-flight-sim/starting-3d-flight-sim.json index 852d4f9de..bc2fa03d0 100644 --- a/examples/starting-3d-flight-sim/starting-3d-flight-sim.json +++ b/examples/starting-3d-flight-sim/starting-3d-flight-sim.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -169,7 +169,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.3111974942445216, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { @@ -244,7 +245,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Aircraft", + "name": "PlayerAircraft", "persistentUuid": "9b0c35a1-d7ed-48b1-9f0d-f2fbbf7c17f7", "width": 0, "x": 634, @@ -467,11 +468,11 @@ }, { "assetStoreId": "", - "name": "Aircraft", + "name": "PlayerAircraft", "type": "Scene3D::Model3DObject", "variables": [ { - "name": "Speed", + "name": "FlyingSpeed", "type": "number", "value": 200 } @@ -528,7 +529,7 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Aircraft" + "objectName": "PlayerAircraft" }, { "objectName": "Ground" @@ -556,9 +557,9 @@ "value": "AddForceAL" }, "parameters": [ - "Aircraft", - "Aircraft.Angle()", - "Aircraft.Speed", + "PlayerAircraft", + "PlayerAircraft.Angle()", + "PlayerAircraft.FlyingSpeed", "" ] } @@ -573,10 +574,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationY" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "Aircraft.Object3D::RotationY() + (-0.05 * Aircraft.Object3D::RotationY())" + "PlayerAircraft.Object3D::RotationY() + (-0.05 * PlayerAircraft.Object3D::RotationY())" ] }, { @@ -584,10 +585,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationX" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "Aircraft.Object3D::RotationX() + (-0.05 * Aircraft.Object3D::RotationX())" + "PlayerAircraft.Object3D::RotationX() + (-0.05 * PlayerAircraft.Object3D::RotationX())" ] } ] @@ -629,10 +630,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Aircraft", - "Speed", + "PlayerAircraft", + "FlyingSpeed", "=", - "min(500, Aircraft.Speed + 3 * TimeDelta() * 60)" + "min(500, PlayerAircraft.FlyingSpeed + 3 * TimeDelta() * 60)" ] } ] @@ -674,10 +675,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Aircraft", - "Speed", + "PlayerAircraft", + "FlyingSpeed", "=", - "max(100, Aircraft.Speed - 3 * TimeDelta() * 60)" + "max(100, PlayerAircraft.FlyingSpeed - 3 * TimeDelta() * 60)" ] } ] @@ -703,10 +704,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationX" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "max(-60, Aircraft.Object3D::RotationX() - 3 * SpriteMultitouchJoystick::StickForceX(1, \"Primary\") * TimeDelta() * 60)" + "max(-60, PlayerAircraft.Object3D::RotationX() - 3 * SpriteMultitouchJoystick::StickForceX(1, \"Primary\") * TimeDelta() * 60)" ] } ] @@ -732,10 +733,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationY" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "min(45, Aircraft.Object3D::RotationY() - 1.5 * SpriteMultitouchJoystick::StickForceY(1, \"Primary\") * TimeDelta() * 60)" + "min(45, PlayerAircraft.Object3D::RotationY() - 1.5 * SpriteMultitouchJoystick::StickForceY(1, \"Primary\") * TimeDelta() * 60)" ] } ] @@ -759,10 +760,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationX" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "max(-60, Aircraft.Object3D::RotationX() - 3 * TimeDelta() * 60)" + "max(-60, PlayerAircraft.Object3D::RotationX() - 3 * TimeDelta() * 60)" ] } ] @@ -786,10 +787,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationX" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "min(60, Aircraft.Object3D::RotationX() + 3 * TimeDelta() * 60)" + "min(60, PlayerAircraft.Object3D::RotationX() + 3 * TimeDelta() * 60)" ] } ] @@ -813,10 +814,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationY" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "min(45, Aircraft.Object3D::RotationY() + 2 * TimeDelta() * 60)" + "min(45, PlayerAircraft.Object3D::RotationY() + 2 * TimeDelta() * 60)" ] } ] @@ -840,10 +841,10 @@ "value": "Scene3D::Base3DBehavior::SetRotationY" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "max(-45, Aircraft.Object3D::RotationY() - 2 * TimeDelta() * 60)" + "max(-45, PlayerAircraft.Object3D::RotationY() - 2 * TimeDelta() * 60)" ] } ] @@ -857,8 +858,8 @@ "value": "Rotate" }, "parameters": [ - "Aircraft", - "Aircraft.Object3D::RotationX() * -2 * TimeDelta() * 60", + "PlayerAircraft", + "PlayerAircraft.Object3D::RotationX() * -2 * TimeDelta() * 60", "" ] }, @@ -867,10 +868,10 @@ "value": "Scene3D::Base3DBehavior::SetZ" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", - "Aircraft.Object3D::Z() - (Aircraft.Object3D::RotationY() / 10 * TimeDelta() * 60)" + "PlayerAircraft.Object3D::Z() - (PlayerAircraft.Object3D::RotationY() / 10 * TimeDelta() * 60)" ] }, { @@ -878,10 +879,10 @@ "value": "ThirdPersonCamera::ThirdPersonCamera::SetDistance" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "ThirdPersonCamera", "=", - "lerp(Aircraft.ThirdPersonCamera::Distance(), 200 + Aircraft.Speed / 3 * TimeDelta() * 60, 0.05)", + "lerp(PlayerAircraft.ThirdPersonCamera::Distance(), 200 + PlayerAircraft.FlyingSpeed / 3 * TimeDelta() * 60, 0.05)", "" ] } @@ -895,7 +896,7 @@ "value": "Scene3D::Base3DBehavior::Z" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "<", "Ground.Object3D::Z()" @@ -908,7 +909,7 @@ "value": "Scene3D::Base3DBehavior::SetZ" }, "parameters": [ - "Aircraft", + "PlayerAircraft", "Object3D", "=", "Ground.Object3D::Z()" @@ -4855,6 +4856,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-3d-point-and-click-adventure/README.md b/examples/starting-3d-point-and-click-adventure/README.md index 3c161d860..e0f0c6ad6 100644 --- a/examples/starting-3d-point-and-click-adventure/README.md +++ b/examples/starting-3d-point-and-click-adventure/README.md @@ -1,5 +1,3 @@ # Point-and-click adventure -A 3D, side-view, point-and-click game where the player taps on the screen to move their character, who automatically walks around obstacles. The player can interact with other characters: when close, a dialog opens with a question offering two choices. - -Support for mouse and touch. \ No newline at end of file +A 3D point-and-click adventure game with an angled down side view camera. The player clicks a location in the scene, and the player character uses pathfinding to move there, navigating around pathfinding obstacles that block movement. NPCs can be clicked to make the player walk up to them and open a dialog box with text and two buttons representing choices the player can select. Movement points can be set using either mouse or touch screen controls. \ No newline at end of file diff --git a/examples/starting-3d-point-and-click-adventure/starting-3d-point-and-click-adventure.json b/examples/starting-3d-point-and-click-adventure/starting-3d-point-and-click-adventure.json index 33ca89b4c..f13b5865f 100644 --- a/examples/starting-3d-point-and-click-adventure/starting-3d-point-and-click-adventure.json +++ b/examples/starting-3d-point-and-click-adventure/starting-3d-point-and-click-adventure.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3dpointandclickadventure", + "name": "starting-3d-point-and-click-adventure", "description": "", "author": "", "windowWidth": 1280, @@ -245,17 +245,12 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.17708595277544353, - "windowMask": false + "zoomFactor": 0.1830573495556051, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], - "variables": [ - { - "name": "SceneScaling", - "type": "number", - "value": 0.75 - } - ], + "variables": [], "instances": [ { "angle": 0, @@ -264,7 +259,7 @@ "height": 64, "keepRatio": true, "layer": "", - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "persistentUuid": "15d56137-f7c6-49af-99cd-13ff322ae649", "width": 1408, "x": -64, @@ -281,7 +276,7 @@ "height": 1408, "keepRatio": true, "layer": "", - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "persistentUuid": "9a3a50db-a5cd-4b92-b539-f917e502217e", "width": 64, "x": 1260, @@ -298,7 +293,7 @@ "height": 1408, "keepRatio": true, "layer": "", - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "persistentUuid": "d9d2af3a-6c95-43ac-bf0d-6b45c12e9bee", "width": 64, "x": -44, @@ -315,7 +310,7 @@ "height": 64, "keepRatio": true, "layer": "", - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "persistentUuid": "2e39eef0-b3e1-4d11-b1fa-561d2dfbcf2c", "width": 1408, "x": -64, @@ -386,7 +381,7 @@ "height": 576, "keepRatio": true, "layer": "", - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "persistentUuid": "7581c15c-e530-4335-a9d9-8f32e032cb7b", "width": 256, "x": 704, @@ -402,7 +397,7 @@ "depth": 600, "height": 1408, "layer": "", - "name": "Walls", + "name": "Wall", "persistentUuid": "a6e9a4a5-a3ff-4437-b19a-d223470b23c5", "width": 128, "x": -128, @@ -418,7 +413,7 @@ "depth": 600, "height": 1408, "layer": "", - "name": "Walls", + "name": "Wall", "persistentUuid": "c4a131c8-d2d4-4df3-a4d3-a11696e224ee", "width": 128, "x": 1280, @@ -434,7 +429,7 @@ "depth": 600, "height": 128, "layer": "", - "name": "Walls", + "name": "Wall", "persistentUuid": "34f6c923-871c-4d6c-a192-7f5afa13483d", "width": 1536, "x": -128, @@ -451,7 +446,7 @@ "height": 64, "keepRatio": true, "layer": "", - "name": "PathfindingCharacter", + "name": "Player", "persistentUuid": "abf37868-f4b9-4b4d-8587-7d351109619c", "width": 64, "x": 288, @@ -671,7 +666,7 @@ { "assetStoreId": "", "height": 64, - "name": "PathfindingObstacle", + "name": "PathfindingBoundary", "texture": "assets\\StartingCollisionArea.png", "type": "TiledSpriteObject::TiledSprite", "width": 64, @@ -740,7 +735,7 @@ }, { "assetStoreId": "", - "name": "Walls", + "name": "Wall", "type": "Scene3D::Cube3DObject", "variables": [], "effects": [], @@ -854,7 +849,7 @@ }, { "assetStoreId": "", - "name": "PathfindingCharacter", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -955,13 +950,13 @@ "folderName": "__ROOT", "children": [ { - "objectName": "PathfindingCharacter" + "objectName": "Player" }, { "objectName": "NPC" }, { - "objectName": "Walls" + "objectName": "Wall" }, { "objectName": "Water" @@ -973,7 +968,7 @@ "objectName": "Grass" }, { - "objectName": "PathfindingObstacle" + "objectName": "PathfindingBoundary" }, { "objectName": "Camera" @@ -1014,7 +1009,7 @@ "value": "Cache" }, "parameters": [ - "PathfindingObstacle" + "PathfindingBoundary" ] }, { @@ -1028,6 +1023,18 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Player movement" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1069,7 +1076,7 @@ "value": "PathfindingBehavior::SetDestination" }, "parameters": [ - "PathfindingCharacter", + "Player", "Pathfinding", "", "CursorX()", @@ -1142,7 +1149,7 @@ "value": "PathfindingBehavior::SetDestination" }, "parameters": [ - "PathfindingCharacter", + "Player", "Pathfinding", "", "NPC.CenterX()", @@ -1161,7 +1168,7 @@ "value": "Distance" }, "parameters": [ - "PathfindingCharacter", + "Player", "NPC", "100", "" @@ -1185,11 +1192,11 @@ "value": "PathfindingBehavior::SetDestination" }, "parameters": [ - "PathfindingCharacter", + "Player", "Pathfinding", "", - "PathfindingCharacter.CenterX()", - "PathfindingCharacter.CenterY()" + "Player.CenterX()", + "Player.CenterY()" ] }, { @@ -1197,7 +1204,7 @@ "value": "ActivateBehavior" }, "parameters": [ - "PathfindingCharacter", + "Player", "Pathfinding", "" ] @@ -1215,6 +1222,18 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Dialog choices" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1308,7 +1327,7 @@ "value": "ActivateBehavior" }, "parameters": [ - "PathfindingCharacter", + "Player", "Pathfinding", "yes" ] @@ -7430,6 +7449,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -15576,6 +15596,7 @@ ] } ], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -16863,7 +16884,8 @@ } ] } - ] + ], + "editionSettings": {} }, { "areaMaxX": 600, @@ -17153,7 +17175,8 @@ } ] } - ] + ], + "editionSettings": {} } ] } @@ -18698,6 +18721,7 @@ "initialVariables": [] } ], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -20171,7 +20195,8 @@ "stringProperties": [], "initialVariables": [] } - ] + ], + "editionSettings": {} }, { "areaMaxX": 256, @@ -20476,7 +20501,8 @@ "stringProperties": [], "initialVariables": [] } - ] + ], + "editionSettings": {} } ] } diff --git a/examples/starting-3d-rts-unit-selection/README.md b/examples/starting-3d-rts-unit-selection/README.md index 4a5364eff..73d503c86 100644 --- a/examples/starting-3d-rts-unit-selection/README.md +++ b/examples/starting-3d-rts-unit-selection/README.md @@ -1,5 +1,3 @@ # Top-down RTS (unit selection) -A 3D, top-down, simple game where the player can draw a selection around its units and then tap on the screen to move the selected units to this point (avoiding obstacles). - -Support for mouse and touch. \ No newline at end of file +A 3D angled top-down RTS-style game where the player can click to select individual units or click and drag to select multiple units. Selected units can be given a waypoint to move to, using pathfinding to navigate around impassable obstacles, like buildings. Water areas are passable but less preferred, so units will avoid them if a better path exists. Unit selection and waypoint placement can be done with either mouse or touch screen controls. \ No newline at end of file diff --git a/examples/starting-3d-rts-unit-selection/starting-3d-rts-unit-selection.json b/examples/starting-3d-rts-unit-selection/starting-3d-rts-unit-selection.json index 28401948e..3150a2cb3 100644 --- a/examples/starting-3d-rts-unit-selection/starting-3d-rts-unit-selection.json +++ b/examples/starting-3d-rts-unit-selection/starting-3d-rts-unit-selection.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3drtsunitselection", + "name": "starting-3d-rts-unit-selection", "description": "", "author": "", "windowWidth": 1280, @@ -192,16 +192,11 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.37971210019480156, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], - "variables": [ - { - "name": "SceneScaling", - "type": "number", - "value": 0.75 - } - ], + "variables": [], "instances": [ { "angle": -90, @@ -246,7 +241,7 @@ "depth": 272, "height": 448, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "9bead3bb-aa3f-4bac-976f-641c40ca2052", "width": 384, "x": -64, @@ -264,7 +259,7 @@ "height": 256, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "30334d8f-9568-4fca-a899-648463b2e925", "width": 256, "x": 1024, @@ -282,7 +277,7 @@ "height": 256, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "5967a2b2-30b9-46c9-9608-0a9c4dfc0467", "width": 256, "x": 0, @@ -299,7 +294,7 @@ "depth": 340, "height": 256, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "ed76cbb4-8310-4953-a7a1-e855ef541dae", "width": 192, "x": -64, @@ -316,7 +311,7 @@ "depth": 320, "height": 256, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "5cdb61e1-29f8-4672-adde-b9f5b8d6cdb2", "width": 256, "x": 768, @@ -384,7 +379,7 @@ "depth": 320, "height": 256, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "e5948118-987f-42c7-8e28-8c7ed66d5a98", "width": 192, "x": 320, @@ -401,7 +396,7 @@ "depth": 234, "height": 320, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "f8639eb8-c56c-4081-9a2f-f515a3daa768", "width": 320, "x": 1024, @@ -503,7 +498,7 @@ "depth": 340, "height": 384, "layer": "", - "name": "Obstacle", + "name": "Building_Impassable", "persistentUuid": "378e9972-ec3d-438d-b9a6-8ed21318416b", "width": 192, "x": 1152, @@ -603,7 +598,7 @@ "objects": [ { "assetStoreId": "", - "name": "UnitPicker", + "name": "SelectionTool_Hidden", "type": "PrimitiveDrawing::Drawer", "variables": [], "effects": [], @@ -746,7 +741,7 @@ }, { "assetStoreId": "", - "name": "Obstacle", + "name": "Building_Impassable", "type": "Scene3D::Cube3DObject", "variables": [], "effects": [], @@ -861,17 +856,17 @@ }, { "assetStoreId": "", - "name": "SelectionBox_3DSprite", + "name": "SelectionTool_3DSprite", "type": "Sprite3D::Sprite3D", "variant": "", "variables": [ { - "name": "StartingX", + "name": "SelectionStartX", "type": "number", "value": 0 }, { - "name": "StartingY", + "name": "SelectionStartY", "type": "number", "value": 0 } @@ -942,13 +937,10 @@ "objectName": "RTSUnit" }, { - "objectName": "Obstacle" - }, - { - "objectName": "UnitPicker" + "objectName": "SelectionTool_Hidden" }, { - "objectName": "SelectionBox_3DSprite" + "objectName": "SelectionTool_3DSprite" }, { "objectName": "Ground" @@ -956,6 +948,9 @@ { "objectName": "Grass" }, + { + "objectName": "Building_Impassable" + }, { "objectName": "Water_Passable" }, @@ -998,7 +993,7 @@ "", "Camera", "Object3D", - "\"Draw Layer\"", + "\"Selection Draw Layer\"", "" ] } @@ -1035,6 +1030,18 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Unit movement" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1110,6 +1117,18 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Unit selection" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1133,7 +1152,7 @@ "parameters": [ "", "RTSUnit", - "UnitPicker", + "SelectionTool_Hidden", "", "CursorY()+2000", "Add", @@ -1147,7 +1166,7 @@ "value": "Cache" }, "parameters": [ - "UnitPicker" + "SelectionTool_Hidden" ] } ], @@ -1169,10 +1188,10 @@ }, "parameters": [ "", - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", "CursorX()", "CursorY()", - "\"Draw Layer\"" + "\"Selection Draw Layer\"" ] }, { @@ -1180,7 +1199,7 @@ "value": "Scene3D::Base3DBehavior::SetZ" }, "parameters": [ - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", "Object3D", "=", "3" @@ -1191,10 +1210,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "SelectionBox_3DSprite", - "StartingX", + "SelectionTool_3DSprite", + "SelectionStartX", "=", - "SelectionBox_3DSprite.X()" + "SelectionTool_3DSprite.X()" ] }, { @@ -1202,10 +1221,10 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "SelectionBox_3DSprite", - "StartingY", + "SelectionTool_3DSprite", + "SelectionStartY", "=", - "SelectionBox_3DSprite.Y()" + "SelectionTool_3DSprite.Y()" ] } ] @@ -1229,11 +1248,11 @@ "value": "MettreXY" }, "parameters": [ - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", "=", - "min(CursorX(), SelectionBox_3DSprite.StartingX)", + "min(CursorX(), SelectionTool_3DSprite.SelectionStartX)", "=", - "min(CursorY(), SelectionBox_3DSprite.StartingY)" + "min(CursorY(), SelectionTool_3DSprite.SelectionStartY)" ] }, { @@ -1241,10 +1260,10 @@ "value": "ResizableCapability::ResizableBehavior::SetSize" }, "parameters": [ - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", "Resizable", - "abs(CursorX()-SelectionBox_3DSprite.StartingX)", - "abs(CursorY()-SelectionBox_3DSprite.StartingY)" + "abs(CursorX() - SelectionTool_3DSprite.SelectionStartX)", + "abs(CursorY() - SelectionTool_3DSprite.SelectionStartY)" ] } ] @@ -1260,7 +1279,7 @@ }, "parameters": [ "", - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", ">", "0" ] @@ -1282,12 +1301,24 @@ "value": "Delete" }, "parameters": [ - "SelectionBox_3DSprite", + "SelectionTool_3DSprite", "" ] } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Unit highlight" + }, { "type": "BuiltinCommonInstructions::ForEach", "object": "RTSUnit", @@ -1461,7 +1492,7 @@ "followBaseLayerCamera": false, "isLightingLayer": false, "isLocked": false, - "name": "Draw Layer", + "name": "Selection Draw Layer", "renderingType": "", "visibility": true, "cameras": [], @@ -11582,6 +11613,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-3d-shootemup/README.md b/examples/starting-3d-shootemup/README.md index 5d5bc11da..15d105a49 100644 --- a/examples/starting-3d-shootemup/README.md +++ b/examples/starting-3d-shootemup/README.md @@ -1,5 +1,3 @@ # Shoot 'em up -A 3D side-scrolling shoot ’em up where the player can move around the screen while automatically firing bullets. Enemies regularly appear from the opposite side, advancing toward the player and shooting back. - -Support for keyboard and mobile controls. +A 3D top-down shoot ’em up game where the player faces towards the right side of the screen and can move freely within fixed screen boundaries. The player automatically fires bullets toward the right side of the screen. Enemies scroll in from the right side of the screen and continuously move left, and fire bullets forward. Enemies take three hits to be destroyed, and the player dies if hit by an enemy bullet or collides with an enemy. Player movement can be controlled with a keyboard or mobile touch controls. \ No newline at end of file diff --git a/examples/starting-3d-shootemup/starting-3d-shootemup.json b/examples/starting-3d-shootemup/starting-3d-shootemup.json index df11803a2..53dc9269c 100644 --- a/examples/starting-3d-shootemup/starting-3d-shootemup.json +++ b/examples/starting-3d-shootemup/starting-3d-shootemup.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 243, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -245,7 +245,7 @@ "keepRatio": true, "layer": "", "locked": true, - "name": "Obstacle", + "name": "GameBoundary", "persistentUuid": "2e6d3d52-b625-4baa-8bbc-f96bdc9cc03c", "width": 1280, "x": 0, @@ -262,7 +262,7 @@ "height": 849, "layer": "", "locked": true, - "name": "Obstacle", + "name": "GameBoundary", "persistentUuid": "38d96175-c5b6-4982-9dc4-9dfea03e670b", "width": 64, "x": 1280, @@ -280,7 +280,7 @@ "keepRatio": true, "layer": "", "locked": true, - "name": "Obstacle", + "name": "GameBoundary", "persistentUuid": "58dda8ce-b808-4823-8297-b40e76b30228", "width": 1280, "x": 0, @@ -298,7 +298,7 @@ "keepRatio": true, "layer": "", "locked": true, - "name": "Obstacle", + "name": "GameBoundary", "persistentUuid": "862577b6-1a9c-4df8-aa0e-2b97e637e944", "width": 64, "x": -64, @@ -315,7 +315,7 @@ "height": 960, "layer": "", "locked": true, - "name": "Background", + "name": "RepeatingBackground", "persistentUuid": "ab0994ac-5cc5-4759-b6d7-68c5b4616ad3", "width": 1792, "x": -256, @@ -351,7 +351,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "TopDown_Character", + "name": "Player", "persistentUuid": "4897edc1-5ef3-4f36-8aa7-845270744fff", "width": 0, "x": 228, @@ -450,7 +450,7 @@ { "assetStoreId": "", "height": 64, - "name": "Obstacle", + "name": "GameBoundary", "texture": "assets\\StartingObstacle.png", "type": "TiledSpriteObject::TiledSprite", "width": 64, @@ -460,7 +460,7 @@ }, { "assetStoreId": "", - "name": "Background", + "name": "RepeatingBackground", "type": "Scene3D::Cube3DObject", "variables": [ { @@ -542,7 +542,7 @@ }, { "assetStoreId": "", - "name": "TopDown_Character", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -683,7 +683,7 @@ }, { "assetStoreId": "", - "name": "Bullet", + "name": "PlayerBullet", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -748,10 +748,10 @@ "folderName": "__ROOT", "children": [ { - "objectName": "TopDown_Character" + "objectName": "Player" }, { - "objectName": "Bullet" + "objectName": "PlayerBullet" }, { "objectName": "Enemy" @@ -760,10 +760,10 @@ "objectName": "EnemyBullet" }, { - "objectName": "Background" + "objectName": "RepeatingBackground" }, { - "objectName": "Obstacle" + "objectName": "GameBoundary" }, { "objectName": "Camera" @@ -809,7 +809,7 @@ "value": "Cache" }, "parameters": [ - "Obstacle" + "GameBoundary" ] } ] @@ -900,8 +900,8 @@ "value": "SeparateFromObjects" }, "parameters": [ - "TopDown_Character", - "Obstacle", + "Player", + "GameBoundary", "" ] }, @@ -910,7 +910,7 @@ "value": "SetNumberObjectVariable" }, "parameters": [ - "Background", + "RepeatingBackground", "TilingOffset", "-", "2" @@ -921,9 +921,9 @@ "value": "MettreX" }, "parameters": [ - "Background", + "RepeatingBackground", "=", - "mod(Background.TilingOffset, 160)-320" + "mod(RepeatingBackground.TilingOffset, 160) - 320" ] } ] @@ -937,12 +937,12 @@ "value": "FireBullet::FireBullet::Fire" }, "parameters": [ - "TopDown_Character", + "Player", "FireBullet", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", - "Bullet", - "TopDown_Character.Angle()", + "Player.CenterX()", + "Player.CenterY()", + "PlayerBullet", + "Player.Angle()", "500", "300" ] @@ -972,7 +972,7 @@ "value": "CollisionNP" }, "parameters": [ - "Bullet", + "PlayerBullet", "Enemy", "", "", @@ -997,7 +997,7 @@ "value": "Delete" }, "parameters": [ - "Bullet", + "PlayerBullet", "" ] } @@ -1038,7 +1038,7 @@ "value": "CollisionNP" }, "parameters": [ - "TopDown_Character", + "Player", "EnemyBullet", "", "", diff --git a/examples/starting-3d-tank/README.md b/examples/starting-3d-tank/README.md index 51d6fd62d..dc4a1f91e 100644 --- a/examples/starting-3d-tank/README.md +++ b/examples/starting-3d-tank/README.md @@ -1,7 +1,3 @@ # 3D tank -A 3D game where the player controls a tank that can move around the map, with an independently controlled turret. When firing, a projectile is launched from the turret, following its angle and inclination. - -Enemy placeholder are on the map. They remain stationary but can be shot and respond realistically to explosions. Explosions are visually represented using 3D particle effects, and the screen shakes to enhance impact. - -Supports both keyboard and mobile controls. \ No newline at end of file +A 3D physics-based game where the player controls a tank that can move around the scene, with an independently aimed turret. Firing launches a bullet projectile that follow the turret’s angle and inclination. Stationary enemy targets can be shot and react realistically to explosions, which are visualized with 3D particle effects and screen shake. A third-person camera follows the tank’s movement and orientation. The game supports both keyboard and mobile controls. \ No newline at end of file diff --git a/examples/starting-3d-tank/starting-3d-tank.json b/examples/starting-3d-tank/starting-3d-tank.json index 6a0f0f522..6ecb306dc 100644 --- a/examples/starting-3d-tank/starting-3d-tank.json +++ b/examples/starting-3d-tank/starting-3d-tank.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 243, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -242,7 +242,7 @@ }, "objectsGroups": [ { - "name": "BulletCollisions", + "name": "BulletObstacles", "objects": [ { "name": "Grass_3D" @@ -371,7 +371,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "CustomTank", + "name": "PlayerTank", "persistentUuid": "2e28ee4b-620d-4ade-955f-be5020047903", "width": 0, "x": -1152, @@ -579,7 +579,7 @@ "objects": [ { "assetStoreId": "", - "name": "CustomTank", + "name": "PlayerTank", "type": "TankConfiguration::CombinedTank", "variant": "", "variables": [], @@ -1331,7 +1331,7 @@ "objectName": "Skybox" }, { - "objectName": "CustomTank" + "objectName": "PlayerTank" }, { "objectName": "Bullet" @@ -1371,10 +1371,10 @@ "value": "ThirdPersonCamera::ThirdPersonCamera::SetTargetedRotationAngle" }, "parameters": [ - "CustomTank", + "PlayerTank", "ThirdPersonCamera", "=", - "CustomTank.TopRotation() + CustomTank.Angle()", + "PlayerTank.TopRotation() + PlayerTank.Angle()", "" ] } @@ -1411,7 +1411,7 @@ "value": "TankConfiguration::CombinedTank::SetTopRotation" }, "parameters": [ - "CustomTank", + "PlayerTank", "+", "Cannon_Joystick.StickForceX()", "" @@ -1422,7 +1422,7 @@ "value": "TankConfiguration::CombinedTank::SetCannonAngle" }, "parameters": [ - "CustomTank", + "PlayerTank", "+", "Cannon_Joystick.StickForceY()/2", "" @@ -1470,7 +1470,7 @@ "value": "Physics3D::PhysicsCar3D::SimulateSteeringStick" }, "parameters": [ - "CustomTank", + "PlayerTank", "PhysicsCar3D", "Steer_Joystick.StickForceX()/3" ] @@ -1496,7 +1496,7 @@ "value": "Physics3D::PhysicsCar3D::SimulateAcceleratorStick" }, "parameters": [ - "CustomTank", + "PlayerTank", "PhysicsCar3D", "-1 * sign(Steer_Joystick.StickForceY())" ] @@ -1534,7 +1534,7 @@ "value": "TankConfiguration::CombinedTank::SetTopRotation" }, "parameters": [ - "CustomTank", + "PlayerTank", "+", "1", "" @@ -1561,7 +1561,7 @@ "value": "TankConfiguration::CombinedTank::SetTopRotation" }, "parameters": [ - "CustomTank", + "PlayerTank", "-", "1", "" @@ -1588,7 +1588,7 @@ "value": "TankConfiguration::CombinedTank::SetCannonAngle" }, "parameters": [ - "CustomTank", + "PlayerTank", "+", "0.75", "" @@ -1615,7 +1615,7 @@ "value": "TankConfiguration::CombinedTank::SetCannonAngle" }, "parameters": [ - "CustomTank", + "PlayerTank", "-", "0.75", "" @@ -1680,8 +1680,8 @@ "parameters": [ "", "Bullet", - "CustomTank.CenterX() + XFromAngleAndDistance(CustomTank.Angle() + CustomTank.TopRotation(), CustomTank.CannonWidth())", - "CustomTank.CenterY() + YFromAngleAndDistance(CustomTank.Angle() + CustomTank.TopRotation(), CustomTank.CannonWidth())", + "PlayerTank.CenterX() + XFromAngleAndDistance(PlayerTank.Angle() + PlayerTank.TopRotation(), PlayerTank.CannonWidth())", + "PlayerTank.CenterY() + YFromAngleAndDistance(PlayerTank.Angle() + PlayerTank.TopRotation(), PlayerTank.CannonWidth())", "" ] }, @@ -1693,7 +1693,7 @@ "Bullet", "Object3D", "=", - "(CustomTank.Object3D::CenterZ()) + sin(ToRad(-1 * CustomTank.CannonAngle() - CustomTank.Object3D::RotationY() * cos(ToRad(CustomTank.TopRotation())) - CustomTank.Object3D::RotationX() * sin(ToRad(CustomTank.TopRotation())))) * CustomTank.CannonWidth()" + "(PlayerTank.Object3D::CenterZ()) + sin(ToRad(-1 * PlayerTank.CannonAngle() - PlayerTank.Object3D::RotationY() * cos(ToRad(PlayerTank.TopRotation())) - PlayerTank.Object3D::RotationX() * sin(ToRad(PlayerTank.TopRotation())))) * PlayerTank.CannonWidth()" ] }, { @@ -1704,7 +1704,7 @@ "Bullet", "Object3D", "=", - "(CustomTank.CannonAngle() + CustomTank.Object3D::RotationY() * cos(ToRad(CustomTank.TopRotation())) - CustomTank.Object3D::RotationX() * sin(ToRad(CustomTank.TopRotation())))" + "(PlayerTank.CannonAngle() + PlayerTank.Object3D::RotationY() * cos(ToRad(PlayerTank.TopRotation())) - PlayerTank.Object3D::RotationX() * sin(ToRad(PlayerTank.TopRotation())))" ] }, { @@ -1714,7 +1714,7 @@ "parameters": [ "Bullet", "=", - "CustomTank.TopRotation() + CustomTank.Angle()" + "PlayerTank.TopRotation() + PlayerTank.Angle()" ] }, { @@ -1748,9 +1748,9 @@ "Bullet", "Physics3D", "15", - "Bullet.X() + XFromAngleAndDistance(CustomTank.Angle() + CustomTank.TopRotation(), 20)", - "Bullet.Y() + YFromAngleAndDistance(CustomTank.Angle() + CustomTank.TopRotation(), 20)", - "Bullet.Object3D::Z() + sin(ToRad(-1*Bullet.Object3D::RotationY())) * 10" + "Bullet.X() + XFromAngleAndDistance(PlayerTank.Angle() + PlayerTank.TopRotation(), 20)", + "Bullet.Y() + YFromAngleAndDistance(PlayerTank.Angle() + PlayerTank.TopRotation(), 20)", + "Bullet.Object3D::Z() + sin(ToRad(-1 * Bullet.Object3D::RotationY())) * 10" ] }, { @@ -1800,7 +1800,7 @@ "parameters": [ "Bullet", "Physics3D", - "BulletCollisions", + "BulletObstacles", "Physics3D", "" ] @@ -1900,7 +1900,7 @@ "parameters": [ "Target", "Physics3D", - "-5* (300 - (Target.Distance(Bullet)))", + "-5 * (300 - (Target.Distance(Bullet)))", "Bullet.X() + XFromAngleAndDistance(Target.AngleToObject(Bullet), 500)", "Bullet.Y() + YFromAngleAndDistance(Target.AngleToObject(Bullet), 500)", "0" diff --git a/examples/starting-3d-tile-placement/README.md b/examples/starting-3d-tile-placement/README.md index b802e2a59..f247fff00 100644 --- a/examples/starting-3d-tile-placement/README.md +++ b/examples/starting-3d-tile-placement/README.md @@ -1,4 +1,3 @@ # Tile-based builder/strategy -A 3D, top-down, game where tiles can be selected, like in a strategy game, and placed on a grid. -Support for both mouse and touchscreens. \ No newline at end of file +A 3D game with an angled top-down view where tiles are represented by 3D models such as units, castle towers, and trees. Players can select the type of tile to place using UI buttons, and a placement indicator shows where the tile will be positioned. The game prevents overlapping placements and includes a ground grid to indicate valid placement locations. Tile selection and placement can be done with mouse or mobile touch controls, making it suitable for tower defense or city builder-style gameplay. \ No newline at end of file diff --git a/examples/starting-3d-tile-placement/starting-3d-tile-placement.json b/examples/starting-3d-tile-placement/starting-3d-tile-placement.json index 51110e2f7..9a6ea2167 100644 --- a/examples/starting-3d-tile-placement/starting-3d-tile-placement.json +++ b/examples/starting-3d-tile-placement/starting-3d-tile-placement.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3dtileplacement", + "name": "starting-3d-tile-placement", "description": "", "author": "", "windowWidth": 1280, @@ -206,12 +206,13 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.2725359896772944, - "windowMask": false + "zoomFactor": 0.2817259932079574, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { - "name": "Units", + "name": "PlaceableTile", "objects": [ { "name": "Unit" @@ -270,7 +271,7 @@ "height": 0, "keepRatio": true, "layer": "UI", - "name": "Unit_Button", + "name": "TileType_SelectButton", "persistentUuid": "9d2476de-4a9a-48d4-ac29-38eaf56dafe5", "width": 0, "x": 1184, @@ -291,7 +292,7 @@ "height": 0, "keepRatio": true, "layer": "UI", - "name": "Unit_Button", + "name": "TileType_SelectButton", "persistentUuid": "1e67e92f-4b43-4b66-bc50-7c538310255c", "width": 0, "x": 1184, @@ -307,7 +308,7 @@ "height": 0, "keepRatio": true, "layer": "UI", - "name": "Unit_Button", + "name": "TileType_SelectButton", "persistentUuid": "ff853a23-58c0-4191-9c92-e7a2e1b5fa91", "width": 0, "x": 1184, @@ -329,7 +330,7 @@ "height": 640, "layer": "", "locked": true, - "name": "Tiles", + "name": "PlacementGrid", "persistentUuid": "d8a84d05-190d-4afb-a70d-56adf0d454dc", "width": 1152, "x": 64, @@ -346,7 +347,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "Placement_Indicator", + "name": "TilePlacement_Indicator", "persistentUuid": "63170b14-adb3-4517-abae-7f048a90d832", "width": 0, "x": 1408, @@ -437,7 +438,7 @@ { "adaptCollisionMaskAutomatically": true, "assetStoreId": "", - "name": "Unit_Button", + "name": "TileType_SelectButton", "type": "Sprite", "updateIfNotVisible": false, "variables": [], @@ -710,7 +711,7 @@ }, { "assetStoreId": "", - "name": "Tiles", + "name": "PlacementGrid", "type": "Scene3D::Cube3DObject", "variables": [], "effects": [], @@ -748,7 +749,7 @@ }, { "assetStoreId": "", - "name": "Placement_Indicator", + "name": "TilePlacement_Indicator", "type": "Sprite3D::Sprite3D", "variant": "", "variables": [], @@ -911,10 +912,10 @@ "folderName": "__ROOT", "children": [ { - "objectName": "Placement_Indicator" + "objectName": "TilePlacement_Indicator" }, { - "objectName": "Unit_Button" + "objectName": "TileType_SelectButton" }, { "objectName": "Unit" @@ -929,7 +930,7 @@ "objectName": "Ground" }, { - "objectName": "Tiles" + "objectName": "PlacementGrid" }, { "objectName": "Camera" @@ -976,7 +977,7 @@ "value": "EffectCapability::EffectBehavior::EnableEffect" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"", "" @@ -987,7 +988,7 @@ "value": "Cache" }, "parameters": [ - "Placement_Indicator" + "TilePlacement_Indicator" ] } ] @@ -1000,7 +1001,7 @@ "value": "ButtonStates::ButtonFSM::IsClicked" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "ButtonFSM", "" ] @@ -1017,7 +1018,7 @@ "value": "EffectCapability::EffectBehavior::IsEffectEnabled" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"" ] @@ -1029,7 +1030,7 @@ "value": "EffectCapability::EffectBehavior::EnableEffect" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"", "" @@ -1040,7 +1041,7 @@ "value": "Montre" }, "parameters": [ - "Placement_Indicator", + "TilePlacement_Indicator", "" ] }, @@ -1049,10 +1050,10 @@ "value": "AnimatableCapability::AnimatableBehavior::SetName" }, "parameters": [ - "Placement_Indicator", + "TilePlacement_Indicator", "Animation", "=", - "Unit_Button.Animation::Name()" + "TileType_SelectButton.Animation::Name()" ] }, { @@ -1076,7 +1077,7 @@ }, "parameters": [ "", - "Unit_Button" + "TileType_SelectButton" ] } ], @@ -1086,7 +1087,7 @@ "value": "EffectCapability::EffectBehavior::EnableEffect" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"", "" @@ -1103,7 +1104,7 @@ "value": "EffectCapability::EffectBehavior::EnableEffect" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"", "yes" @@ -1121,7 +1122,7 @@ "value": "EffectCapability::EffectBehavior::IsEffectEnabled" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"" ] @@ -1143,7 +1144,7 @@ "value": "EffectCapability::EffectBehavior::EnableEffect" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "Effect", "\"Outline\"", "" @@ -1154,7 +1155,7 @@ "value": "Cache" }, "parameters": [ - "Placement_Indicator" + "TilePlacement_Indicator" ] } ] @@ -1177,11 +1178,11 @@ "value": "MettreXY" }, "parameters": [ - "Placement_Indicator", + "TilePlacement_Indicator", "=", - "CursorX() - (Placement_Indicator.Width()/2)", + "CursorX() - (TilePlacement_Indicator.Width() / 2)", "=", - "CursorY() - (Placement_Indicator.Height()/2)" + "CursorY() - (TilePlacement_Indicator.Height() / 2)" ] }, { @@ -1190,7 +1191,7 @@ }, "parameters": [ "", - "Placement_Indicator", + "TilePlacement_Indicator", "64", "64", "0", @@ -1200,6 +1201,18 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Place unit" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1223,7 +1236,7 @@ "value": "SourisSurObjet" }, "parameters": [ - "Unit_Button", + "TileType_SelectButton", "", "", "" @@ -1236,7 +1249,7 @@ "value": "Visible" }, "parameters": [ - "Placement_Indicator" + "TilePlacement_Indicator" ] }, { @@ -1244,8 +1257,8 @@ "value": "CollisionNP" }, "parameters": [ - "Placement_Indicator", - "Tiles", + "TilePlacement_Indicator", + "PlacementGrid", "", "", "yes" @@ -1257,8 +1270,8 @@ "value": "CollisionNP" }, "parameters": [ - "Placement_Indicator", - "Units", + "TilePlacement_Indicator", + "PlaceableTile", "", "", "yes" @@ -1272,10 +1285,10 @@ }, "parameters": [ "", - "Units", - "Placement_Indicator.Animation::Name()", - "Placement_Indicator.CenterX()", - "Placement_Indicator.CenterY()", + "PlaceableTile", + "TilePlacement_Indicator.Animation::Name()", + "TilePlacement_Indicator.CenterX()", + "TilePlacement_Indicator.CenterY()", "" ] } @@ -8543,6 +8556,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-3d-top-down-rpg/README.md b/examples/starting-3d-top-down-rpg/README.md index 18ebed0e7..f711ef1f6 100644 --- a/examples/starting-3d-top-down-rpg/README.md +++ b/examples/starting-3d-top-down-rpg/README.md @@ -1,5 +1,3 @@ # 3D RPG -A 3D top-down RPG-style game where the player can explore the map and interact with other characters. When near a character, a dialog appears with text and two choices. - -Support for keyboard and mobile controls. \ No newline at end of file +A 3D top-down RPG-style game with an angled down camera view. The player can move left, right, up, or down, but cannot walk through building objects. When near an NPC, the player can press an action button to open a dialog box with text and two choice buttons. The camera follows the player along the X and Y axis without changing depth. The player character can be controlled with keyboard or touch screen controls. \ No newline at end of file diff --git a/examples/starting-3d-top-down-rpg/starting-3d-top-down-rpg.json b/examples/starting-3d-top-down-rpg/starting-3d-top-down-rpg.json index e486b1e91..978e72a36 100644 --- a/examples/starting-3d-top-down-rpg/starting-3d-top-down-rpg.json +++ b/examples/starting-3d-top-down-rpg/starting-3d-top-down-rpg.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3dtopdownrpg", + "name": "starting-3d-top-down-rpg", "description": "", "author": "", "windowWidth": 1280, @@ -253,17 +253,12 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.23089183385225553, - "windowMask": false + "zoomFactor": 0.20902556228335842, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], - "variables": [ - { - "name": "SceneScaling", - "type": "number", - "value": 0.75 - } - ], + "variables": [], "instances": [ { "angle": 0, @@ -309,7 +304,7 @@ "height": 64, "keepRatio": true, "layer": "", - "name": "TopDown_Character", + "name": "Player", "persistentUuid": "abf37868-f4b9-4b4d-8587-7d351109619c", "width": 64, "x": 640, @@ -361,7 +356,7 @@ "height": 192, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Obstacle", "persistentUuid": "5512679b-b95a-451c-aac1-2f3137ce550f", "width": 192, "x": 768, @@ -377,7 +372,7 @@ "depth": 256, "height": 192, "layer": "", - "name": "Obstacle", + "name": "Building_Obstacle", "persistentUuid": "63570c2d-a8de-4b0e-b25f-3c60eb4018d7", "width": 256, "x": 1280, @@ -394,7 +389,7 @@ "height": 384, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Obstacle", "persistentUuid": "b6db06ad-aa93-4b9e-9928-d708a70a5b40", "width": 384, "x": 384, @@ -411,7 +406,7 @@ "height": 512, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Obstacle", "persistentUuid": "4c1739f2-5c9a-4bf8-b192-00a2a4d27469", "width": 256, "x": -256, @@ -479,7 +474,7 @@ "keepRatio": true, "layer": "MobileControls", "locked": true, - "name": "Joystick", + "name": "MovementJoystick", "persistentUuid": "f45d2c95-0d48-4da5-a5a5-75c6f88a1cb4", "width": 0, "x": 176, @@ -582,7 +577,7 @@ "height": 320, "keepRatio": true, "layer": "", - "name": "Obstacle", + "name": "Building_Obstacle", "persistentUuid": "d9cfd4f5-2075-4178-aef2-c0ecc9b86e80", "width": 256, "x": 1280, @@ -703,7 +698,7 @@ }, { "assetStoreId": "", - "name": "TopDown_Character", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -857,7 +852,7 @@ }, { "assetStoreId": "", - "name": "Obstacle", + "name": "Building_Obstacle", "type": "Scene3D::Cube3DObject", "variables": [], "effects": [], @@ -966,7 +961,7 @@ }, { "assetStoreId": "e71bd69f896d6c7531b48c65ceb5da25071d4fbdeb518aeceecba8d21f34ed8d", - "name": "Joystick", + "name": "MovementJoystick", "type": "SpriteMultitouchJoystick::SpriteMultitouchJoystick", "variant": "", "variables": [], @@ -1051,13 +1046,13 @@ "folderName": "__ROOT", "children": [ { - "objectName": "TopDown_Character" + "objectName": "Player" }, { "objectName": "NPC" }, { - "objectName": "Obstacle" + "objectName": "Building_Obstacle" }, { "objectName": "Ground" @@ -1075,7 +1070,7 @@ "folderName": "Mobile Controls", "children": [ { - "objectName": "Joystick" + "objectName": "MovementJoystick" }, { "objectName": "ActionButton" @@ -1139,8 +1134,8 @@ "value": "SeparateFromObjects" }, "parameters": [ - "TopDown_Character", - "Obstacle", + "Player", + "Building_Obstacle", "no" ] } @@ -1170,7 +1165,7 @@ "value": "CollisionNP" }, "parameters": [ - "TopDown_Character", + "Player", "NPC", "", "", @@ -1211,7 +1206,7 @@ "value": "ActivateBehavior" }, "parameters": [ - "TopDown_Character", + "Player", "TopDownMovement", "" ] @@ -1262,8 +1257,8 @@ }, "parameters": [ "NPC", - "TopDown_Character.X()", - "TopDown_Character.Y()", + "Player.X()", + "Player.Y()", "" ] } @@ -1316,7 +1311,7 @@ "value": "ActivateBehavior" }, "parameters": [ - "TopDown_Character", + "Player", "TopDownMovement", "yes" ] @@ -1367,9 +1362,9 @@ "effectType": "Scene3D::DirectionalLight", "name": "3D Sun Light", "doubleParameters": { - "distanceFromCamera": 1500, + "distanceFromCamera": 2000, "elevation": 40, - "frustumSize": 3000, + "frustumSize": 3500, "intensity": 0.75, "minimumShadowBias": 0, "rotation": 300 @@ -7450,6 +7445,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -15596,6 +15592,7 @@ ] } ], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -16883,7 +16880,8 @@ } ] } - ] + ], + "editionSettings": {} }, { "areaMaxX": 600, @@ -17173,7 +17171,8 @@ } ] } - ] + ], + "editionSettings": {} } ] } @@ -18718,6 +18717,7 @@ "initialVariables": [] } ], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -20191,7 +20191,8 @@ "stringProperties": [], "initialVariables": [] } - ] + ], + "editionSettings": {} }, { "areaMaxX": 256, @@ -20496,7 +20497,8 @@ "stringProperties": [], "initialVariables": [] } - ] + ], + "editionSettings": {} } ] } diff --git a/examples/starting-3d-twin-stick-shooter/README.md b/examples/starting-3d-twin-stick-shooter/README.md index 888d536f7..14883f481 100644 --- a/examples/starting-3d-twin-stick-shooter/README.md +++ b/examples/starting-3d-twin-stick-shooter/README.md @@ -1,5 +1,3 @@ # 3D Twin Stick Shooter -A 3D, top-down, game where the player can move around and shoot at enemies which are randomly created around the player and moving toward them. -The player movement and shooting direction are independant. -Support for mobile controls (using two virtual joysticks, hence the name "Twin Stick Shooter") and mouse/keyboard. \ No newline at end of file +A 3D top-down twin-stick shooter where the player moves freely along the X and Y axes while independently aiming to control the direction that bullets are fired. Enemies spawn off-screen around the player and continuously move toward them. Enemies take three hits to be destroyed, and the player dies if they collide with an enemy. The game supports keyboard and mouse controls, or mobile touch controls using two virtual joysticks for independent movement and shooting. \ No newline at end of file diff --git a/examples/starting-3d-twin-stick-shooter/starting-3d-twin-stick-shooter.json b/examples/starting-3d-twin-stick-shooter/starting-3d-twin-stick-shooter.json index 5f4ccc87d..d4a9f0c81 100644 --- a/examples/starting-3d-twin-stick-shooter/starting-3d-twin-stick-shooter.json +++ b/examples/starting-3d-twin-stick-shooter/starting-3d-twin-stick-shooter.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3dtwinstickshooter", + "name": "starting-3d-twin-stick-shooter", "description": "", "author": "", "windowWidth": 1280, @@ -199,7 +199,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.34375202416123274, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { @@ -293,7 +294,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "TopDown_Character", + "name": "Player", "persistentUuid": "9b0c35a1-d7ed-48b1-9f0d-f2fbbf7c17f7", "width": 0, "x": 634, @@ -553,7 +554,7 @@ }, { "assetStoreId": "", - "name": "TopDown_Character", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -590,6 +591,7 @@ "RandomizedAngle": 0 }, { + "isFolded": true, "name": "SmoothCamera", "type": "SmoothCamera::SmoothCamera", "LeftwardSpeed": 0.9, @@ -752,13 +754,13 @@ "folderName": "__ROOT", "children": [ { - "objectName": "TopDown_Character" + "objectName": "Player" }, { - "objectName": "Enemy" + "objectName": "Bullet" }, { - "objectName": "Bullet" + "objectName": "Enemy" }, { "objectName": "Background" @@ -825,6 +827,36 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetCenter" + }, + "parameters": [ + "Background", + "=", + "CameraCenterX() - mod(CameraCenterX(), 160) + 160", + "=", + "CameraCenterY() - mod(CameraCenterY(), 160) - 160" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Enemy logic" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -848,8 +880,8 @@ "parameters": [ "", "Enemy", - "TopDown_Character.X() + (RandomWithStep(-1,1,2) * SceneWindowWidth())", - "TopDown_Character.Y() + (RandomWithStep(-1,1,2) * SceneWindowHeight())", + "Player.X() + (RandomWithStep(-1, 1, 2) * SceneWindowWidth())", + "Player.Y() + (RandomWithStep(-1, 1, 2) * SceneWindowHeight())", "" ] }, @@ -874,7 +906,7 @@ }, "parameters": [ "Enemy", - "TopDown_Character", + "Player", "100", "0" ] @@ -885,26 +917,26 @@ }, "parameters": [ "Enemy", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "0", "" ] - }, - { - "type": { - "value": "SetCenter" - }, - "parameters": [ - "Background", - "=", - "CameraCenterX() - mod(CameraCenterX(), 160) + 160", - "=", - "CameraCenterY() - mod(CameraCenterY(), 160) - 160" - ] } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Player movement" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -941,7 +973,7 @@ "value": "RotateTowardPosition" }, "parameters": [ - "TopDown_Character", + "Player", "CursorX()", "CursorY()", "0", @@ -953,12 +985,12 @@ "value": "FireBullet::FireBullet::Fire" }, "parameters": [ - "TopDown_Character", + "Player", "FireBullet", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "Bullet", - "TopDown_Character.Angle()", + "Player.Angle()", "400", "300" ] @@ -984,7 +1016,7 @@ "value": "RotateTowardAngle" }, "parameters": [ - "TopDown_Character", + "Player", "SpriteMultitouchJoystick::StickAngle(2, \"Secondary\")", "0", "0" @@ -995,18 +1027,30 @@ "value": "FireBullet::FireBullet::Fire" }, "parameters": [ - "TopDown_Character", + "Player", "FireBullet", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "Bullet", - "TopDown_Character.Angle()", + "Player.Angle()", "400", "300" ] } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Health management" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -1081,7 +1125,7 @@ "value": "CollisionNP" }, "parameters": [ - "TopDown_Character", + "Player", "Enemy", "", "", @@ -5053,6 +5097,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-3d-vampire-survivor/README.md b/examples/starting-3d-vampire-survivor/README.md index e1441c2dd..1c3d1eee5 100644 --- a/examples/starting-3d-vampire-survivor/README.md +++ b/examples/starting-3d-vampire-survivor/README.md @@ -1,5 +1,3 @@ # Vampire Survivors-like game -A 3D, top-down, game where the player can move around and automatically fires bullets toward enemies who are moving toward them. -This is similar to casual survival games like Vampire Survivors. -Support for both mobile controls and keyboard. +A 3D vampire survivors-style game with an angled top down camera that follows the player, where the player can move freely along the X and Y axis. Enemies spawn off-screen around the player and continuously move toward them. When enemies get within range, the player automatically fires bullets at them. Enemies take three hits to be destroyed, and the player dies if they collide with an enemy. The game supports keyboard and mobile touch controls. diff --git a/examples/starting-3d-vampire-survivor/starting-3d-vampire-survivor.json b/examples/starting-3d-vampire-survivor/starting-3d-vampire-survivor.json index ffd451793..bd1aabd54 100644 --- a/examples/starting-3d-vampire-survivor/starting-3d-vampire-survivor.json +++ b/examples/starting-3d-vampire-survivor/starting-3d-vampire-survivor.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 242, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -19,7 +19,7 @@ "sizeOnStartupMode": "", "templateSlug": "starting-top-down", "version": "1.0.0", - "name": "starting_3dvampiresurvivor", + "name": "starting-3d-vampire-survivor", "description": "", "author": "", "windowWidth": 1280, @@ -198,8 +198,9 @@ "gridColor": 10401023, "gridAlpha": 0.8, "snap": false, - "zoomFactor": 0.34375202416123274, - "windowMask": false + "zoomFactor": 0.32169117647059, + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [], "variables": [], @@ -264,7 +265,7 @@ "height": 0, "keepRatio": true, "layer": "", - "name": "TopDown_Character", + "name": "Player", "persistentUuid": "9b0c35a1-d7ed-48b1-9f0d-f2fbbf7c17f7", "width": 0, "x": 634, @@ -419,11 +420,11 @@ "topFaceResourceName": "", "bottomFaceResourceName": "", "frontFaceVisible": true, - "backFaceVisible": true, - "leftFaceVisible": true, - "rightFaceVisible": true, - "topFaceVisible": true, - "bottomFaceVisible": true, + "backFaceVisible": false, + "leftFaceVisible": false, + "rightFaceVisible": false, + "topFaceVisible": false, + "bottomFaceVisible": false, "frontFaceResourceRepeat": true, "backFaceResourceRepeat": false, "leftFaceResourceRepeat": false, @@ -438,7 +439,7 @@ }, { "assetStoreId": "", - "name": "TopDown_Character", + "name": "Player", "type": "Scene3D::Model3DObject", "variables": [], "effects": [], @@ -637,7 +638,7 @@ "folderName": "__ROOT", "children": [ { - "objectName": "TopDown_Character" + "objectName": "Player" }, { "objectName": "Enemy" @@ -707,6 +708,36 @@ } ] }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [ + { + "type": { + "value": "SetCenter" + }, + "parameters": [ + "Background", + "=", + "CameraCenterX() - mod(CameraCenterX(), 320) +160", + "=", + "CameraCenterY() - mod(CameraCenterY(), 320) - 320" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Enemy logic" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -730,8 +761,8 @@ "parameters": [ "", "Enemy", - "TopDown_Character.X() + (RandomWithStep(-1,1,2) * SceneWindowWidth()/1.5)", - "TopDown_Character.Y() + (RandomWithStep(-1,1,2) * SceneWindowHeight()/1.5) - 100", + "Player.X() + (RandomWithStep(-1, 1, 2) * SceneWindowWidth() / 1.5)", + "Player.Y() + (RandomWithStep(-1, 1, 2) * SceneWindowHeight() / 1.5) - 100", "" ] }, @@ -750,31 +781,31 @@ "type": "BuiltinCommonInstructions::Standard", "conditions": [], "actions": [ - { - "type": { - "value": "SetCenter" - }, - "parameters": [ - "Background", - "=", - "CameraCenterX() - mod(CameraCenterX(), 320) +160", - "=", - "CameraCenterY() - mod(CameraCenterY(), 320) - 320" - ] - }, { "type": { "value": "AddForceVers" }, "parameters": [ "Enemy", - "TopDown_Character", + "Player", "100", "0" ] } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Fire bullets" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -784,7 +815,7 @@ }, "parameters": [ "Enemy", - "TopDown_Character", + "Player", "500", "" ] @@ -795,8 +826,8 @@ }, "parameters": [ "Enemy", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "" ] } @@ -807,10 +838,10 @@ "value": "FireBullet::FireBullet::FireTowardPosition" }, "parameters": [ - "TopDown_Character", + "Player", "FireBullet", - "TopDown_Character.CenterX()", - "TopDown_Character.CenterY()", + "Player.CenterX()", + "Player.CenterY()", "Bullet", "Enemy.CenterX()", "Enemy.CenterY()", @@ -826,11 +857,23 @@ "Bullet", "Object3D", "=", - "TopDown_Character.Object3D::Depth()/2" + "Player.Object3D::Depth() / 2" ] } ] }, + { + "type": "BuiltinCommonInstructions::Comment", + "color": { + "b": 109, + "g": 230, + "r": 255, + "textB": 0, + "textG": 0, + "textR": 0 + }, + "comment": "Health management" + }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ @@ -905,7 +948,7 @@ "value": "CollisionNP" }, "parameters": [ - "TopDown_Character", + "Player", "Enemy", "", "", @@ -4877,6 +4920,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", diff --git a/examples/starting-twin-stick-shooter/starting-twin-stick-shooter.json b/examples/starting-twin-stick-shooter/starting-twin-stick-shooter.json index 861253e22..29e4bce57 100644 --- a/examples/starting-twin-stick-shooter/starting-twin-stick-shooter.json +++ b/examples/starting-twin-stick-shooter/starting-twin-stick-shooter.json @@ -1,7 +1,7 @@ { "firstLayout": "", "gdVersion": { - "build": 239, + "build": 245, "major": 5, "minor": 5, "revision": 0 @@ -178,7 +178,8 @@ "gridAlpha": 0.8, "snap": false, "zoomFactor": 0.5653158055126329, - "windowMask": false + "windowMask": false, + "selectedLayer": "" }, "objectsGroups": [ { @@ -821,8 +822,8 @@ "parameters": [ "", "Enemy", - "TopDown_Character.X() + (RandomWithStep(-1,1,2) * SceneWindowWidth()/2)", - "TopDown_Character.Y() + (RandomWithStep(-1,1,2) * SceneWindowHeight()/2)", + "TopDown_Character.X() + (RandomWithStep(-1, 1, 2) * SceneWindowWidth() / 2)", + "TopDown_Character.Y() + (RandomWithStep(-1, 1, 2) * SceneWindowHeight() / 2)", "" ] }, @@ -4293,6 +4294,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "Property" }, { @@ -4306,9 +4308,15 @@ "type": "Choice", "label": "Joystick name", "group": "Controls", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -4843,6 +4851,7 @@ "extraInformation": [ "TopDownMovementBehavior::TopDownMovementBehavior" ], + "choices": [], "name": "TopDownMovement" }, { @@ -4855,9 +4864,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -4866,10 +4881,19 @@ "type": "Choice", "label": "Stick mode", "group": "Controls", - "extraInformation": [ - "Analog", - "360°", - "8 Directions" + "choices": [ + { + "label": "Analog", + "value": "Analog" + }, + { + "label": "360°", + "value": "360°" + }, + { + "label": "8 Directions", + "value": "8 Directions" + } ], "name": "StickMode" } @@ -4994,6 +5018,7 @@ } ], "instances": [], + "editionSettings": {}, "eventsFunctions": [ { "fullName": "", @@ -5888,9 +5913,15 @@ "value": "Primary", "type": "Choice", "label": "Joystick name", - "extraInformation": [ - "Primary", - "Secondary" + "choices": [ + { + "label": "Primary", + "value": "Primary" + }, + { + "label": "Secondary", + "value": "Secondary" + } ], "name": "JoystickIdentifier" }, @@ -5909,6 +5940,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbAnchorOrigin" }, @@ -5928,6 +5960,7 @@ "extraInformation": [ "Thumb" ], + "choices": [], "hidden": true, "name": "ThumbIsScaledProportionally" }, @@ -11059,6 +11092,7 @@ "extraInformation": [ "PlatformBehavior::PlatformerObjectBehavior" ], + "choices": [], "name": "PlatformerCharacter" }, { @@ -11068,6 +11102,7 @@ "extraInformation": [ "SmoothCamera::SmoothCamera" ], + "choices": [], "name": "SmoothCamera" }, { @@ -16104,6 +16139,7 @@ "Linear", "Exponential" ], + "choices": [], "advanced": true, "name": "ExponentialCoolingRate" },