{"id":235,"date":"2025-05-14T15:40:03","date_gmt":"2025-05-14T15:40:03","guid":{"rendered":"https:\/\/sites.wsagames.com\/lament\/?p=235"},"modified":"2025-05-14T15:40:04","modified_gmt":"2025-05-14T15:40:04","slug":"programming","status":"publish","type":"post","link":"https:\/\/sites.wsagames.com\/lament\/2025\/05\/14\/programming\/","title":{"rendered":"Programming"},"content":{"rendered":"\n<p>This post will document all of the programming related to Lament, done by our Lead Programmer and Technical Designer E-Jay, with links to further in-depth explanations for each.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Player<\/h2>\n\n\n\n<p>The player character is essential as it is how the player interacts with the game world, this interaction includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/10\/player-week-1\/\">Moving the player with [WASD]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/10\/player-week-2\/\">Player dash with [Space]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/player-pt-4\/\">4-Directional player attack with [Mouse 1]<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/player-pt-5\/\">Picking up Terra Shards<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-4\/\">Interacting with the Tree of Sorrow<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/boss\/\">Interacting with the Boss Gateway<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/gateway-scenes\/\">Interacting with the emotion gateways<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/sites.wsagames.com\/lament\/wp-content\/uploads\/sites\/36\/2025\/05\/MedalTVScreenRecording20250314173721-edit-tr-edit.mp4\"><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/sites.wsagames.com\/lament\/wp-content\/uploads\/sites\/36\/2025\/05\/Untitled-video-Made-with-Clipchamp-2-1-1.mp4\"><\/video><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Enemies<\/h2>\n\n\n\n<p>In the Dungeons of Lament, there are two enemy types. A ranged enemy type with less HP called the Whisper and a melee enemy type with more HP called the Wrought (As outlined the Lament&#8217;s GDD)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Whisper<\/h2>\n\n\n\n<p>The Whisper is able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/02\/whispers-week-4\/\">Run from the player if they are too close<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/02\/whispers-week-4\/\">Move towards the player to get in range to attack<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/02\/whispers-week-4\/\">Shoot projectiles at the player<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/02\/whispers-week-4\/\">Deal 1 HP worth of damage to the player per projectile<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/player-pt-5\/\">Drop Terra Shards that the player can pick up<\/a><br><em><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/02\/whispers-week-4\/\">[Videos of the Whisper are in the post of the link]<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Wrought<\/h2>\n\n\n\n<p>The Wrought is able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/11\/wrought-week-5\/\">Move toward the player<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/11\/wrought-week-5\/\">Wind up a melee attack that leaves them unable to move for a short duration<\/a><\/li>\n\n\n\n<li><em><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/11\/wrought-week-5\/\">Deals 1 HP worth of damage to the player per attack<\/a><\/em><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/player-pt-5\/\">Drop Terra Shards that the player can pick up<\/a><em><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/11\/wrought-week-5\/\"><br>[Videos of the Wrought are available in the post of the link]<\/a><\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Skill Tree &#8211; Tree of Sorrow<\/h2>\n\n\n\n<p>An essential part of Lament, being a roguelite, is being able to upgrade and make the player stronger after every run in the dungeons. This is achieved through the skill tree, which allows the player to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-4\/\">Interact with the Tree of Sorrow by pressing &#8216;E&#8217;<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-3\/\">Spend Terra Shards obtained in the dungeon<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/10\/skill-tree-pt-2\/\">Unlock skills that effect the player character<\/a>, <a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-3\/\">regardless of what scene they are in<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-3\/\">Increase player HP<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-5\/\">Increase player movement speed<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-5\/\">Increase player damage<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-5\/\">Increase amount of Terra Shards obtained per enemy<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-5\/\">Purchase a key that allows the player to interact with the Boss Gateway<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/skill-tree-pt-4\/\">Maintain Skill Tree progress if the player leaves the scene<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/sites.wsagames.com\/lament\/wp-content\/uploads\/sites\/36\/2025\/05\/Untitled-video-Made-with-Clipchamp-5-1-1.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Procedural Room Generation<\/h2>\n\n\n\n<p>Perhaps the most important part of Lament, the randomised dungeons that allow each run to feel fresh and allow for more replayability:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/\">Has an entry room with 4 doors that the player spawns in<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/02\/28\/procedural-room-generation\/\">Spawns a room for each doorway from an array of pre-existing room prefabs<\/a><\/li>\n\n\n\n<li>Rooms never block off each other\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/prg-week-3\/\">Blocks off rooms with doorways and walls that collide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/prg-week-3\/\">Walls that block off other rooms&#8217; doors are destroyed<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/boss\/\">Spawns a Boss Gateway in the furthest room if the player defeats all of the enemies in it<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/prg-week-3\/\">Has a maximum of 3 layers of rooms (Averaging 8-12 rooms per dungeon)<\/a>\n<ul class=\"wp-block-list\">\n<li>This is to ensure there aren&#8217;t too many rooms that player has to explore to find the boss gateway<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Obstacles<\/h2>\n\n\n\n<p>To make the rooms seem fresh and less repetitive, I created obstacles for the player to keep in mind when traversing the dungeons:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/stalagmites\/\">Stalagmites\/ spikes<\/a>\n<ul class=\"wp-block-list\">\n<li>Player is unable to dash through them<\/li>\n\n\n\n<li>Deals damage to the player if they are touched<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/pitfalls\/\">Pitfalls<\/a>\n<ul class=\"wp-block-list\">\n<li>Prevents player from walking over them<\/li>\n\n\n\n<li>Able to be dashed over<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Scene Transitions<\/h2>\n\n\n\n<p>To allow the player to progress through the game and discover new parts of it, I created ways for the player to travel from scene-to-scene:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/10\/tutorial\/\">Walking to the end of the tutorial takes the player to the Hub<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/11\/gateway-scenes\/\">In the Hub, the player is able to enter a doorway to a gateway, and then return the same way, coming out of the doorway they came out of<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/05\/09\/depression-gate\/\">The player is able to walk to the Depression Gateway from the Hub, open the door and enter the dungeon<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/sites.wsagames.com\/lament\/wp-content\/uploads\/sites\/36\/2025\/05\/Untitled-video-Made-with-Clipchamp-3-1-1.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Main\/Start Menu<\/h2>\n\n\n\n<p>The first thing you see when you open Lament, it needs to have functional buttons that leads the player to the bulk of the game:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/week-5-start-menu\/\">Functional start button<\/a>\n<ul class=\"wp-block-list\">\n<li>Leads the player to the starting cutscene of the game<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/week-5-start-menu\/\">Functional exit game button<\/a>\n<ul class=\"wp-block-list\">\n<li>Causes the application to close<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/week-5-start-menu\/\">Artwork that scales with a 1920 x 1080 resolution<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sites.wsagames.com\/et4g23\/2025\/03\/01\/week-5-start-menu\/\">Hoverable buttons<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"has-text-align-center\"><em>This page was written, formatted &amp; reviewed by E-Jay<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post will document all of the programming related to Lament, done by our Lead Programmer and Technical Designer E-Jay, with links to further in-depth explanations for each. Player The player character is essential as it is how the player interacts with the game world, this interaction includes: Enemies In the Dungeons of Lament, there&#8230;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-235","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/posts\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/comments?post=235"}],"version-history":[{"count":1,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/posts\/235\/revisions\/255"}],"wp:attachment":[{"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/media?parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/categories?post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.wsagames.com\/lament\/wp-json\/wp\/v2\/tags?post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}