TUS en Diseño de Videojuegos
Ayose Lomba Pérez (LinkedIn)
Universidad del Atlántico Medio
Las estructuras de datos son formas de organizar y almacenar datos para facilitar su uso y manipulación en la programación.
Las estructuras de datos juegan un papel fundamental en la programación, ya que permiten organizar, manipular y almacenar información de manera eficiente.
En el contexto de C# y Unity, su uso es clave para optimizar el rendimiento y facilitar la gestión de los elementos dentro de un videojuego.
Las estructuras de datos son formas de organizar la información para que sea fácil de manipular. Se pueden imaginar como distintos tipos de cajas donde guardamos objetos de una manera ordenada, dependiendo de cómo queremos acceder a ellos más adelante.
Estas estructuras nos ayudan a optimizar los procesos dentro de un programa o videojuego, permitiendo que la información fluya de manera ordenada y eficiente.
– Estructuras Lineales
– Estructuras No Lineales
Un array es una colección de elementos del mismo tipo almacenados en ubicaciones contiguas de memoria.
Una lista enlazada es una colección de elementos donde cada uno de ellos está conectado con el siguiente. Se diferencia de un array porque sus elementos no están almacenados en una memoria contigua.
Imagina que tienes una cadena de papel donde cada eslabón está unido al siguiente. Puedes quitar o agregar eslabones fácilmente sin necesidad de mover los demás.
class Nodo {
public int dato;
public Nodo siguiente;
public Nodo(int valor) {
dato = valor;
siguiente = null;
}
}
class ListaEnlazada {
public Nodo cabeza;
public void Agregar(int valor) {
Nodo nuevo = new Nodo(valor);
if (cabeza == null) {
cabeza = nuevo;
} else {
Nodo actual = cabeza;
while (actual.siguiente != null) {
actual = actual.siguiente;
}
actual.siguiente = nuevo;
}
}
}En Unity, una lista enlazada puede utilizarse para manejar objetos que entran y salen de la escena de manera eficiente. Un ejemplo puede ser un sistema de objetos recolectables en un nivel.
using System.Collections.Generic;
using UnityEngine;
public class AdministradorObjetos : MonoBehaviour {
private LinkedList<GameObject> objetosActivos = new LinkedList<GameObject>();
public void AgregarObjeto(GameObject obj) {
objetosActivos.AddLast(obj);
}
public void EliminarObjeto(GameObject obj) {
objetosActivos.Remove(obj);
Destroy(obj);
}
}Una pila es una estructura de datos que sigue el principio LIFO (Last In, First Out), lo que significa que el último elemento agregado es el primero en ser eliminado. Se puede imaginar como una pila de platos donde solo se puede agregar o retirar elementos desde la parte superior.
class Pila {
private List<int> elementos = new List<int>();
public void Push(int valor) {
elementos.Add(valor);
}
public int Pop() {
if (elementos.Count == 0) throw new InvalidOperationException("La pila está vacía");
int valor = elementos[elementos.Count - 1];
elementos.RemoveAt(elementos.Count - 1);
return valor;
}
}using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HistorialAcciones : MonoBehaviour {
private Stack<string> acciones = new Stack<string>();
public void RealizarAccion(string accion) {
acciones.Push(accion);
Debug.Log("Acción realizada: " + accion);
}
public void DeshacerAccion() {
if (acciones.Count > 0) {
string accionDeshecha = acciones.Pop();
Debug.Log("Acción deshecha: " + accionDeshecha);
}
}
}Una cola es una estructura de datos que sigue el principio FIFO (First In, First Out), lo que significa que el primer elemento en ingresar es el primero en salir. Se puede imaginar como una fila en una tienda donde el primer cliente en llegar es el primero en ser atendido.
using System.Collections.Generic;
using UnityEngine;
public class SistemaTurnos : MonoBehaviour {
private Queue<string> colaTurnos = new Queue<string>();
void Start() {
colaTurnos.Enqueue("Jugador 1");
colaTurnos.Enqueue("Enemigo 1");
colaTurnos.Enqueue("Jugador 2");
}
public void SiguienteTurno() {
if (colaTurnos.Count > 0) {
string turnoActual = colaTurnos.Dequeue();
Debug.Log("Es el turno de: " + turnoActual);
colaTurnos.Enqueue(turnoActual); // Vuelve a agregar al final
}
}
}Un árbol es una estructura de datos jerárquica donde cada elemento, llamado nodo, tiene un valor y referencias a otros nodos, llamados hijos. El primer nodo del árbol se llama raíz.
Imagina un árbol genealógico donde cada persona puede tener varios hijos. Así funcionan los árboles en informática.
En Unity, los árboles pueden utilizarse para gestionar sistemas de diálogo donde una pregunta puede tener múltiples respuestas.
Un grafo es una colección de nodos conectados mediante aristas. Se usa para modelar relaciones complejas, como mapas de juegos o redes de conexiones.
En Unity, los grafos pueden representar rutas en un mapa para la inteligencia artificial.
Las estructuras de datos como árboles y grafos permiten modelar escenarios complejos en videojuegos.
En Unity, ayudan a gestionar sistemas como diálogos, inteligencia artificial y navegación de personajes, mejorando el rendimiento y la organización del código en el desarrollo de videojuegos.