LittleMoonie / Our-Last-Light

Java Project for Epitech
1 stars 0 forks source link

🌌 Our Last Light

Our Last Light is a survival adventure game built in Java for a school project at Epitech Nancy. Set in a procedurally generated world, players must explore, gather resources, build shelters, and survive in a hostile environment filled with dynamic challenges. The game leverages an Entity-Component-System (ECS) architecture to efficiently manage game entities and systems, making the game structure modular and easy to expand.

πŸ“œ Table of Contents

🌍 Project Overview

Our Last Light is designed to immerse players in a mysterious, procedurally generated world where survival depends on skill, resourcefulness, and adaptability. Built as part of a Java programming project, this game emphasizes modular design through the Entity-Component-System (ECS) architecture, allowing for scalable gameplay and clean separation of data and logic.

✨ Features

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository:
    git clone [https://github.com/LittleMoonie/our-last-light.git](https://github.com/LittleMoonie/Our-Last-Light.git)
    cd our-last-light

    Compile the Java files:

javac -d bin src/*.java

Run the game:

java -cp bin GameLauncher

🎲 Gameplay

In Our Last Light, players navigate a procedurally generated world filled with dangers and mysteries. Survive by managing your resources, crafting tools, and building a safe camp. Each class has unique strengths and weaknesses, so strategy and planning are crucial to survival.

🧩 ECS Architecture

Our Last Light is structured using an Entity-Component-System (ECS) design pattern, which breaks down game elements into modular components, making the game easier to expand and maintain.

Entity

The Entity class represents any object in the game world, such as characters, items, and environmental elements. Entities contain only components (data), not behavior.

Component

Components are pure data holders that define the attributes of entities. Examples include:

System

Systems contain the logic of the game and operate on entities with specific components. Examples of systems include:

World

The World class acts as the main orchestrator, managing entities and systems. It updates each system in the game loop and handles entity lifecycle events.

public class World {
    private List<Entity> entities;
    private List<System> systems;

    public void update(float deltaTime) {
        for (System system : systems) {
            system.update(deltaTime);
        }
    }
}

πŸ—ΊοΈ Procedural Generation

The Procedural Generation System is responsible for creating the game world. It generates various biomes, places resources, and populates the environment with enemies and items, ensuring a unique layout each time the game is played. The system allows for adjustable parameters, making it easy to tweak the difficulty and density of resources.

🀝 Contributing

Contributions are welcome! If you'd like to contribute to the development of Our Last Light, please follow these steps:

πŸ”— Links Project Repository: GitHub Repository Documentation: Coming soon Our Last Light is a collaborative project by students at Epitech Nancy as a demonstration of advanced programming techniques and game development principles. We hope you enjoy exploring the mysteries of our world and surviving its dangers!

Note: This is a school project. Please feel free to reach out to the developers for questions, feedback, or collaboration opportunities!