Coder Social home page Coder Social logo

ao-libre / finisterra Goto Github PK

View Code? Open in Web Editor NEW
131.0 21.0 37.0 685.15 MB

Java game client and server based on the popular argentina MMORPG Argentum Online

Java 95.71% GLSL 0.12% Kotlin 1.02% OpenEdge ABL 3.15%
gamedev argentum-online libgdx artemis-odb kryonet

finisterra's Introduction

Finisterra CI Build Status GitHub release (latest by date including pre-releases) Language

MMORPG de código abierto basado en Argentum Online. Escrito en Java usando Artemis, Kryonet y libGDX.

Open Source MMORPG based on Argentum Online. Written in Java, using Artemis, Kryonet and libGDX.

Redes Website Discord

Colaboradores

game preview image

Fugaz Get Started

basado en OpenJDK versión 15:

git clone https://github.com/ao-libre/finisterra.git
cd finisterra
./gradlew desktop:run -x :shared:fluid  

Getting Started (IntelliJ)

Requerido JDK 15

  • Importar como proyecto seleccionando build.gradle
  • Configurar JDK en el IDE:
    • Settear JDK al proyecto: File -> Project Structure... -> Project (en Project Settings) -> Project SDK
    • Settear JDK a gradle: buscar Gradle en las settings o File -> Settings... -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM
  • Ejectuar la tarea build con gradle:
    • Desde la pestaña gradle (en la barra lateral derecha), navegar y ejecutar la tarea: finisterra -> Tasks -> build -> build

Java

Compatible con Eclipse, Netbeans y IntelliJ

ECS (entity-component-system)

To understand ECS, I recommend to read this. Using artemis framework has been really useful to start rewriting this game.

Kryonet

Avoid creating huge game protocol since we can use Requests and Responses, which can be processed easily with 'visitor' design pattern. Read more here

LibGDX

It allows us to create application game logic, create screens and render all that we need using OpenGL.

finisterra's People

Contributors

agusayerza avatar bestiardo avatar cpbeto avatar cucsijuan avatar dazednconfused- avatar derillo avatar ezefran avatar guidota avatar javmo avatar joaquinodz avatar kuruk-mm avatar lucheti29 avatar matisandacz avatar neoranger avatar recox avatar vicosdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

finisterra's Issues

Error al leer el Mapa(no encuentra un mapa aledaño)

Dungeon Dragon
Pos 166 - 29 - 33
Problem: Crash Cliente , Server: No problem idetify

Errores:
03:42 INFO: Failed to read map -1
Exception in thread "LWJGL Application" java.lang.NullPointerException
at game.systems.render.world.MapGroundRenderingSystem.drawGraphicInLayer(MapGroundRenderingSystem.java:55)
at game.systems.render.world.MapGroundRenderingSystem.lambda$drawRange$0(MapGroundRenderingSystem.java:49)
at game.systems.render.world.WorldRenderingSystem$UserRange.forEachTile(WorldRenderingSystem.java:158)
at game.systems.render.world.MapGroundRenderingSystem.drawRange(MapGroundRenderingSystem.java:43)
at game.systems.render.world.MapGroundRenderingSystem.renderWorld(MapGroundRenderingSystem.java:39)
at game.systems.render.world.MapGroundRenderingSystem.processSystem(MapGroundRenderingSystem.java:64)
at com.artemis.BaseSystem.process(BaseSystem.java:46)
at com.artemis.InvocationStrategy.process(InvocationStrategy.java:25)
at com.artemis.World.process(World.java:385)
at game.screens.GameScreen.update(GameScreen.java:153)
at game.screens.GameScreen.render(GameScreen.java:180)
at com.badlogic.gdx.Game.render(Game.java:46)
at game.AOGame.render(AOGame.java:45)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

Create Resources Entities

Interactable resources like Trees or Ore veins, with the possibility to expand to other types of future resources (like cloth, potion ingredients, etc.)

libGDX forces System.exit() with non-zero exit value

When the main window is closed, the main loop is stopped, the Application terminated and a system exit is forced with non-zero exit value (interpreted as a failure and throwing an error).

This kills any running threads and right now is fine as it is but eventually the shutdown mechanism should be cleaned.

LwjglApplication.java:

void mainLoop () {
	// ...
	// while() {}
	// ...
	if (graphics.config.forceExit) System.exit(-1); // Throws an error on console
}

Related to #8 .

Energía

La energía no se actualiza:
Al atacar
Al estar desnudo
al usar magias.

Create map

We may use the same mechanism or just TiledMap

Buff GUI indicator

When you are under the effect of a Buff, a graphical representation of that buff need to be rendered on screen.

it may be an icon, when the buff has X seconds left this icon can blink, in like a fade in/out fashion until it times out and disappears.

implement map editor

https://github.com/libgdx/libgdx/wiki/Tile-maps
Comment of @cpbeto in discord talking about tiles

No me acuerdo bien todo, pero algo que le faltaba es el concepto de "objetos".
Osea en un mapa no podías guardar información de objetos tirados en el piso, objetos "fijos" o NPCs
QUIZÁ, se puede forkear el repo de Tiled e implementarle lo que necesitemos
Por todo lo demás Tiled estaba genial
Servía para indexar gráficos de mapa me parece, no objetos o equipamiento.

Lista de servidores

Al perder conexión por caida del servidor, no muestra la lista de servidores cuando vuelve el servidor

Npc Respawn System

method-respawn-fix:

  • current system

method-respwn-aleatory-global:

positionRespawn = false
is positionRespawn <> true
createPosition = getPosition(ramdom(listMaps), random(99) , (random(99)) //Map, x, y
createPosition is empy?
    createPosition there is a user less than 10 positions?
    positionRespawn = true
return

method-respwn-aleatory-local:

positionRespawn = false
is positionRespawn <> true
createPosition = getPosition(**currentMap**, random(99) , (random(99)) //Map, x, y
createPosition is empy?
    createPosition there is a user less than 10 positions?
    positionRespawn = true
return

method-respawn-aleatory-area:

  • to be discussed

About this project

how is the actual state of this project? could be launch a proper server/client with this? what features it has?

Join maps as one world (without map limits)

Client: should handle map transition (prediction) as simple movement and render it correctly
Server: should not distinguish between maps, near entities would be in different maps. NPCs should not be able to pass through map limits and should come back to original position if no enemy target is present

Fade-out> Fade-in screen after dying

Effect to differentiate that the user has died. The screen turns black and after 2 seconds it becomes normal.
The effect should be as simple as possible

Debug info with TAB key

De manera similar al F3 en Minecraft, al apretar una tecla se podría mostrar una pantalla de debug, por encima del render y con transparencia.

Se puede mostrar información como fps, tiempo de render, consola de debug, etc.

Dinasty ao

hi, whats the actual state of this project?

[Question] Client entities on connect

@guidota Great example of libgdx, artemis, and kryonet!

I've been going through the code a couple days now as there are many patterns and approaches here I'm learning a great deal from. I understand how messages are processed between client/server using the visitor pattern (thanks I'm now using that too). I see how entities are modified and removed with EntityUpdate and RemoveEntity notifications but I'm having trouble finding where the client gets their initial set of entities in the world on connection to the server.
Can you point me in the right direction?
Thanks

Door Keys, lockpicking

Door can have locks, and other entities too (chests?), they need keys to be opened.
these locks can be picked up based on skill (and minigame maybe?) some others cant be lockpicked.

Depends on #51

Add Agility and Strength buff

  • Update AGI and STR components to have a base value and a modified one.
  • Make a handler to keep track the time since the buff were applied.
  • Make a system to check and remove expired buffs.

ClassNotFoundException en run config.

En IntelliJ, para las configuraciones desktop:run y server:run, si se corre primero el cliente y luego el servidor, al loguearse salta una excepción en el cliente al intentar cargar la clase Tile del paquete ar.com.tamborindeguy.model.map en el proyecto shared.

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NoClassDefFoundError: [[Lar/com/tamborindeguy/model/map/Tile;
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:133)
Caused by: java.lang.NoClassDefFoundError: [[Lar/com/tamborindeguy/model/map/Tile;
...

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.