init defold game

This commit is contained in:
Travis Shears 2026-05-10 17:03:18 +02:00
parent 925d375313
commit 26e88c8f03
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469
20 changed files with 381 additions and 9 deletions

View file

@ -0,0 +1,86 @@
{
:code {
:breakpoints [
]
}
:workflow {
:open-tabs [
[
[
"/main/main.atlas"
:scene
]
[
"/main/main.collection"
:scene
]
[
"/main/player.tilesource"
:scene
]
[
"/main/player.script"
:code
]
[
"/main/main.script"
:code
]
[
"/game.project"
:cljfx-form-view
]
[
"/input/game.input_binding"
:cljfx-form-view
]
[
"/main/player.sprite"
:scene
]
]
]
:recent-files [
[
"/main/player.tilesource"
:text
]
[
"/main/player.sprite"
:text
]
[
"/main/main.atlas"
:scene
]
[
"/main/player.tilesource"
:scene
]
[
"/game.project"
:cljfx-form-view
]
[
"/input/game.input_binding"
:cljfx-form-view
]
[
"/main/main.collection"
:scene
]
[
"/main/player.sprite"
:scene
]
[
"/main/main.script"
:code
]
[
"/main/player.script"
:code
]
]
}
}

19
defold_game/README.md Normal file
View file

@ -0,0 +1,19 @@
# Welcome to Defold
This project was created from the "desktop" project template. This means that the settings in ["game.project"](defold://open?path=/game.project) have been changed to be suitable for a desktop game:
- The screen size is set to 1280x720
- Projection is set to Fixed Fit
- macOS and Windows icons are set
- Mouse clicks are bound to action "touch"
- A simple script in a game object is set up to receive and react to input
[Build and run](defold://project.build) to see it in action. You can of course alter these settings to fit your needs.
Check out [the documentation pages](https://defold.com/learn) for examples, tutorials, manuals and API docs.
If you run into trouble, help is available in [our forum](https://forum.defold.com).
Happy Defolding!
---

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

35
defold_game/game.project Normal file
View file

@ -0,0 +1,35 @@
[project]
title = Desktop Game
[bootstrap]
main_collection = /main/main.collectionc
[input]
game_binding = /input/game.input_bindingc
use_accelerometer = 0
[display]
width = 1280
height = 720
high_dpi = 1
[script]
shared_state = 1
[windows]
app_icon = /assets/app_icons/appicon.ico
[osx]
app_icon = /assets/app_icons/appicon.icns
[android]
input_method = HiddenInputField
[physics]
gravity_y = -1000.0
scale = 0.01
velocity_threshold = 100.0
[html5]
scale_mode = stretch

View file

@ -0,0 +1,20 @@
key_trigger {
input: KEY_W
action: "up"
}
key_trigger {
input: KEY_A
action: "left"
}
key_trigger {
input: KEY_S
action: "down"
}
key_trigger {
input: KEY_D
action: "right"
}
mouse_trigger {
input: MOUSE_BUTTON_LEFT
action: "touch"
}

View file

@ -0,0 +1,15 @@
images {
image: "/assets/images/background.png"
}
images {
image: "/assets/images/logo.png"
}
images {
image: "/builtins/graphics/particle_blob.png"
}
images {
image: "/assets/images/player.png"
pivot_x: 0.536806
pivot_y: 0.447809
}
extrude_borders: 2

View file

@ -0,0 +1,79 @@
name: "main"
scale_along_z: 0
embedded_instances {
id: "go"
data: "components {\n"
" id: \"main\"\n"
" component: \"/main/main.script\"\n"
"}\n"
"embedded_components {\n"
" id: \"logo\"\n"
" type: \"sprite\"\n"
" data: \"default_animation: \\\"logo\\\"\\n"
"material: \\\"/builtins/materials/sprite.material\\\"\\n"
"textures {\\n"
" sampler: \\\"texture_sampler\\\"\\n"
" texture: \\\"/main/main.atlas\\\"\\n"
"}\\n"
"\"\n"
"}\n"
"embedded_components {\n"
" id: \"background\"\n"
" type: \"sprite\"\n"
" data: \"default_animation: \\\"background\\\"\\n"
"material: \\\"/builtins/materials/sprite.material\\\"\\n"
"textures {\\n"
" sampler: \\\"texture_sampler\\\"\\n"
" texture: \\\"/main/main.atlas\\\"\\n"
"}\\n"
"\"\n"
" position {\n"
" z: -0.5\n"
" }\n"
"}\n"
""
position {
x: 640.0
y: 360.0
}
}
embedded_instances {
id: "camera"
data: "embedded_components {\n"
" id: \"camera\"\n"
" type: \"camera\"\n"
" data: \"aspect_ratio: 1.0\\n"
"fov: 0.7854\\n"
"near_z: -1.0\\n"
"far_z: 1.0\\n"
"orthographic_projection: 1\\n"
"orthographic_mode: ORTHO_MODE_AUTO_COVER\\n"
"\"\n"
"}\n"
""
position {
x: 640.0
y: 360.0
}
}
embedded_instances {
id: "player"
data: "components {\n"
" id: \"body\"\n"
" component: \"/main/player.sprite\"\n"
" position {\n"
" x: 109.0\n"
" y: 90.0\n"
" }\n"
" scale {\n"
" x: 2.0\n"
" y: 2.0\n"
" z: 2.0\n"
" }\n"
"}\n"
"components {\n"
" id: \"player1\"\n"
" component: \"/main/player.script\"\n"
"}\n"
""
}

View file

@ -0,0 +1,10 @@
-- function init(self)
-- msg.post(".", "acquire_input_focus")
-- end
--
-- function on_input(self, action_id, action)
-- if action_id == hash("touch") and action.pressed then
-- print("Touch!")
-- end
-- end
--

View file

@ -0,0 +1,30 @@
function init(self)
msg.post(".", "acquire_input_focus") -- <1>
self.vel = vmath.vector3() -- <2>
end
function update(self, dt)
local pos = go.get_position() -- <3>
pos = pos + self.vel * dt -- <4>
go.set_position(pos) -- <5>
self.vel.x = 0 -- <6>
self.vel.y = 0
-- sprite.play_flipbook("#body", "s")
rot = go.get_rotation()
print(rot)
end
function on_input(self, action_id, action)
if action_id == hash("up") then
self.vel.y = 150 -- <7>
elseif action_id == hash("down") then
self.vel.y = -150
elseif action_id == hash("left") then
self.vel.x = -150 -- <8>
elseif action_id == hash("right") then
self.vel.x = 150
end
end

View file

@ -0,0 +1,6 @@
default_animation: "n"
material: "/builtins/materials/sprite.material"
textures {
sampler: "texture_sampler"
texture: "/main/player.tilesource"
}

View file

@ -0,0 +1,52 @@
image: "/assets/images/player.png"
tile_width: 25
tile_height: 25
collision_groups: "player"
animations {
id: "e"
start_tile: 4
end_tile: 4
playback: PLAYBACK_NONE
}
animations {
id: "n"
start_tile: 1
end_tile: 1
playback: PLAYBACK_NONE
}
animations {
id: "ne"
start_tile: 3
end_tile: 3
playback: PLAYBACK_NONE
}
animations {
id: "nw"
start_tile: 8
end_tile: 8
playback: PLAYBACK_NONE
}
animations {
id: "s"
start_tile: 2
end_tile: 2
playback: PLAYBACK_NONE
}
animations {
id: "se"
start_tile: 5
end_tile: 5
playback: PLAYBACK_NONE
}
animations {
id: "sw"
start_tile: 6
end_tile: 6
playback: PLAYBACK_NONE
}
animations {
id: "w"
start_tile: 7
end_tile: 7
playback: PLAYBACK_NONE
}