🧱 Post #1: Project Foundations — Version Control and Folder Structure That Scale
Genesis of Infrastructure — Entry #1
By Emergent Dynamics, building Colonies: Genesis of E.D.E.N.
Welcome to the first entry in Genesis of Infrastructure, the technical foundation series behind our simulation-first strategy game, Colonies: Genesis of E.D.E.N. This is where we share the systems, structure, and tools that make an ambitious, multi-epoch, AI-driven sim possible.
Today’s focus is simple:
Lay the groundwork properly — or suffer forever.
🎯 Goals of This Setup
By the end of this entry, you’ll understand:
- How to structure your Unity project folders with long-term clarity
- Why Git is essential (not optional) — and how to set it up right
- How to configure your
.gitignore
for Unity the correct way - How to prepare your project for Continuous Integration (CI) in the future
This is not flashy — it’s foundational. But you’ll thank yourself later.
đź—‚ Recommended Unity Folder Layout
Here’s the layout we use:
Assets/
├── External/ # Modular packages (Eden.Core, Eden.Unity, etc.)
│ ├── Eden.Core/
│ ├── Eden.Unity/
│ └── ThirdParty/
├── Scenes/
├── Game/
│ └── Content/
└── Art/ # Models, textures, materials
ProjectSettings/
Packages/
.gitignore
README.md
Why This Works
- âś… Clean modular separation between engine (
Eden.Core
) and game content - âś… Supports Unity asmdef (Assembly Definition) granularity
- ✅ Keeps root clean — project tooling lives at the top (
README.md
,.gitignore
, CI config)
This structure scales — whether you’re prototyping one system or simulating an entire galaxy.
đź”§ Setting Up Git the Right Way
If you’re new to Git, here’s your minimal onboarding:
- Install Git and GitHub Desktop
- Create a GitHub repository (private or public)
- Clone it to your Unity project folder
- Add a
.gitignore
file (see below) - Commit only clean, necessary files
You can use GitHub Desktop or the command line:
git add .
git commit -m "chore: initial commit with clean Unity structure"
git push origin main
đź“› Prevent Git From Exploding: Unity .gitignore
Unity generates a ton of temporary files you must never commit.
Here’s a battle-tested .gitignore
for Unity projects:
[Ll]ibrary/
[Tt]emp/
[Bb]uild/
[Bb]uilds/
[Oo]bj/
[Mm]emoryCaptures/
Logs/
UserSettings/
# IDE files
.vscode/
.idea/
# Unity-specific
*.csproj
*.unityproj
*.sln
*.user
*.pidb
*.booproj
*.svd
# OS junk
.DS_Store
Thumbs.db
Place this file in the root of your project — the same folder as Assets/
, Packages/
, and ProjectSettings/
.
âś… First Commit Checklist
Before you commit:
- [x]
.gitignore
is in place - [x] Only include
Assets/
,Packages/
,ProjectSettings/
, and meta/tooling files - [x] Exclude
Library/
,Temp/
,Builds/
, and.vs/
- [x] Initial Unity scene opens cleanly
Then:
git add .
git commit -m "chore: initialize project structure and ignore files"
git push origin main
🚦 Ready for CI (Coming Soon)
This structure is CI-ready — meaning:
- You can automate Unity builds and tests using GitHub Actions
- You’ll be able to track per-commit performance and errors
- The project is now safe for scaling to team development
We’ll dive into Unity CI pipelines in the next post.
🔚 Wrap-Up
Getting your folder structure and Git hygiene right isn’t glamorous — but it’s what makes long-term development possible.
From here, you’re ready to add:
- Source profiling (tick profiler, system timing)
- CI-backed automated test suites
- Unity content split into modular packages (like Eden.Core and Eden.Unity)
Next Entry: Setting Up Unity Continuous Integration with GitHub Actions