https://github.com/dedetheprogrammer/the_ice-climbers_nes
Repositorio de la asignatura de Videojuegos de la Universidad de Zaragoza del año 2022-23. Recreación de un videojuego antiguo con la librería Raylib.
https://github.com/dedetheprogrammer/the_ice-climbers_nes
cpp17-library raylib raylib-cpp video-game videogame-engine
Last synced: 3 months ago
JSON representation
Repositorio de la asignatura de Videojuegos de la Universidad de Zaragoza del año 2022-23. Recreación de un videojuego antiguo con la librería Raylib.
- Host: GitHub
- URL: https://github.com/dedetheprogrammer/the_ice-climbers_nes
- Owner: dedetheprogrammer
- Created: 2023-02-15T08:25:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-17T07:38:42.000Z (over 1 year ago)
- Last Synced: 2025-01-11T19:22:55.399Z (4 months ago)
- Topics: cpp17-library, raylib, raylib-cpp, video-game, videogame-engine
- Language: C
- Homepage:
- Size: 88.1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# (The) Ice Climber(s) (NES)
Repositorio de la asignatura de Videojuegos de la Universidad de Zaragoza del año 2022-23.
El objetivo de la asignatura es recrear e incluso mejorar aspectos de un videojuego antigüo a nuestra elección a bajo nivel, es decir, sin el uso de un motor de videojuegos que abstraiga toda la gestión interna de un juego, siendo nosotros quienés hagan la misma. En este repositorio se detalla el progreso y se guarda el código fuente del proyecto.
https://github.com/dedetheprogrammer/The_Ice-Climbers-NES/assets/111243030/2d1dffcc-1f24-4489-86a6-c82eb7176307
https://github.com/dedetheprogrammer/The_Ice-Climbers_NES/assets/111243030/231a848b-7bbf-4364-b633-e7647cc033a8
## 1. La selección del juego
El primer paso para recrear el juego es elegirlo, y de todos los juegos del mundo, siete fueron los que se pusieron sobre la mesa para recrear (detallados posteriormente) y a su vez, de estos, fue el ***Ice Climber*** la elección por consenso entre los miembros del equipo.### **Ice Climber**
[Ice Climber](https://es.wikipedia.org/wiki/Ice_Climber) (en japonés: アイスクライマー, Aisu Kuraimā; "Escalador del Hielo" en Español), es un videojuego de plataformas sacado para distintas plataformas como en Arcade (VS. Ice Climbers, 1984), la NES (1985) o GBA (2004).
Alcanza las cimas más peligrosas, esquiva helados abismos y aplasta a monstruos de las nieves, solo o con un amigo, en este clásico de NES.
Usa el martillo para destrozar los bloques y defenderte de los monstruos de camino a la cima. Completa los ocho niveles para acceder a la fase de bonificación y recoge todos los vegetales que puedas antes de partir volando en cóndor.
En el modo para dos jugadores, podrás jugar con un amigo o contra él para ver quién llega antes a la cima.
### **Hotline Miami**
[Hotline Miami](https://store.steampowered.com/app/219150/Hotline_Miami) es un juego de acción de alta intensidad que rebosa brutalidad cruda, tiroteos duros y combate cuerpo a cuerpo aplastante.Ambientado en un Miami alternativo en 1989, asumirás el papel de un misterioso antihéroe en una frenética matanza contra el oscuro mundo criminal, siguiendo las indicaciones de voces en tu contestador automático. Pronto te encontrarás luchando por comprender qué está sucediendo y por qué eres propenso a estos actos de violencia.
Confía en tu ingenio para coreografiar tu camino a través de situaciones aparentemente imposibles, ya que te encontrarás constantemente superado en número por enemigos viciosos. La acción es implacable y cada disparo es letal, por lo que cada movimiento debe ser rápido y decisivo si esperas sobrevivir y descubrir las siniestras fuerzas que impulsan la masacre.
El estilo visual inconfundible de Hotline Miami, una banda sonora envolvente y una cadena de eventos surrealista te harán cuestionar tu propia sed de sangre mientras te desafían hasta los límites con un despiadado y poco indulgente desafío.
### **Kid Icarus**
[Kid Icarus](https://www.nintendo.es/Juegos/NES/Kid-Icarus-777613.html) (光神話 パルテナの鏡 Hikari shinwa: Parutena no Kagami?, El Mito de la Luz: El Espejo de Palutena) es un videojuego de plataformas desarrollado por Nintendo R&D1 para la Famicom Disk System en 1986, y para la NES en 1987. Es el juego que inicia la saga Kid Icarus, con una continuación para Game Boy, Kid Icarus: Of Myths and Monsters y otra entrega para Nintendo 3DS, Kid Icarus: Uprising. El juego está ambientado en la mitología de la Grecia clásica.En el lejano reino de Tierra Angélica, la cruel diosa Medusa ha robado los tres tesoros sagrados y ha encerrado a la diosa de la luz, Palutena.
Solo tú, en el papel de Kid Icarus, podrás recuperar los tesoros, acabar con Medusa y liberar a Palutena de su cautiverio.
A lo largo de tu aventura atravesarás escalofriantes ruinas en las que encontrarás armas y valiosos remedios. ¡Los necesitarás si quieres que la balanza se incline a tu favor en tu lucha contra las fuerzas de Medusa!
Utiliza el arco y las flechas para deshacerte de los siniestros centinelas que te obstaculizan el paso en las puertas del Inframundo. Una vez que venzas a todos los enemigos, te espera el mayor desafío: ¡la propia Medusa!
***¿Lograrás rescatar a Palutena y recuperar los tesoros?***
### **Super Metroid**
¡Cuando los piratas espaciales secuestran al último Metroid, la cazarrecompensas Samus Aran entra en acción!Pon en práctica nuevas habilidades como el Rayo Enganche o el Visor de Rayos X para recorrer los enormes laberintos del planeta Zebes combatiendo enemigos y temibles jefes con un arsenal de rayos, misiles y bombas.
[Super Metroid](https://www.nintendo.es/Juegos/Super-Nintendo/Super-Metroid-279613.html) es uno de los mejores juegos de acción en 2D de todos los tiempos, y gracias a su innovadora mezcla de exploración, acción y misterio, sentó las bases para la saga Metroid Prime.
### **Bubble Bobble**
[Bubble Bobble](https://es.wikipedia.org/wiki/Bubble_Bobble) es un videojuego de plataformas creado por Taito que ha sido lanzado en múltiples soportes. La primera versión fue creada para máquinas recreativas en el año 1986.Uno o dos jugadores encarnan los personajes de Bub y Bob, dos pequeños dinosaurios que deben luchar a través de 100 niveles contra sus enemigos para rescatar a sus amadas novias.
Para conseguir su ansiado objetivo Bub y Bob únicamente están armados con su habilidad y capacidad de lanzar burbujas, en las cuales sus enemigos caen atrapados y mueren.
Las burbujas son lanzadas por la boca de los dinos y duran un tiempo determinado. Estas burbujas pueden ser utilizadas como plataformas por nuestro protagonistas para alcanzar áreas inaccesibles o dar saltos gigantescos.
Entre Bub y Bob existe un gran entendimiento y suelen ayudarse mutuamente para derrotar a sus enemigos. De esta forma Bub puede por ejemplo lanzar burbujas a Bob para que éste consiga llegar a algún lugar inalcanzable.
### **The Legend of Zelda: Link's Awakening DX**
En su primera aventura para Game Boy, el barco de Link naufraga en las playas de una extraña isla llamada Koholint. Para regresar a su hogar, deberá desentrañar el misterio del Pez Viento y enfrentarse a un temible nuevo enemigo.Además de presentar un colorido apartado gráfico, en esta revisión para Game Boy Color podrás explorar una nueva mazmorra que no aparecía en el juego original para Game Boy.
Utiliza todo tipo de objetos y armamento, como las Botas de Pegaso y el gancho, para superar las intrincadas mazmorras y derrotar a los jefes más poderosos, y ayuda a nuestro héroe a encontrar los legendarios instrumentos de las sirenas.
[The Legend of Zelda: Link’s Awakening DX](https://www.nintendo.es/Juegos/Game-Boy-Color/The-Legend-of-Zelda-Link-s-Awakening-DX--275946.html) es una épica aventura que te cautivará desde el primer momento.
### **Q\*Bert**
[Q\*bert](https://es.wikipedia.org/wiki/Q*bert) es un videojuego de arcade desarrollado y publicado por Gottlieb en 1982.Es un juego de plataformas con gráficos en dos dimensiones. El objetivo es cambiar el color de todos los cubos de una pirámide haciendo que el protagonista salte encima de cada cubo mientras evita obstáculos y enemigos. Los jugadores usan un joystick para controlar el personaje.
El juego fue concebido por Warren Davis y Jeff Lee. Lee diseñó el personaje principal basándose en influencias de su infancia y le dio a Q\*bert una gran nariz que dispara proyectiles.
La idea original involucraba cruzar una pirámide para disparar a los enemigos, pero Davis eliminó la mecánica de disparos para simplificar la jugabilidad. Q\*bert fue desarrollado bajo el nombre de proyecto Cubes, aunque también fue llamado brevemente Snots and Boogers y @!#?@! durante el desarrollo.
## 2. Las tecnologías
Tras tener el juego elegido, quedaba elegir como se haria el juego. Como se ha mencionado antes, no se tenía permitido hacer uso de un motor de videojuegos como Unity, GameMaker o Unreal Engine, todas las gestiones de físicas o ficheros debían ir de nuestra mano.Estas serían las herramientas elegidas para poder llevar a cabo el proyecto:
- Librería [Raylib](https://www.raylib.com) para C++. Una biblioteca simple y fácil de usar para disfrutar de la programación de videojuegos, sin una interfaz sofisticada, sin interfaces o ayudantes visuales, sin herramientas o editores de interfaz gráfica... solo pura programación al puro estilo espartano.
- [Aseprite](https://www.aseprite.org). Una herramienta de pixel-art que permite la creación de sprites y animaciones pensadas para videojuegos en diferentes resoluciones.
- Motor de videojuegos Dengine. Un motor de videojuegos creado por [Dede](https://github.com/dedetheprogrammer?tab=repositories) que aplica las bases del sistema ECS y se encargá de las tareas de un motor de videojuegos para facilitar el desarrollo de la replica.## 3. Motor de videojuegos Dengine
Tras la necesidad de gestionar varios aspectos de un motor de videojuegos abstrayendolos de la lógica del propio juego como la creación de objetos o las físicas, se tuvo que crear un nuevo componente, el Dengine.El Dengine es un motor de videojuegos 2D en miniatura que implementa las funcionalidades más mínimas de un motor de videojuegos basado en Raylib:
- Sistema de creación y gestion de objetos genéricos, los GameObjects, con comportamiento extensible mediante el uso de componentes.
- Sistema de gestión y tratado de físicas.
- Sistema de dibujado y renderizado.
- Sistema de audio.
- Sistema de UI (o interfaces, dibujado y re-escalado).El objetivo de este motor era el de poder separar la lógica del juego y que se pudiese construir sobre un gestor de videojuegos, y además, poder crear un gestor de interfaces que pudiese dibujar y re-escalar sus elementos de manera eficiente.
## 4. Impementación
No se describirá en detalle la implementación, ya que ya existe el [Game Document Design](https://github.com/dedetheprogrammer/The_Ice-Climbers_NES/blob/main/(The)%20Ice%20Climber(s)%20(NES)%20-%20TDD%20-%20Versi%C3%B3n%20Final.pdf) que lo desglosa y detalla en profundidad.## 5. Jugar
Existen tres métodos diferentes para jugar el juego, cuál te parezca más cómodo dependerá de tí.
> ⚠ ***Nota imporante***: El juego solo es compatible con Windows.
### Compilar el código fuente
1. Clona el repositorio en tu almacenamiento local:
```bash
git clone https://github.com/dedetheprogrammer/The_Ice-Climbers-NES
```2. El código fuente ya contiene las librerias de Raylib y Dengine compiladas, por lo que no son necesario descargarlas. Descarga el entorno de ejecución [MinGW-w64](https://github.com/skeeto/w64devkit), necesario para compilar el juego en Windows:
```bash
wget https://github.com/skeeto/w64devkit/releases/download/v1.19.0/w64devkit-1.19.0.zip
```3. Descomprime el fichero recién descargado, guardalo en la carpeta que más rabia te de y añade el entorno al `PATH` de Windows:
1. En la barra de búsqueda de Windows, busca "*Editar las variables de entorno del sistema*".
2. Dale al botón "Variables de entorno":
3. Doble click a la entrada "Path":
4. Dale al botón "Nuevo":
5. Pega la ruta completa de la carpeta de `w64devkit/bin` y dale al botón "Aceptar":
6. Ya podemos pasar a la terminal.
4. Abre la terminal, es hora de compilarlo. En la carpeta raíz del repositorio clonado, puedes compilar el juego de dos maneras:
1. Con el archivo auto.sh, sin usar Cmake:
```bash
sh .\auto.sh
```2. Con el archivo build.sh, usando Cmake:
```bash
sh .\build.sh
```5. Espera a que termine la compilación y dale al `.exe` generado.
6. Juega!
### Descargar el juego directamente
Simplemente [descarga el juego](https://github.com/dedetheprogrammer/The_Ice-Climbers_NES/releases/tag/v1.1.0), descomprime el `.zip` donde quieras y juega!.### Juega desde tu navegador
`Work in progress...`
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0/100%