Search
725 results for “nkmod”
-
I'm too tired to go on. Long but great day! Hung out with the #horses and worked Shadow. I played a bunch of #ArcRaiders and started testing out Petite Planet.
In bed now, reading and passing out! :nkoDead: :nkoSleep:
#videogames #equestrian #gamer #EquestrianLife #PetitePlanet #iOS #Xbox #XboxSeriesX :nkoSip:
-
At #SoCraTes2025 I had a session where I showed my current iteration of the ES/CQRS implementation that I use these days for #AWS #serverless projects. I've been iterating on this concept over many years, and the latest version is much simpler than what it used to be in 2016/2017 when I started with it.
Here is the core implementation as a standalone project, which I am now using in the #FjordCleanUP trash map.
https://github.com/coderbyheart/aws-dynamodb-es-cqrsLMK if you have any questions.
-
At #SoCraTes2025 I had a session where I showed my current iteration of the ES/CQRS implementation that I use these days for #AWS #serverless projects. I've been iterating on this concept over many years, and the latest version is much simpler than what it used to be in 2016/2017 when I started with it.
Here is the core implementation as a standalone project, which I am now using in the #FjordCleanUP trash map.
https://github.com/coderbyheart/aws-dynamodb-es-cqrsLMK if you have any questions.
-
At #SoCraTes2025 I had a session where I showed my current iteration of the ES/CQRS implementation that I use these days for #AWS #serverless projects. I've been iterating on this concept over many years, and the latest version is much simpler than what it used to be in 2016/2017 when I started with it.
Here is the core implementation as a standalone project, which I am now using in the #FjordCleanUP trash map.
https://github.com/coderbyheart/aws-dynamodb-es-cqrsLMK if you have any questions.
-
At #SoCraTes2025 I had a session where I showed my current iteration of the ES/CQRS implementation that I use these days for #AWS #serverless projects. I've been iterating on this concept over many years, and the latest version is much simpler than what it used to be in 2016/2017 when I started with it.
Here is the core implementation as a standalone project, which I am now using in the #FjordCleanUP trash map.
https://github.com/coderbyheart/aws-dynamodb-es-cqrsLMK if you have any questions.
-
At #SoCraTes2025 I had a session where I showed my current iteration of the ES/CQRS implementation that I use these days for #AWS #serverless projects. I've been iterating on this concept over many years, and the latest version is much simpler than what it used to be in 2016/2017 when I started with it.
Here is the core implementation as a standalone project, which I am now using in the #FjordCleanUP trash map.
https://github.com/coderbyheart/aws-dynamodb-es-cqrsLMK if you have any questions.
-
CW: Adults only! EroMassagen4u – Full Nude Model
#EroMassagen4u – Full #Nude #Model
Foto (#Sedcards)
https://www.adultfolio.com/EroMassagen4u?referid=82410
http://www.pinkballs.nl/model/eromassagenFilm / #Video / #Porno
https://www.imagefap.com/profile/EroMassagen4u#Webcam #Livesex
https://de.bongamodels.com/profile/eromassagen4uOffers
https://eromassagen4u.com/model/nudemodel
https://eromassagen4u.com/model/eroticmodel
https://eromassagen4u.com/model/sexmodel
https://eromassagen4u.com/model/gangbangmodel
https://eromassagen4u.com/model/pornmodel
https://eromassagen4u.com/model/webcamsexmodel -
#Mastodon, j'ai un souci, et j'aurais bien besoin d'aide.
Je veux installer une #Kubuntu fraîche sur un ordi qui n'a pas été mis à jour depuis la version 18.04 (oui, ça fait longtemps).
Cet ordi, un #Asus N752vx-gc195T, tourne actuellement avec un dual-boot Kubuntu-Windows.J'ai fait un #liveCD et une #liveUSB pour mon #install mais les deux, après un passage par l'écran #Grub, ne me proposent qu'un écran noir.
J'ai modifié tous les paramètres de la clé et du bios (MBR, EFI etc.). Désactivé le secure boot. Ajouté les paramètres nomodeset, acpi=off lors du lancement de Grub. Essayé la version 22.04
Rien.
La seule chose que j'aie, c'est un écran un peu plus verbeux lorsque je remplace "quiet" par "verbose", mais qui plante en quelques poignées de secondes et me laisse comme sur la photo ci-dessous.Je ne sais plus quoi faire. #help
-
#Mastodon, j'ai un souci, et j'aurais bien besoin d'aide.
Je veux installer une #Kubuntu fraîche sur un ordi qui n'a pas été mis à jour depuis la version 18.04 (oui, ça fait longtemps).
Cet ordi, un #Asus N752vx-gc195T, tourne actuellement avec un dual-boot Kubuntu-Windows.J'ai fait un #liveCD et une #liveUSB pour mon #install mais les deux, après un passage par l'écran #Grub, ne me proposent qu'un écran noir.
J'ai modifié tous les paramètres de la clé et du bios (MBR, EFI etc.). Désactivé le secure boot. Ajouté les paramètres nomodeset, acpi=off lors du lancement de Grub. Essayé la version 22.04
Rien.
La seule chose que j'aie, c'est un écran un peu plus verbeux lorsque je remplace "quiet" par "verbose", mais qui plante en quelques poignées de secondes et me laisse comme sur la photo ci-dessous.Je ne sais plus quoi faire. #help
-
#Mastodon, j'ai un souci, et j'aurais bien besoin d'aide.
Je veux installer une #Kubuntu fraîche sur un ordi qui n'a pas été mis à jour depuis la version 18.04 (oui, ça fait longtemps).
Cet ordi, un #Asus N752vx-gc195T, tourne actuellement avec un dual-boot Kubuntu-Windows.J'ai fait un #liveCD et une #liveUSB pour mon #install mais les deux, après un passage par l'écran #Grub, ne me proposent qu'un écran noir.
J'ai modifié tous les paramètres de la clé et du bios (MBR, EFI etc.). Désactivé le secure boot. Ajouté les paramètres nomodeset, acpi=off lors du lancement de Grub. Essayé la version 22.04
Rien.
La seule chose que j'aie, c'est un écran un peu plus verbeux lorsque je remplace "quiet" par "verbose", mais qui plante en quelques poignées de secondes et me laisse comme sur la photo ci-dessous.Je ne sais plus quoi faire. #help
-
#Mastodon, j'ai un souci, et j'aurais bien besoin d'aide.
Je veux installer une #Kubuntu fraîche sur un ordi qui n'a pas été mis à jour depuis la version 18.04 (oui, ça fait longtemps).
Cet ordi, un #Asus N752vx-gc195T, tourne actuellement avec un dual-boot Kubuntu-Windows.J'ai fait un #liveCD et une #liveUSB pour mon #install mais les deux, après un passage par l'écran #Grub, ne me proposent qu'un écran noir.
J'ai modifié tous les paramètres de la clé et du bios (MBR, EFI etc.). Désactivé le secure boot. Ajouté les paramètres nomodeset, acpi=off lors du lancement de Grub. Essayé la version 22.04
Rien.
La seule chose que j'aie, c'est un écran un peu plus verbeux lorsque je remplace "quiet" par "verbose", mais qui plante en quelques poignées de secondes et me laisse comme sur la photo ci-dessous.Je ne sais plus quoi faire. #help
-
#Mastodon, j'ai un souci, et j'aurais bien besoin d'aide.
Je veux installer une #Kubuntu fraîche sur un ordi qui n'a pas été mis à jour depuis la version 18.04 (oui, ça fait longtemps).
Cet ordi, un #Asus N752vx-gc195T, tourne actuellement avec un dual-boot Kubuntu-Windows.J'ai fait un #liveCD et une #liveUSB pour mon #install mais les deux, après un passage par l'écran #Grub, ne me proposent qu'un écran noir.
J'ai modifié tous les paramètres de la clé et du bios (MBR, EFI etc.). Désactivé le secure boot. Ajouté les paramètres nomodeset, acpi=off lors du lancement de Grub.
Rien.
La seule chose que j'aie, c'est un écran un peu plus verbeux lorsque je remplace "quiet" par "verbose", mais qui plante en quelques poignées de secondes et me laisse comme sur la photo ci-dessous.Je ne sais plus quoi faire. #help
-
Loooooong but fun day! I woke up pretty early, worked on some #3DPrinting stuff, went to #TheForge gaming shop and picked up a few things, came home and cleaned up a few more 3D prints and worked on organizing my collection of print files.
Exhausted so #sleep time now. :nkoDead: :nkoSleep:
-
Kann es wirklich sein, dass die Installation von #Linux auf einem modernen Computer 2025 immer noch ein Problem ist? Versuche hier gerade #openSuse auf einem #Asus #Vivobook zu installieren.
Booten vom USB-Stick klappt. Start der Installation klappt auch. Aber der führt entweder zu einem Neustart, direkt ins installierte Windows oder bleibt mit dem Boot-Parameter „nomodeset“ bei dem hängen, was du im Screenshot siehst.
Google und Perplexity helfen nur bedingt weiter. Any ideas?
-
If you have one of these $5-$9 #folding #sternoStoves and you are having trouble getting the smaller #sterno cans to fit, you can use a wide-mouth canning lid. I like to point the rubber-gasket-side down so it grips the stove better and creates a little indent to keep the sterno in place better. Also, your #trangia #alcohol stove can go there. Add a platform and you might be able to use #esbit #solidFuel (#hexamine)
-
If you have one of these $5-$9 #folding #sternoStoves and you are having trouble getting the smaller #sterno cans to fit, you can use a wide-mouth canning lid. I like to point the rubber-gasket-side down so it grips the stove better and creates a little indent to keep the sterno in place better. Also, your #trangia #alcohol stove can go there. Add a platform and you might be able to use #esbit #solidFuel (#hexamine)
-
If you have one of these $5-$9 #folding #sternoStoves and you are having trouble getting the smaller #sterno cans to fit, you can use a wide-mouth canning lid. I like to point the rubber-gasket-side down so it grips the stove better and creates a little indent to keep the sterno in place better. Also, your #trangia #alcohol stove can go there. Add a platform and you might be able to use #esbit #solidFuel (#hexamine)
-
If you have one of these $5-$9 #folding #sternoStoves and you are having trouble getting the smaller #sterno cans to fit, you can use a wide-mouth canning lid. I like to point the rubber-gasket-side down so it grips the stove better and creates a little indent to keep the sterno in place better. Also, your #trangia #alcohol stove can go there. Add a platform and you might be able to use #esbit #solidFuel (#hexamine)
-
💻 Weekend w wiejskiej naprawialni / hakerspejsie i makerspejsie w jednym 😉
Wspaniały malutki retro #ThinkPad #x201 wymagał udrożnienia i poprawienia chłodzenia.
Ależ to była kultura techniczna tych starszych konstrukcji. A klawiatura? Niedościgniony wzór wygody, dzisiaj już takich nie robią ⌨️Przy okazji ważna uwaga, jeśli chcecie korzystać z Ubuntu i pochodnych na tym modelu: w grubie koniecznie nomodeset do parametrów kernela, bo będzie się wieszał w trybie graficznym. Eksperymentuję również z i915.modeset=0
Z tymi ustawieniami śmiga jak złoto :)
P.S. Jeśli macie takie starsze laptopy które Wam zalegają, chcielibyście je ożywić lub przekazać w dobre ręce, by były nadal wykorzystywane, to polecam się Waszej uwadze. Jest tutaj na Polesiu sporo młodzieży tzw. wiejskiej, częściowo wykluczonej cyfrowo, której w różnych programach i współpracach przekazujemy sprzęt.
Chętnie również naprawię Wam takie starsze retro-cacko, paczkomat we wsi obok więc transport to nie problem :)#Repair #Reinstall #Reuse #retrocomputing #countryHackerSpace
-
I have an old Gigabyte AB350M Gaming motherboard paired with Ryzen 3 1200 (I paid a hefty price for being 1st gen Ryzen user) and till yesterday I faced a very weird issue when booting Linux.
I tried to wipe Win11 and install Manjaro but it never booted to installer. The boot hangs very early, not even “Welcome to Manjaro Linux” text. I have 1050Ti card (there’s no integrated graphics) btw.
After googling stuff, I tried nomodeset, nouveau.modeset=0 and others to no avail.
I also tried EndeavourOS but it also didn’t work.
I tried @pop_os_official because it usually is very stable and I had a hunch it was Linux 6.9 being broken. So when it booted successfully, I installed Pop_OS on it with 6.8 kernel which doesn’t have a problem.
When I switch to 6.9 kernel on Pop (system updates), it too stops booting just like the rest.The fix for 6.9 was using amd_iommu=off which I found when I searched for “Ryzen 3 1200 linux boot”.
It led me to some obscure forum which had the answer in the last post (I owe you one).
-
Since Astemar and her friends are a singing group, aA while back, I did some side-research (?) into branding and design works. I took the time to test "doing" an album cover. This would be the equivalent of a very late 90s album, possibly a transitional one of early 00s.
Textures mainly from https://www.deviantart.com/evenstarss/art/evenstarss-Texture-Pack-12-557169814 and the flower was heavily edited from a very old texture folder I had whose only credit was being named "tumblr texture." Good going, past me. :nkodrool:
#CreativeToots #FediArt #AlbumCover #AlbumDesign #Design #HowCanHeavenLoveMe
-
Har du en chatbot på din webbplats eller funderar på att skaffa en?
Ja, det är lockande att införa "en modern digital medarbetare som outtröttligt svarar på medborgarnas vanligaste frågor dygnet runt". Men om du slarvar med hur din chatbot följs upp riskerar den att bli ännu ett exempel till samlingen av #skitsystem som Jonas Söderström tar upp framöver. Eller, innovationsteater som andra kallar det när nymodigheter införs allt för okritiskt.
https://webperf.se/articles/chatbot/?mtm_campaign=webperf-official&mtm_kwd=chatbot&mtm_source=masto -
#macron #yaounde #villagePotemkine #propagande #Françafrique #Cameroun
Les images officielles nous abreuvent d'applaudissements tarifés, la claque, sur le passage du cortège de Macron à Yaoundé ; mais Naja TV, une #TéléIndépendante camerounaise, a filmé l'arrière-scène du "triomphe" de #Notbonmaitre quelques jours avant.
Sans prévenir, des bulldozers protégés par la police, ont détruit des dizaines d'échoppes "disgracieuses" du parcours du cortège macronien.
________
Sur le site de #NajaTV"A quelques heures de l’arrivée du Président français à Yaoundé, les populations soufrent le martyre. Leurs biens situés le long des itinéraires d’Emmanuel Macron sont cassés, les laissant bredouilles.
Un nouveau chômage, un calvaire pour ces populations, racontés par Brand Kamga, Oriane Nkodo, et Freddy Ondoa" -
Would hold off on upgrading to Misskey 12.96.0
Amolith and I were experiencing strange problems... in my case it just wasn't listening on its designated port yet spit out no console errors (andnpm listcrashed after a few entries... which was nice).
No idea, but this just do be how the node ecosystem is be like :nkoDead:
#misskey #misskeyadmin -
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 -
-