Giter VIP home page Giter VIP logo

farmland's Introduction

Farmland

Farmland is a management game where you need to take care of your farm while being careful about the economy to stay in business while your competitors will try to get on top of you!

Screenshots

Features

  • A homemade game engine.
  • A turn by turn based farm management gameplay.
  • A singleplayer and multiplayer experience.
  • Useful debugging tools and console system.
  • An easy to extend codebase (add an item, add a language, etc.).

To see more details about the features included and the project's architecture, please take a look here.

Architecture

Tree of the most important files and folder in the project's repository hierarchy:

/
├─┬─src/: Source code.
│ ├─┬─main/java/com/ustudents/: Main source code package.
│ │ ├─┬─engine/: The engine source code
│ │ │ └─┬─audio/: The audio system code.
│ │ │   ├─core/: The core system code (resources, etc.).
│ │ │   ├─ecs/: The entity-component-system code.
│ │ │   ├─graphic/: The graphics system code.
│ │ │   ├─gui/: The GUI related code (GuiBuilder).
│ │ │   ├─i18n/: The language system code.
│ │ │   ├─input/: The input and input actions code.
│ │ │   ├─network/: The network system code.
│ │ │   ├─scene/: The scene code and scene manager.
│ │ │   ├─utility/: Some utility code.
│ │ │   ├─Game.java: Main engine class.
│ │ │   └─GameConfig.java: Configuration class.
│ │ └─┬─farmland/: The game source code
│ │   └─┬─component/: Evey game related ECS components.
│ │     ├─core/: Core game structures.
│ │     ├─network/: Every game related network messages.
│ │     ├─scene/: Every game scenes.
│ │     ├─Farmland.java: The main game class.
│ │     ├─Main.java: The class containing the main method.
│ │     └─*.java: Other source files.
│ └─test/: Tests source code.
├─┬─data/: Main data folder.
│ ├─fonts/: Fonts folder.
│ ├─i18n/: Localizations folder (english, french).
│ ├─items/: Resources databases.
│ ├─logs/: Generated log files.
│ ├─saves/: Generated save files.
│ ├─shaders/: Render system shaders code.
│ ├─sounds/: Sound and music files.
│ ├─textures/: Texture, sprite/sprite animation definition files.
│ ├─server.json: Generated server config file.
│ └─settings.json: Generated game config file.
├─FEATURES.md: A complete features list with explanations.
├─INSTRUCTIONS.md: Instructions to test the most important project's features.
├─README.md: This file.
├─ROADMAP.md: Roadmap of who did what and when.
└─*.*: Other files.

How to use

From sources

First, you need to clone the repository by using git clone [email protected]:hugokindel/farmland.git or git clone https://gaufre.informatique.univ-paris-diderot.fr/hugokindel/farmland.git

Compile with an IDE (if it supports Gradle):

  1. Open the project's directory in your IDE.
  2. Use the run gradle task.

Compile with the command line:

  1. Open a terminal in your project directory.
  2. Run gradle wrapper (it will download all dependencies, including gradle itself) ./gradlew build.
  3. You can finally run the project with ./gradlew run.

From a binary distribution

If you got a binary release (containing all the libs, assets and the bin directory), you can directly use ./farmland (on UNIX systems) or ./farmland.bat (on Windows).

Try the project

Instructions to try every interesting features included within this project can be found here.

Roadmap

The roadmap can be read here.

Third party libraries

  • LWJGL
    Gives access to other low level libraries (GLFW, OpenGL, OpenAL).
  • GLFW
    Handles the window and the input.
  • OpenGL
    Creates the rendering context, and a way to communicate with the GPU.
  • OpenAL
    Handles the audio system.
  • ImGui (with imgui-java as a binding)
    Permits to rapidly develop usable GUI in a game.

Contributors

License

This project is made for educational purposes only and any part of it can be used freely.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.