Horror game help

https://playcanvas.com/editor/scene/2157999
I need someone to help me develop a game. you will get credit
Details
v v v

Can we have more information?

I need more information than

Story Overview:

The protagonist, a man with a troubled past, stumbles upon an abandoned town while seeking refuge from his demons. Upon entering, he discovers that he is trapped by an invisible barrier. As he explores the town, he encounters mutated creatures and uncovers the dark history of the place, which is tied to his own past. The story unfolds through environmental storytelling, flashbacks, and interactions with remnants of the town’s former inhabitants.

Gameplay Mechanics:

  1. Survival Mechanics:
  • Health System: Players must manage health through food and first aid kits. Injuries can affect gameplay (e.g., limping if injured).
  • Sanity Meter: Introduce a sanity mechanic that decreases with encounters with horrors or when alone for too long. Low sanity can lead to hallucinations or altered perceptions of the environment.
  1. Crafting and Resource Management:
  • Crafting System: Players can combine items to create weapons (e.g., a sharpened stick + duct tape = spear) or traps (e.g., a bear trap using metal scraps).
  • Inventory System: Limited inventory space forces players to make strategic decisions about what to carry. Players can find backpacks to increase capacity.
  1. Exploration and Puzzles:
  • Environmental Puzzles: Players must solve puzzles to unlock new areas (e.g., finding keys, repairing machinery). Puzzles can be tied to the town’s history (e.g., a puzzle based on a town map).
  • Hidden Areas: Encourage exploration by hiding valuable resources or lore in secret areas, rewarding curious players.
  1. Dynamic Events:
  • Randomized Encounters: Introduce random events that can change each playthrough, such as different creature behaviors or environmental hazards (e.g., sudden fog, collapsing buildings).
  • Day/Night Cycle: The game could feature a day/night cycle where nighttime brings more dangers, while daytime allows for safer exploration.

Environment Design:

  1. Town Layout:
  • Key Locations:
    • Town Square: Central hub with a fountain, surrounded by shops and homes. A good starting point for exploration.
    • School: A creepy, dark building filled with remnants of children’s belongings. Puzzles could involve finding a way to unlock a classroom.
    • Hospital: A place filled with medical supplies but also home to some of the more dangerous mutated creatures.
    • Church: A location that holds secrets about the town’s past and may provide a safe haven for the protagonist.
  1. Atmospheric Elements:
  • Sound Design: Use ambient sounds (e.g., creaking wood, distant screams) to create tension. Sudden loud noises can startle players.
  • Visuals: Dark, muted colors with occasional flashes of light (e.g., lightning) to create a haunting atmosphere. Use fog and shadows to obscure vision and create suspense.

Themes and Narrative:

  1. Isolation and Fear: Explore the psychological effects of being trapped in a haunted environment. The protagonist’s internal struggles can mirror the external horrors.
  2. Redemption and Confrontation: The protagonist’s journey involves confronting his past traumas and finding a way to forgive himself, paralleling the town’s dark history.
  3. The Nature of Evil: Delve into what caused the mutations and the barrier. Is it a curse, a failed experiment, or something supernatural? This can be revealed through lore and environmental storytelling.

Alright lets see here

How are these “food and first aid kits” going to function? Does the player just walk over them and they increase some global variable by a specified amount? What happens when the health is at zero?

Exactly what are you referring to when you say “limping when injured”? Do you mean the player movement speed variable is decreased and the camera is somehow lerped or tweened in a specific manner while moving? I am assuming a first person camera because you never specified.

When you say “crafting system” are you implying dragging an element over another element and running some check to see what the other item is, and affect it accordingly?

The “puzzles” as in finding keys and repairing machinery and such like that should actually be very easy, in fact I have already made a game where that is done, although it is unfinished.

What exactly do you mean by “creature behaviors”? Please specify. Changing fog should not be that hard, and a collapsing building could be a simple trigger that changes a rigidbody fom static to dynamic, unless you prefer kinematic.

Day night cycle shoud be stupid easy, I could make one in less than a minute.

Honestly, ignoring the indications that this post seems ai generated, its all just surface level. What you have here is an imagination of what a game might be without any explanation as to how any of it is supposed to physically operate.

For example, this is my code for a gun:





image

Notice how even a simple functioning gun script is absurdly long at 1104 lines of code. This is what game development actually looks like, and what you will be doing the vast majority of time. If you were imagining you could just press a “make spooky horror game” button you are sorely mistaken. I am not trying to dissuade you from development, I am simply trying to give you a realistic understanding of what game development actually is.

Here, this might give you an idea of what you are actually getting into. Have you ever played minecraft? Have you ever been attacked by a zombie? A minecraft zombie is about the simplest enemy there can be, right? Well this is just a SMALL PART of the code involved for it:

{
  "format_version": "1.17.20",
  "minecraft:entity": {
    "description": {
      "identifier": "minecraft:zombie",
      "is_spawnable": true,
      "is_summonable": true,
      "is_experimental": false
    },
    "component_groups": {
      "minecraft:look_to_start_drowned_transformation": {
        "minecraft:environment_sensor": {
          "triggers": {
            "filters": {
              "test": "is_underwater", "subject": "self", "operator": "==", "value": true
            },
            "event": "minecraft:start_transforming"
          }
        }
      },
      "minecraft:start_drowned_transformation": {
        "minecraft:environment_sensor": {
          "triggers": {
            "filters": {
              "test": "is_underwater", "subject": "self", "operator": "==", "value": false
            },
            "event": "minecraft:stop_transforming"
          }
        },
        "minecraft:timer": {
          "looping": false,
          "time": 30,
          "time_down_event": {
            "event": "minecraft:convert_to_drowned"
          }
        }
      },

      "minecraft:convert_to_drowned": {
        "minecraft:transformation": {
          "into": "minecraft:drowned<minecraft:as_adult>",
          "transformation_sound": "convert_to_drowned",
          "drop_equipment": true,
          "delay": {
            "value": 15
          }
        },
        "minecraft:is_shaking": {
        }
      },

      "minecraft:convert_to_baby_drowned": {
        "minecraft:transformation": {
          "into": "minecraft:drowned<minecraft:as_baby>",
          "transformation_sound": "convert_to_drowned",
          "drop_equipment": true,
          "delay": {
            "value": 15
          }
        },
        "minecraft:is_shaking": {
        }
      },

      "minecraft:zombie_baby": {
        "minecraft:experience_reward": {
          "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
        },
        "minecraft:is_baby": {},
        "minecraft:scale": {
          "value": 0.5
        },
        "minecraft:movement": {
          "value": 0.35
        }
      },

      "minecraft:zombie_adult": {
        "minecraft:experience_reward": {
          "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
        },
        "minecraft:movement": {
          "value": 0.23
        },
        "minecraft:rideable": {
          "seat_count": 1,
          "family_types": [
            "zombie"
          ],
          "seats": {
            "position": [ 0.0, 1.1, -0.35 ],
            "lock_rider_rotation": 0
          }
        },
        "minecraft:behavior.mount_pathing": {
          "priority": 2,
          "speed_multiplier": 1.25,
          "target_dist": 0.0,
          "track_target": true
        }
      },

      "minecraft:zombie_jockey": {
        "minecraft:behavior.find_mount": {
          "priority": 1,
          "within_radius": 16,
          "start_delay": 15,
          "max_failed_attempts": 20
        }
      },
      "minecraft:can_have_equipment": {
        "minecraft:equipment": {
          "table": "loot_tables/entities/zombie_equipment.json"
        }
      },
      "minecraft:can_break_doors": {
        "minecraft:annotation.break_door": {
        }
      }
    },

    "components": {
      "minecraft:is_hidden_when_invisible": {
      },
      "minecraft:nameable": {
      },

      // Zombie Components
      "minecraft:type_family": {
        "family": [ "zombie", "undead", "monster", "mob" ]
      },
      "minecraft:equip_item": {
      },
      "minecraft:collision_box": {
        "width": 0.6,
        "height": 1.9
      },
      "minecraft:burns_in_daylight": {
      },
      "minecraft:movement.basic": {
      },
      "minecraft:navigation.walk": {
        "is_amphibious": true,
        "can_pass_doors": true,
        "can_walk": true,
        "can_break_doors": true
      },
      "minecraft:jump.static": {
      },
      "minecraft:can_climb": {
      },
      "minecraft:health": {
        "value": 20,
        "max": 20
      },
      "minecraft:hurt_on_condition": {
        "damage_conditions": [
          {
            "filters": { "test": "in_lava", "subject": "self", "operator": "==", "value": true },
            "cause": "lava",
            "damage_per_tick": 4
          }
        ]
      },
      "minecraft:breathable": {
        "total_supply": 15,
        "suffocate_time": 0,
        "breathes_air": true,
        "breathes_water": true
      },
      "minecraft:attack": {
        "damage": 3
      },
      "minecraft:loot": {
        "table": "loot_tables/entities/zombie.json"
      },
      "minecraft:shareables": {
        "items": [
          {
            "item": "minecraft:netherite_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 0
          },
          {
            "item": "minecraft:diamond_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 1
          },
          {
            "item": "minecraft:iron_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 2
          },
          {
            "item": "minecraft:stone_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 3
          },
          {
            "item": "minecraft:golden_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 4
          },
          {
            "item": "minecraft:wooden_sword",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 5
          },
          {
            "item": "minecraft:netherite_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 0
          },
          {
            "item": "minecraft:diamond_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 1
          },
          {
            "item": "minecraft:iron_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 2
          },
          {
            "item": "minecraft:chainmail_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 3
          },
          {
            "item": "minecraft:golden_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 4
          },
          {
            "item": "minecraft:leather_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 5
          },
          {
            "item": "minecraft:turtle_helmet",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority":  6
          },
          {
            "item": "minecraft:skull:0",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 7
          },
          {
            "item": "minecraft:skull:1",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 7
          },
          {
            "item": "minecraft:carved_pumpkin",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 7
          },
          {
            "item": "minecraft:netherite_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 0
          },
          {
            "item": "minecraft:diamond_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 1
          },
          {
            "item": "minecraft:iron_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 2
          },
          {
            "item": "minecraft:chainmail_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 3
          },
          {
            "item": "minecraft:golden_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 4
          },
          {
            "item": "minecraft:leather_chestplate",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 5
          },
          {
            "item": "minecraft:netherite_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 0
          },
          {
            "item": "minecraft:diamond_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 1
          },
          {
            "item": "minecraft:iron_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 2
          },
          {
            "item": "minecraft:chainmail_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 3
          },
          {
            "item": "minecraft:golden_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 4
          },
          {
            "item": "minecraft:leather_leggings",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 5
          },
          {
            "item": "minecraft:netherite_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 0
          },
          {
            "item": "minecraft:diamond_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 1
          },
          {
            "item": "minecraft:iron_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 2
          },
          {
            "item": "minecraft:chainmail_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 3
          },
          {
            "item": "minecraft:golden_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 4
          },
          {
            "item": "minecraft:leather_boots",
            "want_amount": 1,
            "surplus_amount": 1,
            "priority": 5
          }
        ]
      },

      "minecraft:environment_sensor": {
        "triggers": {
          "filters": {
            "test": "is_underwater",
            "operator": "==",
            "value": true
          },
          "event": "minecraft:start_transforming"
        }
      },

    "minecraft:despawn": {
      "despawn_from_distance": {}
     },

      // Zombie Behaviors
      "minecraft:behavior.equip_item": {
        "priority": 2
      },
      "minecraft:behavior.melee_attack": {
        "priority": 3
      },
      "minecraft:behavior.stomp_turtle_egg": {
        "priority": 4,
        "speed_multiplier": 1,
        "search_range": 10,
        "search_height": 2,
        "goal_radius": 1.14,
        "interval": 20
      },
      "minecraft:behavior.pickup_items": {
        "priority": 6,
        "max_dist": 3,
        "goal_radius": 2,
        "speed_multiplier": 1.0,
        "pickup_based_on_chance": true,
        "can_pickup_any_item": true,
        "excluded_items": [
          "minecraft:glow_ink_sac"
        ]
      },
      "minecraft:behavior.random_stroll": {
        "priority": 7,
        "speed_multiplier": 1
      },
      "minecraft:behavior.look_at_player": {
        "priority": 8,
        "look_distance": 6,
        "probability": 0.02
      },
      "minecraft:behavior.random_look_around": {
        "priority": 9
      },
      "minecraft:behavior.hurt_by_target": {
        "priority": 1
      },
      "minecraft:behavior.nearest_attackable_target": {
        "priority": 2,
        "must_see": true,
        "reselect_targets": true,
        "within_radius": 25.0,
        "must_see_forget_duration": 17.0,
        "entity_types": [
          {
            "filters": {
              "any_of": [
                { "test": "is_family", "subject": "other", "value": "player" },
                { "test": "is_family", "subject": "other", "value": "snowgolem" },
                { "test": "is_family", "subject": "other", "value": "irongolem" }
              ]
            },
            "max_dist": 35
          },
          {
            "filters": {
              "any_of": [
                { "test": "is_family", "subject": "other", "value": "villager" },
                { "test": "is_family", "subject": "other", "value": "wandering_trader" }
              ]
            },
            "max_dist": 35,
            "must_see": false
          },
          {
            "filters": {
              "all_of": [
                { "test": "is_family", "subject": "other", "value": "baby_turtle" },
                { "test": "in_water", "subject": "other", "operator": "!=", "value": true }
              ]
            },
            "max_dist": 35
          }
        ]
      },
      "minecraft:physics": {
      },
      "minecraft:pushable": {
        "is_pushable": true,
        "is_pushable_by_piston": true
      },
      "minecraft:conditional_bandwidth_optimization": {
      }
    },

    "events": {
      "minecraft:entity_spawned": {
        "sequence": [
          {
            "randomize": [
              {
                "weight": 380,
                "remove": {},
                "add": {
                  "component_groups": [
                    "minecraft:zombie_adult",
                    "minecraft:can_have_equipment"
                  ]
                }
              },
              {
                "weight": 17,
                "remove": {
                },
                "add": {
                  "component_groups": [
                    "minecraft:zombie_baby",
                    "minecraft:can_have_equipment"
                  ]

                }
              },
              {
                "weight": 3,
                "remove": {
                },
                "add": {
                  "component_groups": [
                    "minecraft:zombie_baby",
                    "minecraft:zombie_jockey",
                    "minecraft:can_have_equipment"
                  ]
                }
              }
            ]
          },
          {
            "randomize": [
              {
                "weight": 10,
                "add": {
                  "component_groups": [ "minecraft:can_break_doors" ]
                }
              },
              {
                "weight": 90
              }
            ]
          }
        ]
      },
      "minecraft:as_adult": {
        "add": {
          "component_groups": [
            "minecraft:zombie_adult"
          ]
        }
      },
      "minecraft:as_baby": {
        "add": {
          "component_groups": [
            "minecraft:zombie_baby"
          ]
        }
      },
      "minecraft:start_transforming": {
        "add": {
          "component_groups": [
            "minecraft:start_drowned_transformation"
          ]
        },
        "remove": {
          "component_groups": [ "minecraft:look_to_start_drowned_transformation" ]
        }
      },
      "minecraft:stop_transforming": {
        "add": {
          "component_groups": [
            "minecraft:look_to_start_drowned_transformation"
          ]
        },
        "remove": {
          "component_groups": [
            "minecraft:start_drowned_transformation"
          ]
        }
      },
      "minecraft:convert_to_drowned": {
        "sequence": [
          {
            "filters": {
              "test": "has_component",
              "operator": "!=",
              "value": "minecraft:is_baby"
            },
            "add": {
              "component_groups": [ "minecraft:convert_to_drowned" ]
            },
            "remove": {
              "component_groups": [ "minecraft:start_drowned_transformation" ]
            }
          },
          {
            "filters": {
              "test": "has_component",
              "value": "minecraft:is_baby"
            },
            "add": {
              "component_groups": [ "minecraft:convert_to_baby_drowned" ]
            },
            "remove": {
              "component_groups": [ "minecraft:start_drowned_transformation" ]
            }
          }
        ]
      }
    }
  }
}

If you just scrolled right past that because you have no idea what any of it means, you are demonstrating my point. There is no “create an inventory system with weapon crafting so the injured limping player can fight enemies with varying behaviors that spawn in random encounters that get more frequent when a sanity meter decreases which is caused by isolation and encounters with horrors, please” button. Any work you do will look something like the two code examples I provided. Please understand this, and good luck with whatever you set out to do.

1 Like