#lambgamedev — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #lambgamedev, aggregated by home.social.
-
Here is a WIP of the Zelda 64-style camera targeting system. It needs improvement, but I'm really unsure as to how to go about fixing it 😅
The project is called Slayer64 and is being developed by WINDBREKER
:)
I'm pretty proud of what I've made so far! I've come a long way since first starting to learn Godot ^^
None of this could have been made without @keyschain's help! She is inseparably important!
#zelda #ocarinaoftime #oot #legendofzelda #godot #godotdev #indiedev #lambgamedev -
Here is a WIP of the Zelda 64-style camera targeting system. It needs improvement, but I'm really unsure as to how to go about fixing it 😅
The project is called Slayer64 and is being developed by WINDBREKER
:)
I'm pretty proud of what I've made so far! I've come a long way since first starting to learn Godot ^^
None of this could have been made without @keyschain's help! She is inseparably important!
#zelda #ocarinaoftime #oot #legendofzelda #godot #godotdev #indiedev #lambgamedev -
Here is a WIP of the Zelda 64-style camera targeting system. It needs improvement, but I'm really unsure as to how to go about fixing it 😅
The project is called Slayer64 and is being developed by WINDBREKER
:)
I'm pretty proud of what I've made so far! I've come a long way since first starting to learn Godot ^^
None of this could have been made without @keyschain's help! She is inseparably important!
#zelda #ocarinaoftime #oot #legendofzelda #godot #godotdev #indiedev #lambgamedev -
made a very simple 2D Zelda-style camera. might work on it more as practice
#godot #zelda #gamedev #lambgamedev -
made a very simple 2D Zelda-style camera. might work on it more as practice
#godot #zelda #gamedev #lambgamedev -
made a very simple 2D Zelda-style camera. might work on it more as practice
#godot #zelda #gamedev #lambgamedev -
Urge to make every game going forward for the Ayn Thor and Anbernic RG DS...rising.... Must r-r-resist...
#lambgamedev -
Urge to make every game going forward for the Ayn Thor and Anbernic RG DS...rising.... Must r-r-resist...
#lambgamedev -
Urge to make every game going forward for the Ayn Thor and Anbernic RG DS...rising.... Must r-r-resist...
#lambgamedev -
I think I've reached a point where it's good enough and I can move on. I can't figure out how to get the "danger zone" flash animation working, but oh well, maybe in another 10 months I'll take another crack at it.
#lambgamedev #indiedev #gamedev #godot #zelda -
I think I've reached a point where it's good enough and I can move on. I can't figure out how to get the "danger zone" flash animation working, but oh well, maybe in another 10 months I'll take another crack at it.
#lambgamedev #indiedev #gamedev #godot #zelda -
I think I've reached a point where it's good enough and I can move on. I can't figure out how to get the "danger zone" flash animation working, but oh well, maybe in another 10 months I'll take another crack at it.
#lambgamedev #indiedev #gamedev #godot #zelda -
I think I've reached a point where it's good enough and I can move on. I can't figure out how to get the "danger zone" flash animation working, but oh well, maybe in another 10 months I'll take another crack at it.
#lambgamedev #indiedev #gamedev #godot #zelda -
The game I helped work on is out!
TEMPEST
BECOME ARMAGEDDON
It's a retro-style FPS where you play as a samurai with a gun and you shoot alien invaders in feudal Japan!!
You can play it in your browser here!
Unfortunately, none of my work made it into the release, but we all did put a lot of effort into it! Please give it a try and if you have an Itch account feel free to rate Tempest on the 32-Bit Winter Jam!
You can read about my unfinished work on Tempest on my website!
#gamedev #indiedev #godot #32bitjam #32bitwinterjam #lambgamedev
RE: https://transfem.social/notes/agvm2w81s7lj190q -
The game I helped work on is out!
TEMPEST
BECOME ARMAGEDDON
It's a retro-style FPS where you play as a samurai with a gun and you shoot alien invaders in feudal Japan!!
You can play it in your browser here!
Unfortunately, none of my work made it into the release, but we all did put a lot of effort into it! Please give it a try and if you have an Itch account feel free to rate Tempest on the 32-Bit Winter Jam!
You can read about my unfinished work on Tempest on my website!
#gamedev #indiedev #godot #32bitjam #32bitwinterjam #lambgamedev
RE: https://transfem.social/notes/agvm2w81s7lj190q -
The game I helped work on is out!
TEMPEST
BECOME ARMAGEDDON
It's a retro-style FPS where you play as a samurai with a gun and you shoot alien invaders in feudal Japan!!
You can play it in your browser here!
Unfortunately, none of my work made it into the release, but we all did put a lot of effort into it! Please give it a try and if you have an Itch account feel free to rate Tempest on the 32-Bit Winter Jam!
You can read about my unfinished work on Tempest on my website!
#gamedev #indiedev #godot #32bitjam #32bitwinterjam #lambgamedev
RE: https://transfem.social/notes/agvm2w81s7lj190q -
I'm not restarting the 3D Zelda project, but the broken health bar always bugged me, so I got to thinking about it more today and with a little perseverance I did it! It also works if you change the HP by amounts other than 1.
It's little moments like these that make me think that maybe game dev isn't impossible for me, just that it requires a lot of thinking, breaking concepts down into smaller tasks, and time away from problems.class_name HudHealth extends Node const NAME_HEART: String = "HudHeart" ## The name of each heart node. Used to identify heart nodes from other nodes. const HRT_SECTIONS: int = 4 ## Don't change this from 4, everything breaks otherwise. export var hrt: PackedScene ## The heart scene export var hp: int = 0 setget _hp_set func _hp_set(value: int = hp) -> void: hp = clamp(value, 0, hp_max) export var hp_max: int = 3 * HRT_SECTIONS ## Determines the maxmimum amount of health the player has. Every 4 hp adds a new heart to the health bar. export var grid_collumns: int = 10 ## Determines how many hearts can be in a row before a new row is started. onready var grid = $"../Grid" onready var btn_add = $"../ButtonAdd" onready var btn_subtract = $"../ButtonSubtract" onready var lbl_debug = $"../LblDebug" var target_heart: int ## Determines which heart in the grid should be segmented. func _ready() -> void: grid.columns = grid_collumns # Empty any heart nodes that might already be children of the grid node for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): grid.get_child(i).name = "_REMOVE" # Necessary for some reason or else future HudHeart node names will continue counting as if the previous ones were still there despite those already being deleted. Very strange. grid.get_child(i).queue_free() else: printerr("There were stray nodes in the HudHealth grid node at child " + str(i) + ", name " + grid.get_child(i).name + ". Deleted.") grid.get_child(i).queue_free() # Add hearts to grid for i in ceil(hp_max / HRT_SECTIONS): var h: Control = hrt.instance() grid.add_child(h, true) get_node("../Grid/HudHeart" + str(i) + "/Heart").value = 0 # Make all hearts' values 0 # Ensures grid h-separation and v-separation are appropriate for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = grid.get_child(i).get_child(0) grid.add_constant_override("hseparation", h.rect_size.x) grid.add_constant_override("vseparation", h.rect_size.y) break # Only needs to happen once. update_hud_health() func update_hud_health() -> void: target_heart = ceil(float(hp) / HRT_SECTIONS) - 1 # find the target heart based on player's HP for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = get_node("../Grid/HudHeart" + str(i) + "/Heart") # Handle all hearts before the target heart if i < target_heart: h.value = HRT_SECTIONS # Handle the target heart if i == target_heart: h.value = hp % HRT_SECTIONS if hp % HRT_SECTIONS == 0: h.value = HRT_SECTIONS # Handle all hearts after the target heart if i > target_heart: h.value = 0 lbl_debug.text = "HP: " + str(hp) + "\nTarget Heart: " + str(target_heart) + "\nModulo: " + str(hp % HRT_SECTIONS) func _on_ButtonAdd_button_up(): hp += 1 _hp_set() update_hud_health() func _on_ButtonSubtract_button_up(): hp -= 1 _hp_set() update_hud_health()
I'd like to improve it to the point where the bar fills and depletes smoothly like it does in Breath of the Wild, but that seems like adding complications to a currently working and serviceable solution.
#zelda #gamedev #indiedev #indiegames #godot #lambgamedev
RE: https://transfem.social/notes/a80qv4k7f6po6olz -
I'm not restarting the 3D Zelda project, but the broken health bar always bugged me, so I got to thinking about it more today and with a little perseverance I did it! It also works if you change the HP by amounts other than 1.
It's little moments like these that make me think that maybe game dev isn't impossible for me, just that it requires a lot of thinking, breaking concepts down into smaller tasks, and time away from problems.class_name HudHealth extends Node const NAME_HEART: String = "HudHeart" ## The name of each heart node. Used to identify heart nodes from other nodes. const HRT_SECTIONS: int = 4 ## Don't change this from 4, everything breaks otherwise. export var hrt: PackedScene ## The heart scene export var hp: int = 0 setget _hp_set func _hp_set(value: int = hp) -> void: hp = clamp(value, 0, hp_max) export var hp_max: int = 3 * HRT_SECTIONS ## Determines the maxmimum amount of health the player has. Every 4 hp adds a new heart to the health bar. export var grid_collumns: int = 10 ## Determines how many hearts can be in a row before a new row is started. onready var grid = $"../Grid" onready var btn_add = $"../ButtonAdd" onready var btn_subtract = $"../ButtonSubtract" onready var lbl_debug = $"../LblDebug" var target_heart: int ## Determines which heart in the grid should be segmented. func _ready() -> void: grid.columns = grid_collumns # Empty any heart nodes that might already be children of the grid node for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): grid.get_child(i).name = "_REMOVE" # Necessary for some reason or else future HudHeart node names will continue counting as if the previous ones were still there despite those already being deleted. Very strange. grid.get_child(i).queue_free() else: printerr("There were stray nodes in the HudHealth grid node at child " + str(i) + ", name " + grid.get_child(i).name + ". Deleted.") grid.get_child(i).queue_free() # Add hearts to grid for i in ceil(hp_max / HRT_SECTIONS): var h: Control = hrt.instance() grid.add_child(h, true) get_node("../Grid/HudHeart" + str(i) + "/Heart").value = 0 # Make all hearts' values 0 # Ensures grid h-separation and v-separation are appropriate for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = grid.get_child(i).get_child(0) grid.add_constant_override("hseparation", h.rect_size.x) grid.add_constant_override("vseparation", h.rect_size.y) break # Only needs to happen once. update_hud_health() func update_hud_health() -> void: target_heart = ceil(float(hp) / HRT_SECTIONS) - 1 # find the target heart based on player's HP for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = get_node("../Grid/HudHeart" + str(i) + "/Heart") # Handle all hearts before the target heart if i < target_heart: h.value = HRT_SECTIONS # Handle the target heart if i == target_heart: h.value = hp % HRT_SECTIONS if hp % HRT_SECTIONS == 0: h.value = HRT_SECTIONS # Handle all hearts after the target heart if i > target_heart: h.value = 0 lbl_debug.text = "HP: " + str(hp) + "\nTarget Heart: " + str(target_heart) + "\nModulo: " + str(hp % HRT_SECTIONS) func _on_ButtonAdd_button_up(): hp += 1 _hp_set() update_hud_health() func _on_ButtonSubtract_button_up(): hp -= 1 _hp_set() update_hud_health()
I'd like to improve it to the point where the bar fills and depletes smoothly like it does in Breath of the Wild, but that seems like adding complications to a currently working and serviceable solution.
#zelda #gamedev #indiedev #indiegames #godot #lambgamedev
RE: https://transfem.social/notes/a80qv4k7f6po6olz -
I'm not restarting the 3D Zelda project, but the broken health bar always bugged me, so I got to thinking about it more today and with a little perseverance I did it! It also works if you change the HP by amounts other than 1.
It's little moments like these that make me think that maybe game dev isn't impossible for me, just that it requires a lot of thinking, breaking concepts down into smaller tasks, and time away from problems.class_name HudHealth extends Node const NAME_HEART: String = "HudHeart" ## The name of each heart node. Used to identify heart nodes from other nodes. const HRT_SECTIONS: int = 4 ## Don't change this from 4, everything breaks otherwise. export var hrt: PackedScene ## The heart scene export var hp: int = 0 setget _hp_set func _hp_set(value: int = hp) -> void: hp = clamp(value, 0, hp_max) export var hp_max: int = 3 * HRT_SECTIONS ## Determines the maxmimum amount of health the player has. Every 4 hp adds a new heart to the health bar. export var grid_collumns: int = 10 ## Determines how many hearts can be in a row before a new row is started. onready var grid = $"../Grid" onready var btn_add = $"../ButtonAdd" onready var btn_subtract = $"../ButtonSubtract" onready var lbl_debug = $"../LblDebug" var target_heart: int ## Determines which heart in the grid should be segmented. func _ready() -> void: grid.columns = grid_collumns # Empty any heart nodes that might already be children of the grid node for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): grid.get_child(i).name = "_REMOVE" # Necessary for some reason or else future HudHeart node names will continue counting as if the previous ones were still there despite those already being deleted. Very strange. grid.get_child(i).queue_free() else: printerr("There were stray nodes in the HudHealth grid node at child " + str(i) + ", name " + grid.get_child(i).name + ". Deleted.") grid.get_child(i).queue_free() # Add hearts to grid for i in ceil(hp_max / HRT_SECTIONS): var h: Control = hrt.instance() grid.add_child(h, true) get_node("../Grid/HudHeart" + str(i) + "/Heart").value = 0 # Make all hearts' values 0 # Ensures grid h-separation and v-separation are appropriate for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = grid.get_child(i).get_child(0) grid.add_constant_override("hseparation", h.rect_size.x) grid.add_constant_override("vseparation", h.rect_size.y) break # Only needs to happen once. update_hud_health() func update_hud_health() -> void: target_heart = ceil(float(hp) / HRT_SECTIONS) - 1 # find the target heart based on player's HP for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = get_node("../Grid/HudHeart" + str(i) + "/Heart") # Handle all hearts before the target heart if i < target_heart: h.value = HRT_SECTIONS # Handle the target heart if i == target_heart: h.value = hp % HRT_SECTIONS if hp % HRT_SECTIONS == 0: h.value = HRT_SECTIONS # Handle all hearts after the target heart if i > target_heart: h.value = 0 lbl_debug.text = "HP: " + str(hp) + "\nTarget Heart: " + str(target_heart) + "\nModulo: " + str(hp % HRT_SECTIONS) func _on_ButtonAdd_button_up(): hp += 1 _hp_set() update_hud_health() func _on_ButtonSubtract_button_up(): hp -= 1 _hp_set() update_hud_health()
I'd like to improve it to the point where the bar fills and depletes smoothly like it does in Breath of the Wild, but that seems like adding complications to a currently working and serviceable solution.
#zelda #gamedev #indiedev #indiegames #godot #lambgamedev
RE: https://transfem.social/notes/a80qv4k7f6po6olz -
I'm not restarting the 3D Zelda project, but the broken health bar always bugged me, so I got to thinking about it more today and with a little perseverance I did it! It also works if you change the HP by amounts other than 1.
It's little moments like these that make me think that maybe game dev isn't impossible for me, just that it requires a lot of thinking, breaking concepts down into smaller tasks, and time away from problems.class_name HudHealth extends Node const NAME_HEART: String = "HudHeart" ## The name of each heart node. Used to identify heart nodes from other nodes. const HRT_SECTIONS: int = 4 ## Don't change this from 4, everything breaks otherwise. export var hrt: PackedScene ## The heart scene export var hp: int = 0 setget _hp_set func _hp_set(value: int = hp) -> void: hp = clamp(value, 0, hp_max) export var hp_max: int = 3 * HRT_SECTIONS ## Determines the maxmimum amount of health the player has. Every 4 hp adds a new heart to the health bar. export var grid_collumns: int = 10 ## Determines how many hearts can be in a row before a new row is started. onready var grid = $"../Grid" onready var btn_add = $"../ButtonAdd" onready var btn_subtract = $"../ButtonSubtract" onready var lbl_debug = $"../LblDebug" var target_heart: int ## Determines which heart in the grid should be segmented. func _ready() -> void: grid.columns = grid_collumns # Empty any heart nodes that might already be children of the grid node for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): grid.get_child(i).name = "_REMOVE" # Necessary for some reason or else future HudHeart node names will continue counting as if the previous ones were still there despite those already being deleted. Very strange. grid.get_child(i).queue_free() else: printerr("There were stray nodes in the HudHealth grid node at child " + str(i) + ", name " + grid.get_child(i).name + ". Deleted.") grid.get_child(i).queue_free() # Add hearts to grid for i in ceil(hp_max / HRT_SECTIONS): var h: Control = hrt.instance() grid.add_child(h, true) get_node("../Grid/HudHeart" + str(i) + "/Heart").value = 0 # Make all hearts' values 0 # Ensures grid h-separation and v-separation are appropriate for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = grid.get_child(i).get_child(0) grid.add_constant_override("hseparation", h.rect_size.x) grid.add_constant_override("vseparation", h.rect_size.y) break # Only needs to happen once. update_hud_health() func update_hud_health() -> void: target_heart = ceil(float(hp) / HRT_SECTIONS) - 1 # find the target heart based on player's HP for i in grid.get_child_count(): if grid.get_child(i).name.begins_with(NAME_HEART): var h: TextureProgress = get_node("../Grid/HudHeart" + str(i) + "/Heart") # Handle all hearts before the target heart if i < target_heart: h.value = HRT_SECTIONS # Handle the target heart if i == target_heart: h.value = hp % HRT_SECTIONS if hp % HRT_SECTIONS == 0: h.value = HRT_SECTIONS # Handle all hearts after the target heart if i > target_heart: h.value = 0 lbl_debug.text = "HP: " + str(hp) + "\nTarget Heart: " + str(target_heart) + "\nModulo: " + str(hp % HRT_SECTIONS) func _on_ButtonAdd_button_up(): hp += 1 _hp_set() update_hud_health() func _on_ButtonSubtract_button_up(): hp -= 1 _hp_set() update_hud_health()
I'd like to improve it to the point where the bar fills and depletes smoothly like it does in Breath of the Wild, but that seems like adding complications to a currently working and serviceable solution.
#zelda #gamedev #indiedev #indiegames #godot #lambgamedev
RE: https://transfem.social/notes/a80qv4k7f6po6olz -
I'm learning programming :3
Here's a thing I made. It sorts high scores for a local leaderboard. It must follow a[[HISCORE, DATETIME, NAME], [...], [...]]format (or at least the first two items must be high score and date-time).class LeaderboardSort: ## Sorts duplicate scores prioritizing the earlier datetime. static func sort_duplicate_scores(a, b) -> bool: if a[1] < b[1]: return true return false ## Sorts scores. static func sort_scores(a, b) -> bool: if a[0] > b[0]: return true return false ## Sorts the leaderboard array from highest to lowest score and handleds duplicate scores. ## Leaderboard array must be arranged like so: [HISCORE, int(Time.get_datetime_string_from_system(true)), "PLAYER_NAME"] func sort_leaderboard(lb: Array) -> void: lb.sort_custom(LeaderboardSort, "sort_duplicate_scores") # This one must be done before sort_scores() lb.sort_custom(LeaderboardSort, "sort_scores")
It worked out for me! Let me know if there are any errors.
Looking up "godot leaderboard" online yielded a whole lot of nothing. There was SilentWolf and SimpleBoards, but a whole plugin to just do high score sorting seemed over the top to me. So, I decided to try to make a high score sorter myself. Thankfully, Godot hassort_custom()that makes it a lot simpler.
No idea what "static" functions do or what separates them from regular functions, but the Editor was telling me they gotta be static. I looked it up and the explanations aren't that helpful.
#godot #gdscript #gamedev #indiedev #lambgamedev -
I'm learning programming :3
Here's a thing I made. It sorts high scores for a local leaderboard. It must follow a[[HISCORE, DATETIME, NAME], [...], [...]]format (or at least the first two items must be high score and date-time).class LeaderboardSort: ## Sorts duplicate scores prioritizing the earlier datetime. static func sort_duplicate_scores(a, b) -> bool: if a[1] < b[1]: return true return false ## Sorts scores. static func sort_scores(a, b) -> bool: if a[0] > b[0]: return true return false ## Sorts the leaderboard array from highest to lowest score and handleds duplicate scores. ## Leaderboard array must be arranged like so: [HISCORE, int(Time.get_datetime_string_from_system(true)), "PLAYER_NAME"] func sort_leaderboard(lb: Array) -> void: lb.sort_custom(LeaderboardSort, "sort_duplicate_scores") # This one must be done before sort_scores() lb.sort_custom(LeaderboardSort, "sort_scores")
It worked out for me! Let me know if there are any errors.
Looking up "godot leaderboard" online yielded a whole lot of nothing. There was SilentWolf and SimpleBoards, but a whole plugin to just do high score sorting seemed over the top to me. So, I decided to try to make a high score sorter myself. Thankfully, Godot hassort_custom()that makes it a lot simpler.
No idea what "static" functions do or what separates them from regular functions, but the Editor was telling me they gotta be static. I looked it up and the explanations aren't that helpful.
#godot #gdscript #gamedev #indiedev #lambgamedev -
I'm learning programming :3
Here's a thing I made. It sorts high scores for a local leaderboard. It must follow a[[HISCORE, DATETIME, NAME], [...], [...]]format (or at least the first two items must be high score and date-time).class LeaderboardSort: ## Sorts duplicate scores prioritizing the earlier datetime. static func sort_duplicate_scores(a, b) -> bool: if a[1] < b[1]: return true return false ## Sorts scores. static func sort_scores(a, b) -> bool: if a[0] > b[0]: return true return false ## Sorts the leaderboard array from highest to lowest score and handleds duplicate scores. ## Leaderboard array must be arranged like so: [HISCORE, int(Time.get_datetime_string_from_system(true)), "PLAYER_NAME"] func sort_leaderboard(lb: Array) -> void: lb.sort_custom(LeaderboardSort, "sort_duplicate_scores") # This one must be done before sort_scores() lb.sort_custom(LeaderboardSort, "sort_scores")
It worked out for me! Let me know if there are any errors.
Looking up "godot leaderboard" online yielded a whole lot of nothing. There was SilentWolf and SimpleBoards, but a whole plugin to just do high score sorting seemed over the top to me. So, I decided to try to make a high score sorter myself. Thankfully, Godot hassort_custom()that makes it a lot simpler.
No idea what "static" functions do or what separates them from regular functions, but the Editor was telling me they gotta be static. I looked it up and the explanations aren't that helpful.
#godot #gdscript #gamedev #indiedev #lambgamedev -
Oh to be in an 8-person game studio making chill games about life, fun, and growing old...
#lambgamedev #indiegamedev #indiedev #gamedev -
Oh to be in an 8-person game studio making chill games about life, fun, and growing old...
#lambgamedev #indiegamedev #indiedev #gamedev -
Oh to be in an 8-person game studio making chill games about life, fun, and growing old...
#lambgamedev #indiegamedev #indiedev #gamedev -
I think I may have kinda killed it at programming this one thing in the game, I'm so happy
No idea if it's gonna continue to work later on, but it works now!!!!
#lambgamedev -
I think I may have kinda killed it at programming this one thing in the game, I'm so happy
No idea if it's gonna continue to work later on, but it works now!!!!
#lambgamedev -
I think I may have kinda killed it at programming this one thing in the game, I'm so happy
No idea if it's gonna continue to work later on, but it works now!!!!
#lambgamedev -
I made a little breakthrough in game programming yippee yippee
#lambgamedev -
I made a little breakthrough in game programming yippee yippee
#lambgamedev -
I made a little breakthrough in game programming yippee yippee
#lambgamedev -
2+ years of game dev experience
0 video games finished
They call her.....Lamb.....
#lambgamedev -
2+ years of game dev experience
0 video games finished
They call her.....Lamb.....
#lambgamedev -
2+ years of game dev experience
0 video games finished
They call her.....Lamb.....
#lambgamedev -
A very cool idea: developing an arcade game in Godot for a Raspberry Pi (or alternative), sticking that bad boy in an arcade cabinet.
Bonus points if it uses a CRT TV monitor.
#godot #gamedev #indiedev #lambgamedev #arcadegames #retrodev -
A very cool idea: developing an arcade game in Godot for a Raspberry Pi (or alternative), sticking that bad boy in an arcade cabinet.
Bonus points if it uses a CRT TV monitor.
#godot #gamedev #indiedev #lambgamedev #arcadegames #retrodev -
A very cool idea: developing an arcade game in Godot for a Raspberry Pi (or alternative), sticking that bad boy in an arcade cabinet.
Bonus points if it uses a CRT TV monitor.
#godot #gamedev #indiedev #lambgamedev #arcadegames #retrodev -
Godot 4.5 just came out and oh my goodness the features, the features...
I've been using 3.5.3 for so long that once I dip my toes into 4.5 or 4.6 or 4.7 whenever those come out it's going to feel like I'm 10 years old again
#lambgamedev -
Godot 4.5 just came out and oh my goodness the features, the features...
I've been using 3.5.3 for so long that once I dip my toes into 4.5 or 4.6 or 4.7 whenever those come out it's going to feel like I'm 10 years old again
#lambgamedev -
Godot 4.5 just came out and oh my goodness the features, the features...
I've been using 3.5.3 for so long that once I dip my toes into 4.5 or 4.6 or 4.7 whenever those come out it's going to feel like I'm 10 years old again
#lambgamedev -
Godot 4.5 just came out and oh my goodness the features, the features...
I've been using 3.5.3 for so long that once I dip my toes into 4.5 or 4.6 or 4.7 whenever those come out it's going to feel like I'm 10 years old again
#lambgamedev -
I have whipped up a quick and dirty PlayStation 2 ghosting/motion blur/frame blending effect!
## Creates a PlayStation 2-like frame blending effect. ## ## Add to _process(). The frame blending effect is applied to the area ## within the boundaries of the texture_rect node. ## It is recommended to only set the alpha to less than 1. func frame_blend(texture_rect: TextureRect, alpha: float = 0.5, use_frame_post_draw: bool = true, viewport: Viewport = get_viewport()) -> void: alpha = clamp(alpha, 0.0, 1.0) # Alpha values are 0 through 1 var image: Image = Image.new() var texture: ImageTexture = ImageTexture.new() image = viewport.get_texture().get_data() # FORMAT_RGBAH image.flip_y() # Images start out upside-down. This turns it rightside-up. if use_frame_post_draw: yield(VisualServer, "frame_post_draw") # Changes the vibe. texture.create_from_image(image) # Turn Image to ImageTexture texture_rect.modulate.a = alpha # Changes the opacity of the frame blending texture_rect.texture = texture # Applies the image of the last frame to the texture_rect
I've been very preoccupied lately. I apologize about the lack of game dev updates, but I've got a lot on my plate right now and those important things takes priority.
#gamedev #godot #lambgamedev #playstation2 #playstation1 #ps2 #ps1 #psx #indiedev -
I have whipped up a quick and dirty PlayStation 2 ghosting/motion blur/frame blending effect!
## Creates a PlayStation 2-like frame blending effect. ## ## Add to _process(). The frame blending effect is applied to the area ## within the boundaries of the texture_rect node. ## It is recommended to only set the alpha to less than 1. func frame_blend(texture_rect: TextureRect, alpha: float = 0.5, use_frame_post_draw: bool = true, viewport: Viewport = get_viewport()) -> void: alpha = clamp(alpha, 0.0, 1.0) # Alpha values are 0 through 1 var image: Image = Image.new() var texture: ImageTexture = ImageTexture.new() image = viewport.get_texture().get_data() # FORMAT_RGBAH image.flip_y() # Images start out upside-down. This turns it rightside-up. if use_frame_post_draw: yield(VisualServer, "frame_post_draw") # Changes the vibe. texture.create_from_image(image) # Turn Image to ImageTexture texture_rect.modulate.a = alpha # Changes the opacity of the frame blending texture_rect.texture = texture # Applies the image of the last frame to the texture_rect
I've been very preoccupied lately. I apologize about the lack of game dev updates, but I've got a lot on my plate right now and those important things takes priority.
#gamedev #godot #lambgamedev #playstation2 #playstation1 #ps2 #ps1 #psx #indiedev -
I have whipped up a quick and dirty PlayStation 2 ghosting/motion blur/frame blending effect!
## Creates a PlayStation 2-like frame blending effect. ## ## Add to _process(). The frame blending effect is applied to the area ## within the boundaries of the texture_rect node. ## It is recommended to only set the alpha to less than 1. func frame_blend(texture_rect: TextureRect, alpha: float = 0.5, use_frame_post_draw: bool = true, viewport: Viewport = get_viewport()) -> void: alpha = clamp(alpha, 0.0, 1.0) # Alpha values are 0 through 1 var image: Image = Image.new() var texture: ImageTexture = ImageTexture.new() image = viewport.get_texture().get_data() # FORMAT_RGBAH image.flip_y() # Images start out upside-down. This turns it rightside-up. if use_frame_post_draw: yield(VisualServer, "frame_post_draw") # Changes the vibe. texture.create_from_image(image) # Turn Image to ImageTexture texture_rect.modulate.a = alpha # Changes the opacity of the frame blending texture_rect.texture = texture # Applies the image of the last frame to the texture_rect
I've been very preoccupied lately. I apologize about the lack of game dev updates, but I've got a lot on my plate right now and those important things takes priority.
#gamedev #godot #lambgamedev #playstation2 #playstation1 #ps2 #ps1 #psx #indiedev -
I have whipped up a quick and dirty PlayStation 2 ghosting/motion blur/frame blending effect!
## Creates a PlayStation 2-like frame blending effect. ## ## Add to _process(). The frame blending effect is applied to the area ## within the boundaries of the texture_rect node. ## It is recommended to only set the alpha to less than 1. func frame_blend(texture_rect: TextureRect, alpha: float = 0.5, use_frame_post_draw: bool = true, viewport: Viewport = get_viewport()) -> void: alpha = clamp(alpha, 0.0, 1.0) # Alpha values are 0 through 1 var image: Image = Image.new() var texture: ImageTexture = ImageTexture.new() image = viewport.get_texture().get_data() # FORMAT_RGBAH image.flip_y() # Images start out upside-down. This turns it rightside-up. if use_frame_post_draw: yield(VisualServer, "frame_post_draw") # Changes the vibe. texture.create_from_image(image) # Turn Image to ImageTexture texture_rect.modulate.a = alpha # Changes the opacity of the frame blending texture_rect.texture = texture # Applies the image of the last frame to the texture_rect
I've been very preoccupied lately. I apologize about the lack of game dev updates, but I've got a lot on my plate right now and those important things takes priority.
#gamedev #godot #lambgamedev #playstation2 #playstation1 #ps2 #ps1 #psx #indiedev