{"id":19028348,"url":"https://github.com/asierso/vortex-engine","last_synced_at":"2025-06-28T21:32:15.592Z","repository":{"id":197866183,"uuid":"699533352","full_name":"Asierso/vortex-engine","owner":"Asierso","description":"Librería para crear videojuegos simples en Java. Basado en el uso de GameObjects y componentes instanciables","archived":false,"fork":false,"pushed_at":"2024-07-15T19:40:43.000Z","size":6667,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T19:44:59.052Z","etag":null,"topics":["game-engine","game-engine-2d","java-library","jsfml","sfml","sfml-graphics-library"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Asierso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2023-10-02T20:26:25.000Z","updated_at":"2024-04-05T17:05:56.000Z","dependencies_parsed_at":"2024-03-18T20:47:50.339Z","dependency_job_id":"1583427e-dbfc-447f-940b-e0bfe3b58910","html_url":"https://github.com/Asierso/vortex-engine","commit_stats":null,"previous_names":["asierso/vortexengine","asierso/vortex-engine"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Asierso/vortex-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asierso%2Fvortex-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asierso%2Fvortex-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asierso%2Fvortex-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asierso%2Fvortex-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Asierso","download_url":"https://codeload.github.com/Asierso/vortex-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asierso%2Fvortex-engine/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262502431,"owners_count":23321155,"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","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":["game-engine","game-engine-2d","java-library","jsfml","sfml","sfml-graphics-library"],"created_at":"2024-11-08T21:10:48.759Z","updated_at":"2025-06-28T21:32:15.577Z","avatar_url":"https://github.com/Asierso.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vortex Engine\n## Descripcion\nVortex engine es una librería para crear videojuegos 2D simples en Java. Permite crear GameObjects y componentes instanciables de forma sencilla además de trabajar con escenas\n\n\n## 📋 Características\n- **Manejo de objetos y componentes:** El motor permite poder asignar diferente lógica a los objetos por medio de compontenes. Un objeto puede tener multiples componentes y trabajar con ellos es sencillo. Puede crear sus propios componentes fácilmente\n\n- **Estructuracion por escenas:** Vortex Engine maneja los espacios renderizables por escena, permitiendo mostrar distintas escenas en la misma ventana de forma eficiente\n\n## 💻 Importar librería (Maven)\nPuede agregar la dependencia a su proyecto Maven con el siguiente código en su fichero `pom.xml`. Recuerde sustituir \"xxxxx\" por la versión de su preferencia. Puede ver las versiones [aquí](https://github.com/Asierso/vortex-engine/packages)\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.asierso\u003c/groupId\u003e\n  \u003cartifactId\u003evortex-engine\u003c/artifactId\u003e\n  \u003cversion\u003exxxxx\u003c/version\u003e\n\u003c/dependency\u003e\n```\nRecuerde que para poder usar el paquete debe de agregar la URL del repositorio a su fichero `pom.xml`.\n\n```xml\n\u003cdistributionManagement\u003e\n    \u003crepository\u003e\n        \u003cid\u003egithub\u003c/id\u003e\n        \u003cname\u003eGitHub Asierso Apache Maven Packages\u003c/name\u003e\n        \u003curl\u003ehttps://maven.pkg.github.com/Asierso/vortex-engine\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/distributionManagement\u003e\n```\n\n## 🛠️ Building \n\n### Requisitos previos\n- Java Development Kit (JDK) 18 o superior. Puede descargarla [aquí](https://www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html)\n- Instalación de Apache Maven. Puede descargarla [aquí](https://maven.apache.org/download.cgi)\n\n### Pasos de compilación\n1. Clona el repositorio: `git clone https://github.com/Asierso/VortexEngine.git` o bien descargue una de las versiones \"release\" de VortexEngine\n2. Configure la version de Java preferiblemente en la versión [jdk 18](https://www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html)\n3. Compile el proyecto con Apache Maven usando `mvn package`\n\n\u003e [!NOTE]\n\u003e No se han realizado tests en versiones de java inferiores a la 18.0 por lo que se pueden experimentar bugs o incompatibilidades\n\n## ✍️ Ejemplos de codigo\n\n### Primera ventana\nSe muestra el fragmento de un pequeño código para generar una nueva ventana y renderizar una escena vacía:\n```java\nWindow ventana = new Window(600,500);\nventana.setTitle(\"Mi primera ventana\");\nventana.setScene(new MainScene());\nventana.instantiate();\n```\n\n```java\npublic class MainScene implements Scene{\n    @Override\n    public void start() {\n        //Se repite al iniciar la escena\n    }\n\n    @Override\n    public void update(Window window, Iterable\u003cEvent\u003e events) {\n        //Se repite cada vez que se renderiza la escena\n    }\n}\n```\n---\n### Primer objeto\nSe muestra un pequeño fragmento de código para generar un GameObject con forma de rectangulo blanco, el cual se puede manipular mediante su transform\n\n```java\npublic class Rectangle extends GameObject {\n    @Override\n    public void render(Window win) { \n        //Se repite al instanciar el objeto en cada actualizacion del render\n\n        //Dibujar un pequeño rectangulo\n        RectangleShape shape = new RectangleShape();\n        shape.setFillColor(Color.WHITE);\n        shape.setPosition(this.getPosition());\n        shape.setRotation(this.getRotation());\n        shape.setSize(new Vector2f(this.getBoxSize().x, this.getBoxSize().y));\n\n        //Renderiza el objeto en la ventana actual\n        win.getRender().draw(shape);\n    }\n}\n```\n\nEste objeto se puede instanciar en cualquier escena las veces que sea necesario. En el siguiente código se muestra un ejemplo de como se instancia un GameObject en una escena\n\n```java\npublic class MainScene implements Scene{\n    private Rectangle rectangulo;\n    \n    @Override\n    public void start() {\n        //Se crea el objeto y se definen sus propiedades\n        rectangulo = new Rectangle();\n        rectangulo.setPosition(30,30);\n        rectangulo.setBoxSize(20,10);\n    }\n\n    @Override\n    public void update(Window window, Iterable\u003cEvent\u003e events) {\n        //Se instancia el objeto en la escena actual\n        rectangulo.instantiate(window);\n    }\n}\n```\n\n\u003e [!TIP]\n\u003e Se pueden agregar componentes a los GameObject usando la sentencia ```gameObject.addComponent(new Component())``` y acceder acceder al componente, usando el metodo ```gameObject.\u003cComponent\u003egetComponent(Componente.class)```\n---\n### Componentes personalizados\nSe pueden crear componentes personalizados para los GameObject creando una clase que implemente la interfaz \"Component\". El GameObject referenciado en el método implementado hace referencia al objeto que implementa el componente. \n\nEn el siguiente código se muestra un ejemplo de como se crea un componente que mueve los objetos a la derecha\n\n```java\npublic class ComponenteCustom implements Component{\n    @Override\n    public void run(GameObject target) {\n        //Logica interna del componente (ejecutado en cada frame)\n        target.setPosition(target.getPosition().x + 0.1f,target.getPosition().y);\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasierso%2Fvortex-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasierso%2Fvortex-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasierso%2Fvortex-engine/lists"}