{"id":25914541,"url":"https://github.com/thetallprogrammer/4398-project","last_synced_at":"2026-02-26T18:31:52.199Z","repository":{"id":279107569,"uuid":"937735508","full_name":"TheTallProgrammer/4398-Project","owner":"TheTallProgrammer","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-28T02:06:57.000Z","size":448,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"SRS-branch","last_synced_at":"2025-10-22T00:33:27.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheTallProgrammer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-23T19:18:01.000Z","updated_at":"2025-02-28T02:07:00.000Z","dependencies_parsed_at":"2025-03-03T11:33:34.845Z","dependency_job_id":null,"html_url":"https://github.com/TheTallProgrammer/4398-Project","commit_stats":null,"previous_names":["thetallprogrammer/4398-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TheTallProgrammer/4398-Project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTallProgrammer%2F4398-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTallProgrammer%2F4398-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTallProgrammer%2F4398-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTallProgrammer%2F4398-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheTallProgrammer","download_url":"https://codeload.github.com/TheTallProgrammer/4398-Project/tar.gz/refs/heads/SRS-branch","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheTallProgrammer%2F4398-Project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29867539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T18:27:06.972Z","status":"ssl_error","status_checked_at":"2026-02-26T18:26:57.848Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-03T11:28:28.963Z","updated_at":"2026-02-26T18:31:52.192Z","avatar_url":"https://github.com/TheTallProgrammer.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n---\n\n# Software Requirements Specification (SRS)\n\n## Maze of Shadows\n\n### Group Number: 6\n\n**Group Members:**  \nLogan Falkenberg ([llf46@txstate.edu](mailto:llf46@txstate.edu))  \nFarrah Omar ([xwo6@txstate.edu](mailto:xwo6@txstate.edu))  \nBradley Hayes ([blh197@txstate.edu](mailto:blh197@txstate.edu))  \nCollin Reisman ([jps191@txstate.edu](mailto:jps191@txstate.edu))  \n\n---\n\n## Table of Contents\n\n1. [Introduction](#1-introduction)  \n    1.1 [Purpose of the SRS](#11-purpose-of-the-srs)  \n    1.2 [Problem Statement](#12-problem-statement)  \n    1.3 [Intended Audience and Document Conventions](#13-intended-audience-and-document-conventions)  \n    1.4 [Product Scope](#14-product-scope)  \n    1.5 [References](#15-references)  \n2. [Functional Requirements](#2-functional-requirements)  \n    2.1 [Procedural Maze Generation](#21-procedural-maze-generation)  \n    2.2 [Lighting and Visibility Mechanics](#22-lighting-and-visibility-mechanics)  \n    2.3 [Enemy Behavior and AI Pathfinding](#23-enemy-behavior-and-ai-pathfinding)  \n    2.4 [Power-ups and Item Collection](#24-power-ups-and-item-collection)  \n    2.5 [Game Interface and User Interaction](#25-game-interface-and-user-interaction)  \n    2.6 [UML Diagrams](#26-uml-diagrams)  \n3. [Non-Functional Requirements](#3-non-functional-requirements)  \n    3.1 [Performance](#31-performance)  \n    3.2 [Security](#32-security)  \n    3.3 [Usability](#33-usability)  \n    3.4 [Maintainability](#34-maintainability)  \n4. [Design and Implementation Constraints](#4-design-and-implementation-constraints)  \n    4.1 [Standards Compliance](#41-standards-compliance)  \n    4.2 [Development Constraints](#42-development-constraints)  \n5. [References and Sources of Information](#5-references-and-sources-of-information)  \n\n---\n\n## 1. Introduction\n\n### 1.1 Purpose of the SRS\nThe purpose of this Software Requirements Specification (SRS) document is to outline the functional and non-functional requirements for **Maze of Shadows**, a 2D top-down rogue-like maze game developed in Unity. This document will serve as a reference for the development team, providing clear guidance on the game’s expected functionality, design constraints, and usability expectations.\n\n### 1.2 Problem Statement\nMany maze-based games offer straightforward gameplay but lack suspense and immersive mechanics. **Maze of Shadows** enhances traditional maze-solving with **dynamic lighting, intelligent enemy AI, and moveable tiles**, creating a **tense and engaging experience**. The combination of procedural maze generation and survival elements ensures a unique playthrough every time, offering replayability and challenge.\n\n### 1.3 Intended Audience and Document Conventions\nThis document is intended for:\n- The **development team** responsible for implementing the game in Unity using C#  \n- **Course instructors** and evaluators reviewing the project for grading  \n- **Game testers** who will provide feedback during iterative development  \n\nThe document follows **IEEE 830-1998** standards, ensuring clear organization and specification of software requirements.\n\n### 1.4 Product Scope\n**Maze of Shadows** is a **single-player** rogue-like maze game featuring:\n- **Procedural maze generation** ensuring unique layouts in every playthrough.\n- **Dynamic lighting mechanics**, restricting player vision to a small radius.\n- **Enemy AI with pathfinding** that hunts and reacts to the player.\n- **Item collection system**, requiring players to gather essential items to escape.\n- **Moveable tiles**, there will be premade tiles that players are able to move in any direction emulating a puzzle slide game to solve the maze.\n- **An intuitive UI** for player controls and in-game feedback.\n- **Desktop (Windows \u0026 Mac) compatibility**, developed in Unity.\n\n### 1.5 References\n- **IEEE 830-1998** Software Requirements Specification Standards  \n- **Unity Documentation** ([https://docs.unity3d.com/](https://docs.unity3d.com/))  \n- **C# Scripting for Unity** ([https://learn.microsoft.com/en-us/dotnet/csharp/](https://learn.microsoft.com/en-us/dotnet/csharp/))  \n\n---\n\n## 2. Functional Requirements\n\n### 2.1 Procedural Maze Generation\n- The game generates a **maze** for a players to be able to shift around the rooms.\n- The maze consists of doors to be able to traverse to the next room.\n- The maze layout supports **pathfinding algorithms** for both enemies and power-ups.\n\n### 2.2 Lighting and Visibility Mechanics\n- The **player’s visibility** is limited to the room that the charcter is currently in. \n- Static lighting in each room.\n- room becomes visible once door has been opened (use of door is subject to change)\n- Certain **rooms** may adjust light radius.\n\n### 2.3 Enemy Behavior and AI Pathfinding\n- Enemies spawn in various locations within the maze.\n- Enemies either **patrol** or **actively chase the player** upon detection.\n- AI uses a **pathfinding algorithm** (such as A*) to navigate the maze.\n- Some enemies may have different behaviors (e.g., fast but short-ranged, slow but persistent).\n\n### 2.4 Item Collection\n- Players must collect **specific items** before reaching the exit.\n- Items will be **randomly placed** but always accessible via a valid path.\n- Available items that a player can collect include:\n  - **Coins**: A type of currency that could be used in a shop.\n  - **Weapon**: A little weapon to fight back enemies.\n  - **Health**: Restores player health if damaged.\n\n### 2.5 Game Interface and User Interaction\n- Players control movement using **WASD or arrow keys**.\n- A **HUD (heads-up display)** shows collected items, health, and power-ups.\n- A **mini-map (if implemented)** provides limited directional guidance.\n\n### 2.6 Moveable Tiles\n- Have a top level view of a maze to build that the player will use to play in.\n- Each moveable tile will be displayed a 3x3 where the minimized abstract tile view of the creator can be mapped to a much larger room that will be built when the player loads in.\n- There will be premade tiles that the player has a blank slot to slide tiles above, below, left, or right of it to form the maze they will play in, emulating a puzzle slider game.\n\n### 2.7 UML Diagrams\nTo better illustrate the system’s functional architecture, the following UML diagrams are provided:\n- **Use-Case Diagram** – Displays how users (players) interact with the game system.\n- **Class Diagram** – Represents the structure of major classes and their relationships.\n- **Sequence Diagram** – Outlines interactions between the player, enemies, and game systems.\n\n**UML Diagram File:**  \n![UML Diagram](./assets/uml.png)  \n\n---\n\n## 3. Non-Functional Requirements\n\n### 3.1 Performance\n- The game should **run smoothly at 60 FPS** on modern mid-range PCs.\n- **Maze generation time** should be under **3 seconds**.\n\n### 3.2 Security\n- No online components, so **security concerns are minimal**.\n- Save files (if applicable) should be protected against corruption.\n\n### 3.3 Usability\n- Controls should be **simple and intuitive**.\n- Difficulty should **scale appropriately** to avoid frustration.\n- The UI must be **clear and readable**.\n\n### 3.4 Maintainability\n- The game will use **modular code**, making it easy to update.\n- Power-ups and enemies should be **easily expandable** in future iterations.\n- A **version control system (GitHub)** will be used for collaboration.\n\n---\n\n## 4. Design and Implementation Constraints\n\n### 4.1 Standards Compliance\n- The game follows **IEEE 830-1998** SRS standards.\n- Unity development adheres to best practices outlined in **Unity’s documentation**.\n\n### 4.2 Development Constraints\n- The game must be completed within the semester.\n- Team members have **varying experience levels** with Unity and C#.\n- The scope must be feasible given available time and resources.\n\n---\n\n## 5. References and Sources of Information\n1. IEEE 830-1998 SRS Documentation  \n2. Unity Documentation: [https://docs.unity3d.com/](https://docs.unity3d.com/)  \n3. C# Scripting in Unity: [https://learn.microsoft.com/en-us/dotnet/csharp/](https://learn.microsoft.com/en-us/dotnet/csharp/)  \n4. A* Pathfinding Algorithm Reference: [https://www.redblobgames.com/pathfinding/a-star/](https://www.redblobgames.com/pathfinding/a-star/)  \n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetallprogrammer%2F4398-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthetallprogrammer%2F4398-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetallprogrammer%2F4398-project/lists"}