Curso programación de videojuegos - Leccion 01

 

Curso se Programación de VideoJuegos en PureBasic
Lección 01: Estructura básica de un programa de videojuego

La diferencia principal entre un programa convencional y un videojuego se basa en que en un programa tradicional el software espera la intervención del usuario para seguir los trazos de ejecución programados para cada evento.

En un videojuego, si bien se espera la intervención del usuario, hay muchos eventos que se producen y que deben tenerse en cuenta, así como procesos que corren y que determinan que el programa refresque datos permanentemente y controle resultados.

El programa debe controlar movimientos de enemigos, trayectorias, procesos, actualizar la información de las interfaces, etc. Muchos videojuegos tienen numerosas rutinas de ejecución automáticas además de las acciones que decide el operador humano.

En lo primero que vamos a pensar, es en el FLUJO DE UN PROGRAMA.

Sin entrar en demasiados detalles clásicamente existen dos tipos de flujo que permiten ejecutar las  instrucciones individualmente:

Los programas de ejecución lineal. Aclaremos que en realidad, en lenguaje máquina todos los programas son de ejecución linea por línea y que la omisión, el salto y la búsqueda de subrutinas y funciones son en realidad saltos controlados por eventos o variables. Pero ahora nos referimos al alto nivel de un lenguaje.

En el alto nivel, los viejos programas DOS los programas CONSOLA permiten iniciar el programa declarando funciones, rutinas variables y constantes para luego comenzar comienzan la ejecución del código instrucción por instrucción hasta terminar en la instrucción final para terminar saliendo del programa al sistema operativo.

En el medio del principio y fin, contamos con instrucciones, llamadas a funciones y subrutinas pero finalmente se llega al final.


Para evitar llegar al final, se requiere que el programador establezca instrucciones repetitivas para crear un bucle infinito pero con salida controlada para que el usuario pueda terminar o para que un evento culmine con la ejecución. En caso de no hacerlo, la ejecución del programa se hace lineal y culmina con un programa que se cierra y devuelve el control al sistema operativo que lo ejecuta.

Adicionalmente el bucle implementado debe controlar eventos para poder generar las respuestas adecuadas (selecciones del usuario, captura de errores, imprevistos, bots, enemigos, etc).

Este tipo de estructuras y flujos venían bien en entornos unitareas en donde el CPU trabajaba con un programa por vez y esta era la estructura más elegida por los primeros compiladores. Los programas podían ser lineales o incorporaban bucles de ejecución a la espera de las decisiones del usuario.

Pero cuando apareció Windows y los entornos visuales (Linux, MacOS, etc), se hizo necesario crear estructuras de soporte porque los entornos y sistemas operativos comenzaron a trabajar de un modo diferente para permitir la ejecución multi-hilo y la apertura de varias ventanas de programas que se ejecutaban simultáneamente.

En un entorno visual (GUI) la ejecución de tareas se realiza de un modo diferente porque los programas se ejecutan en bucles infinitos y se requiere que por cada aplicación se abra un proceso que debe ser controlado por el bucle sin fin del propio sistema operativo.

Es entonces que los programas incorporan en algunos lenguajes el bucle MAIN (o equivalente), que deberá ser vinculado al bucle main del propio sistema operativo en el que se ejecute el programa.

En el caso de nuestro curso, en el que usaremos el lenguaje PureBasic, este bucle estará representado por la estructura REPEAT/UNTIL que contendrá dentro de sí todas las rutinas prioritarias que se deberán ejecutar durante el videojuego.

En el caso del lenguaje PureBasic, un programa tiene un comportamiento lineal semejante a los programas DOS. Se ejecuta linealmente hasta terminar.

Para evitar que termine, el programador debe implementar el bucle REPEAT para iniciar un bucle que debe controlarse mediante la captura de diferentes EVENTOS.

El primer programa que vamos a construir ahora comienza por un bloque de instrucciones iniciales en el que se deben declarar las enumeraciones, algunas variables clave, generar la ventanas y controles y agregar la detección de teclas mediante las instrucciones AddKeyboardShortcut.


; bloque de enumeracion
Enumeration
  ;xxxxxx
EndEnumeration

; variables

ks.l=0 ; ks = keyboard shortcut
#FLAGS =  #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget |

#PB_Window_MaximizeGadget

; generación de ventana y controles principales
OpenWindow(#Ventana_Principal, x, y, 450, 300, "Base de Juego", #FLAGS) ; ventana principal
TextGadget(#CAPTURA, 40, 40, 140, 25, "Tecla........") ; label que indicara que te cla se presionó

AddKeyboardShortcut(#Ventana_Principal,#PB_Shortcut_Left, 101)
AddKeyboardShortcut(#Ventana_Principal,#PB_Shortcut_Up, 102)
AddKeyboardShortcut(#Ventana_Principal,#PB_Shortcut_Right, 103)
AddKeyboardShortcut(#Ventana_Principal,#PB_Shortcut_Down, 104)
AddKeyboardShortcut(#Ventana_Principal,#PB_Shortcut_Escape, 105)

Repeat
   ;estructura de ducle principal
   ;control del sprite
   ;estructura de captura de eventos de tecla presionada
   ;derivación a rutinas según la tecla presionada
    
Until ;repetición hasta que usuario termine el programa con ESCAPE o (X)
 
End ;fin del programa

 
Los eventos son capturados dentro de una estructura REPEAT-UNTIL

Cuando una tecla es capturada, el programa ejecutará un conjunto de instrucciones específico según la tecla presionada

La idea general del primer programa es

  • Crear un programa básico (esqueleto) para nuestro juego. Luego avanzaremos sobre programas con sprites pero en esta etapa inicial veremos como se trabaja en una estructura mínima que servirá de base a nuestros desarrollos.
  • Permitirle al usuario controlar las teclas de movimiento del cursos para drle la idea de cómo se debe emplear algunas técnicas de programación dentro de PureBasic.
  • Presentar en pantalla una label que indique si la operación de presionar las teclas fue exitosa o hay que re-escribir o corregir errores.


Materiales requeridos para seguir esta leccion:

 

Recursos recomendados:


Por Ricardo Ponce

 

 
Links de Interés:

 
 
Servicio de consultas técnicas gratuito

Servicio Técnico en Sistemas, Redes y CiberSeguridad
Márketing en Internet y Redes Sociales

Su Aula Virtual en Internet
Su Taller en Internet
Su empresa en Internet




Share:

Habilidades blandas en educación (Nota 2)

 

Habilidades Blandas en Educación
Nota 2

Las habilidades blandas son todas aquellas habilidades "no técnicas" que son importantes para el éxito de las personas en el mundo laboral y personal. Estas habilidades incluyen la proactividad, la comunicación, el trabajo en equipo, la resolución de problemas y el pensamiento crítico.

En general, si uno presta atención a las opiniones de colegas, cuando recorremos foros educativos, al buscar notas periodísticas, podemos apreciar que los profesores en general mostramos un creciente interés y reconocimiento de la importancia de las habilidades blandas en el mundo laboral y personal.

En los últimos años de carrera, justo antes del egreso de los estudiantes y antes de su incorporación al  mundo del trabajo, muchos profesores tratamos de incorporar actividades y proyectos que fomenten el desarrollo de estas habilidades. Pero no deja de ser una motivación casi estrictamente personal porque no hay exigencias académicas al respecto. Mas bien son "recomendaciones".

Hay varias razones por las que los programas académicos actuales no incluyen específicamente la transmisión de habilidades blandas.

Una razón es que las habilidades blandas son difíciles de medir. A diferencia de las habilidades técnicas, que se pueden evaluar mediante exámenes o pruebas objetivas, las habilidades blandas son más subjetivas y requieren una evaluación más compleja. Esto puede terminar impidiendo que se desarrollen programas de estudio que se centren en las habilidades blandas.

En muchos países, especialmente los subdesarrollados, los programas de estudio están envejecidos y cuentan con una gran cantidad de temas que podrían ser eliminados fácilmente sin afectar la calidad de los contenidos técnicos requeridos por los egresados.

Esta adecuación de contenidos, en términos generales, tiene una prioridad relevante en los países cuyos adelantos tecnológicos van de la mano con programas formativos de calidad y que evitan las carreras maratónicas que insumen 5, 6 o 7 años a los estudiantes.

¿Es la cantidad de años de una carrera indicio de calidad de contenidos? Creo que absolutamente no. En un mundo que avanza a pasos agigantados, someter a un plan de estudios de más de 4 años a los estudiantes es permitir el egreso de los mismos al mundo laboral con conocimientos envejecidos, en algunos casos, obsoletos y definitivamente insuficientes.

Lo podemos ver con el auge de los post-títulos, las especializaciones, los masters y en el área técnica sobre todo, con los boot camps y las famosas certificaciones tecnológicas.

De alguna manera las habilidades blandas a menudo se han considerado menos importantes que las habilidades técnicas. Sobre todo en los ambientes políticos, en donde la mediocridad y la obsecuencia reinan y la incompetencia parece ser la condición primaria para terminar detentando un cargo cargo político como ministro o subsecretario.

Es cierto que en el pasado, el éxito en el mundo laboral se basaba en gran medida en las habilidades  técnicas. Sin embargo, en el mundo actual, las habilidades blandas son cada vez más importantes para el éxito en el trabajo.

En algunos países el desfasaje entre los contenidos formativos y el mundo laboral se hace tan evidente que las notas universitarias son consideradas un indicio de la capacidad de aprendizaje del postulante. Y son las propias empresas las que priorizan la formación del postulante, asumiendo la responsabilidad de capacitar al recién ingresado.

Los centros de formación laboral, profesional y las casas de estudio deberían comenzar a jerarquizar el desarrollo de habilidades blandas por varias razones:

La acumulación de tecnologías asociadas en algunas áreas laborales hace imposible en la práctica tener  profesionales capacitados especialmente en cada una de ellas. El surgimiento del trabajo colaborativo ha llegado para quedarse, sobre todo en empresas tecnológicas. Y esta colaboración requiere que las personas puedan comunicarse y trabajar eficazmente con sus pares.

Las habilidades blandas son importantes para el desarrollo personal al ayudar a los trabajadores a establecer relaciones positivas, resolver problemas y alcanzar sus objetivos.

A diferencia de algunos tipos de conocimiento técnico, las habilidades blandas son transferibles y pueden ser aplicadas en una amplia gama de situaciones. Esto significa que pueden ser utilizadas en diferentes entornos y puestos de trabajo.

El desarrollo de habilidades blandas es una inversión en el futuro de nuestros estudiantes. Al centrarse en su desarrollo, los profesores podemos contribuir con ellos y ayudarles en su preparación para ser resilientes en un mundo laboral y tecnológicamente más exigente que en el siglo pasado.

Imagen del encabezado obtenida de FreePik

Notas relacionadas:

 

Por Ricardo Ponce

 

 
Links de Interés:

 
 
Servicio de consultas técnicas gratuito

Servicio Técnico en Sistemas, Redes y CiberSeguridad
Márketing en Internet y Redes Sociales

Su Aula Virtual en Internet
Su Taller en Internet
Su empresa en Internet

Share:

Buscar

Popular

Vistas de página en total