{"id":28244923,"url":"https://github.com/broosky/gatherers","last_synced_at":"2026-03-16T20:32:26.980Z","repository":{"id":283376795,"uuid":"951572884","full_name":"Broosky/Gatherers","owner":"Broosky","description":"A solo continuation of the nostalgic StarCraft-inspired resource gathering simulator, built with C for some old-school fun.","archived":false,"fork":false,"pushed_at":"2025-07-25T10:26:10.000Z","size":25155,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-25T16:36:32.855Z","etag":null,"topics":["2d-engine","blizzard-games","c-programming","game-development","game-engine","game-simulation","maker-project","nostalgia","oldschool","pathfinding","rts","simulation","starcraft"],"latest_commit_sha":null,"homepage":"","language":"C","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/Broosky.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,"zenodo":null}},"created_at":"2025-03-19T22:34:26.000Z","updated_at":"2025-07-25T10:26:13.000Z","dependencies_parsed_at":"2025-07-01T00:21:49.223Z","dependency_job_id":"96a6d0f2-e729-4893-a45d-e0f9ef47ffa7","html_url":"https://github.com/Broosky/Gatherers","commit_stats":null,"previous_names":["broosky/gatherers"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Broosky/Gatherers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broosky%2FGatherers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broosky%2FGatherers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broosky%2FGatherers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broosky%2FGatherers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Broosky","download_url":"https://codeload.github.com/Broosky/Gatherers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broosky%2FGatherers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269392110,"owners_count":24409754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["2d-engine","blizzard-games","c-programming","game-development","game-engine","game-simulation","maker-project","nostalgia","oldschool","pathfinding","rts","simulation","starcraft"],"created_at":"2025-05-19T08:14:27.447Z","updated_at":"2026-03-16T20:32:26.974Z","avatar_url":"https://github.com/Broosky.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# 💡 Gatherers\n\nA continuation of the [Gatherers-Legacy](https://github.com/Broosky/Gatherers-Legacy) StarCraft-style simulation. Active development continues here when time allows. See the legacy repo for early progress and design context.\n\n\u003e If you found this project useful, interesting, or worth keeping an eye on, consider giving it a ⭐️.\n\u003e It helps others discover the project and motivates me to keep building and sharing more.\n\n## 🔹 Ideas \u0026 Upcoming Changes\n\n- Optimize pathfinding...\n  - Selectable pathfinding mode: raycast (original), bisection...\n  - Memoize pathfinding points, or compute full path + memoize.\n  - For main pathfinding points, curve the transitions such that the movement is not jagged.\n- Move entity resource diagnostic rendering out of entity rendering logic.\n- Selectable renderer: Direct3D.\n- Engine:\n  - Homebrew renderer (DIBSECTION)...\n  - Networking...\n  - Sound...\n  - 3D spectator mode...\n- Crossplatform support: Refactor IO, clock, etc...\n- Mouse wheel zoom in or out.\n- Asset consolidation and compression.\n- Save/load sim...\n  - Drop save file onto exe to quick load.\n- Replace classic `char` buffer copying with modern safer alternatives.\n- Double check and update `const` parameters.\n- Use stack allocations instead of repetitive pointer dereferences for tight loops.\n- Single vs multiple instances.\n- Doxygen documentation.\n- Don't allow workers to move inside an entity.\n- Check include paths for Linux toolchain.\n- Unit movement acceleration/deceleration + framerate independent unit movement.\n- Decompose blur algorithm from SIMD to non-SIMD for better compatibility at the cost of performance.\n- Fixed point arithmetic?\n- CTRL + entity click to select all entities of the same type.\n- New assets...\n\n## 🔹 June 2025 Updates\n\n- Tiled terrain + minimap.\n- Engine pre/post-processing.\n- Draw scaled down versions of entities in the minimap instead of coloured blocks w/optional transparency.\n- Instant FPS meter alongside the long-term average.\n- Pretty print signed numbers.\n- Min \u0026 max client size.\n- Blitter index as enum.\n- Directories for the logger.\n- Consolidate TTS.\n\n## 🔹 May 2025 Updates\n\n- Rough-in pathfinding optimizations.\n- Rough-in renderer dirty zones.\n- Memory pools for critical allocation paths (pathfinding).\n- Refactor existing `malloc`s to use memory pools where applicable.\n- Change constant `#define`s to types.\n- Migrate volatile settings to file + hot reload.\n- Restructure `DOUBLE_BUFFER_T` to `RENDERER_T` and allow it to operate on a renderer implementation strategy.\n- Selectable renderer: wireframe, GDI single/double buffer, SDL, Direct2D.\n- Modified the resource bar for large numbers: 999,999,999.\n- Crop blit selective background on redraw.\n- Improve log flow with trace, warning, and others + common writing functions.\n- Maintenance timebase + daily bookending of log file.\n- Linked list traversal helpers.\n- Rough in some engine pre/post-processing.\n- Experiment with frame buffer channel masking and blurs using SSE SIMD vectorization.\n- Restructured menu items.\n- Split large functions into smaller ones.\n- Other architectural and miscellaneous changes + toolchain updates.\n\n## 🔹 April 2025 Updates\n\n- Updated pointer dereference style.\n- Arrow keys now adjust view translation.\n- Added uptime tracking.\n- Combined engine logic into Win32 message loop.\n- Cropped images for DC blit ops.\n- Added build mode, date \u0026 time stamping.\n- Toolchain updates.\n- Began benchmarking capture system.\n- Introduced a logging system.\n- Added Visual Studio 2022 solution/project setup and formatting rules.\n- Configured debug/release flags for MSVC.\n- Menu structure refinements.\n- Reviewed local function types.\n- Images -\u003e Assets (renamed + consolidated GDI brushes/pens).\n- `#include` dependency graph organization.\n- All functions to reference passed pointers \u0026 variables instead of global declarations/externs (where applicable).\n- Fail fast on bad `malloc`s.\n- Bump map size.\n- Borderless windowed mode (escape toggleable) + other chord QoL keys.\n- Consolidate MoveTo/LineTo's.\n- Replace I/FPOINT structs with I/FDELTA structs where applicable.\n- When building, if the entity extends past the client area, disallow it.\n- Right-click -\u003e build none.\n- Comma print large positive numbers.\n- Clean up sorting.\n- Render + slight pathfinding optimizations.\n  \n## 🔹 March 2025 Updates\n\n- Output current working directory.\n- Prefixed diagnostics for clarity.\n- New diagnostics: selected entities, selection box dimensions, selected workers.\n- Improved double-buffer canvas stability on resize.\n- Tweaked initial conditions for quicker building.\n- Renamed and rearranged menu items.\n- Added a diagnostics toggle-all option.\n- Diagnostic colour updates.\n- Assigned IDs to entities.\n- Minimap:\n  - Displays selection area.\n  - Allows left-click translation of main view.\n  - Highlights selected entities.\n- Worker AI:\n  - Scatters to nearest resources when multiple are selected.\n- File structure reorganization.\n- Added project files for:\n  - Code::Blocks\n  - Dev-C++\n- Updated Windows/Linux toolchain support.\n- Reviewed and updated typedefs, code, and comments.\n- General code review and distance calculations.\n- Note: Dev-C++ generates `_private.h`/`.rc` files by default — aligned these with `main.rc` where applicable.\n\n##\n\n\u003e Educational Use Notice: This project is provided for educational and learning purposes only. You are welcome to read, study, and experiment\n\u003e with this software and/or hardware. It is not intended for commercial use. This software and/or hardware is provided \"as is\", without warranty\n\u003e of any kind. The author assumes no responsibility for any damages or issues resulting from its use.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroosky%2Fgatherers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbroosky%2Fgatherers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroosky%2Fgatherers/lists"}