TECNICAS DE DOCUMENTACION
jueves, 20 de julio de 2017
martes, 18 de julio de 2017
PROGRAMACIÓN DE VIDEOJUEGOS
DEFINICION Y TIPOS DE VIDEOJUEGOS
Es una aplicación
interactiva orientada al entretenimiento que, a través de ciertos mandos o
controles, permite simular experiencias en la pantalla de un televisor, una
computadora u otro dispositivo electrónico.
Los videojuegos pueden ser
muy distintos entre sí, tanto en complejidad como en calidad gráfica y en
temática. Veamos a continuación algunos de los géneros principales:
Plataformas: se trata de una experiencia que gira en torno a
desafíos de tipo físico, que exigen un gran nivel de precisión por parte de los
jugadores para avanzar a través de complejas estructuras, generalmente
enfrentándose a diversos enemigos.
De disparos: un género amplio, al cual pertenecen tanto
algunos títulos de guerra como de naves espaciales.
De aventuras: son juegos en los cuales la historia es la
protagonista. Deben ser construidos en base a una rica narrativa, que atrape
poco a poco al jugador en el mundo virtual, y le transmita la necesidad de
resolver una serie de misterios.
De rol: suelen confundirse con los juegos de aventuras pero, a
diferencia de estos últimos, su foco son los personajes y su evolución a lo
largo de la historia. Este género es especialmente popular en Japón, aunque
existen muchas comunidades de jugadores de rol en todas partes del mundo.
Deportes: Si bien su nombre parece decirlo todo, existe una línea muy
delgada entre este género y el de simulación. Estos dos, a su vez, están
emparentados con el género de acción; todo depende del grado de realismo de la
experiencia y del tipo de interacción que se espere del jugador, entre otros
factores.
AREAS DE DESARROLLO DE VIDEOJUEGOS
Programación del motor: Son los encargados de implementar la base sobre
la que se sustenta el videojuego. Comunicación con el sistema operativo,
gestión de memoria, gestión de cadenas, gestión de recursos, etc. Son
necesarios grandes conocimiento de la plataforma para la que se programa,
algoritmia y complejidad, opimización y gestión a bajo nivel.
Programación gráfica: Su misión es lidiar con los diferentes apis
gráficas como DirectX y OpenGL. Conocimienos de dichas apis, y matemáticas
sobre todo álgebra y geometría.
Programación de física: Se encarga de emular los comportamientos físicos
del videojuego. Conocimientos de matemática vectorial y física dinámica y
mecánica.
Programación de inteligencia artificial: Es la encargada de hacer
nuestros enemigos (o nuestros aliados) inteligentes. Conocimientos de lenguajes
de script, matemáticas y algoritmos de IA como pathfinding, máquinas de estados
finitos o redes neuronales.
Programación de red: Se encarga de la parte multijugador, servidores y
todo lo que sea conectar una máquina con otra.
Programación de Gameplay: El equipo que se encarga de programar la
lógica del juego, sus reglas. Conocimientos de lenguajes de script y uso de las
partes desarrolladas por los otros equipos.
LENGUAJES PARA PROGRAMAR VIDEOJUEGOS
Lenguajes de programación de videojuegos web
A pesar de que la
mayoría de los juegos de Facebook siguen usando Flash, el futuro está en el
JavaScript.
El problema de Flash es
que Adobe ya no dará soporte a dispositivos móviles y recientemente anunció que
no desarrollará ActionScript 4, por lo que aprenderlo tiene cada vez menos
sentido.
Para comenzar podéis
leer el clásico, JavaScript: The Good Parts, de Douglas Crockford (2008).
Lenguajes de programación de videojuegos para PC o consolas
Deberás empezar
programando en lenguaje C#. Es un buen lenguaje para que te inicies en la
programación de videojuegos, existen librerías y frameworks muy maduros que te
facilitarán el aprendizaje.
Hay mucha gente que
recomienda que aprendas C++, pero no te será necesario salvo que te
especialices en el desarrollo de motores de gráficos o motores de inteligencia
artificial.
Lenguajes de Programación de juegos para móviles
Para crear juegos para
smartphones Android el lenguaje rey es el Java, por encima del Python.
Si tu trabajo se va a
centrar más en dispositivos que tienen incorporado el sistema Windows, entonces
en lenguaje escogido será el C#, estándar de Microsoft.
Por último, en los
iPhones e iPads y su iOS, tendremos que programar en Objective-C o Swift, el
futuro para la casa de la manzana mordida.
OTROS
EJEMPLOS DE LENGUAJES
C: SDL
C++:
SFML
C#: XNA
/ MonoGame
Python:
PyGame
Java:
libgdx, spiller
Ruby:
Gosu
Flash:
Flixel
Lua:
Love2D
ESTRUCTURA DE BASE DATOS
Es un
sistema que almacena datos que están relacionados. Es un repositorio en donde
guardamos información integrada que podemos almacenar y recuperar. Un conjunto
de información almacenada en memoria auxiliar que permite acceso directo y un
conjunto de programas que manipulan esos datos
* MySQL
* XML
* SQL
* XML
* SQL
APIS GRAFICAS
DirectX
DirectX esta compuesto de
7 componentes: DirectGraphics (incluye 3D y 2D), DirectInput, DirectSound,
DirectPlay, DirectShow, DirectMusic. Y ha venido ganando mucha popularidad en
los últimos años entre los programadores de videojuegos, en especial desde que
Microsoft comenzó a mejorar la parte de Direct3D haciéndolo más amigable y
eficiente, y se ha vuelto una seria competencia para OpenGL. Sin embargo, Algunos
juegos programados usando DirecX son "Age of Empires", "Close
Combat" y "Flight Simulator", además de todos los juegos para el
Xbox. Microsoft desveló en la Game Developer´s Conference que su proyecto XNA
consistirá en un Visual Studio en versión para el desarrollo de videojuegos.
VENTAJA.
Una de sus principales
ventajas es que no está hecho solamente para la parte gráfica, sino que puede
manejar toda la multimedia de la computadora como sonidos, música, dispositivos
de Entrada/Salida como teclado, joystick, y varias otras cosas más.
DESVENTAJA.
DirectX tiene una gran
desventaja: no es portable, es decir, una vez terminado de programar el juego
estará condenado a trabajar solamente en Windows, y cuando se quiera convertir
para que correrá en otras computadoras que usen Mac, Linux, o consolas, hay que
hacerle muchos cambios al código.
OpenGL
Librería Grafica Abierta:
Creado por Silicon Graphics en 1992, es el principal ambiente de programación
para desarrollar aplicaciones gráficas que existe. Es multiplataforma (habiendo
incluso un openGL para móviles). Esta diseñado para usarse en una gran variedad
de sistemas operativos sin tener que modificarlo o modificándolo muy poco, esto
significar una gran ventaja para cualquier desarrollador al abarcar el mayor
mercado posible. Además su arquitectura fue pensada para poder evolucionar
conforme avanza el tiempo, de modo que pueda adaptarse con facilidad a las
novedades que van surgiendo en la industria.
Desde que apareció, OpenGL
ha sido un ambiente de programación estable y confiable, y quizás la razón por
la que es más conocido es porque fue la primera en ofrecer la posibilidad de
desarrollar aplicaciones 3D; fue precisamente con OpenGL que se hicieron los
primeros juegos 3D como Wolfenstain y Doom, hoy también es muy usado en juegos
como Quake y muchos más.
LIBRERIAS DE VIDEOJUEGOS
Actionscript. Esta es una lista de librerías para desarrollar
juegos, la iré modificando para incluir más librerías. Ustedes mismos sugieran
sus librerías favoritas en este hilo para incluirlas:
Allegro: Librería en C altamente portable a muchas plataformas que
incluye rutinas básicas de videojuegos: gráficos 2D, matemática 3D, sonido y
controles.
SDL:
Simple DirectMedia Layer está hecho en C y es una librería madura utilizada en
grandes proyectos. Loki, una empresa que estuve a principios de 2000 portando
juegos a Linux utilizó esta librería para esta tarea.
OGRE: Es una librería open source para hacer gráficos 3D.
Crystal Space: Crystal
Space es una librería open source para hacer gráficos 3D en tiempo real. Fue la
librería utilizada para hacer Yo Frankie, o también conocido como Project
Apricot.
ODE:
Open Dynamics Engine (ODE) es una librería en C++ que facilita la
implementación de fenómenos físicos en tu juego. Es la librería que se utilizó
para implementar la física de World of Goo.
ClanLib: ClanLib Game SDK es una biblioteca de herramientas
multiplataforma cuyo principal enfoque se encuentra en la creación de juegos de
video. La misma es de código abierto y gratuito para uso comercial, bajo la
licencia ClanLib.
Python
Panda3D: Panda3D es una
librería open source implementada en Python y C++ por la gente del
Entertainment Technology Center, en la Universidad Carnegie-Mellon. Disney
utilizó esta librería para hacer el juego online de Pirates of the Caribbean
ENTORNOS PARA PROGRAMACION DE VIDEOJUEGOS
Unreal Engine
Antiguamente, este entorno de desarrollo venía con los propios juegos creados en este editor cuando este salía al mercado, de este modo el jugador que quisiera podría editar los contenidos del juego e incluso los escenarios y crear nuevos modos de juego.
Pero se cambió el modelo de negocio de y ahora se puede descargar de forma gratuita, con el añadido que si tu juego supera los 3.000 dolares de beneficios, a partir de ese momento Unreal se llevaría un porcentaje de los beneficios.
El entorno se parece mucho al de Unity 3D, permitiéndonos agregar formas geométricas al escenario y que después tengan sus texturas, interacciones… Sin lugar a dudas un gran competidor para Unity 3D y muy útil para los desarrolladores y creadores de juegos.
GDevelop
Es un programa de creación de videojuegos en 2D de código libre. Con este entorno podremos crear juegos para Windows, Linux e incluso para la web utilizando HTML5.
Al igual que Stencyl, cuenta con una interfaz drag and drop facil de utilizar. En su web podemos encontrar muchos ejemplos y tutoriales para aprender a utilizar esta herramienta perfectamente y de este modo empezar con el proceso de creación.
Lo que hace a GDevelop único y tan sencillo de utilizar son los eventos, ya que estos utilizan una forma de expresar la lógica de nuestro juego sin tener que aprender un lenguaje de programación a fondo.
Unity 3D
Considerada por muchos la mejor herramienta para crear y diseñar un videojuego. Con Unity 3D podremos sacar versiones de nuestro futuro videojuego para Xbox, PC, Linux, HTML5, iOS, Android, Play Station, BlackBerry, Samsung TV y una de las características que lo hace realmente potente es la integración del lenguaje C#.
Este entorno de desarrollo tiene tiene motor de diseño de juegos 3D y otro diferente para juegos 2D. Por último recalcar que dispondremos de una librería muy extensa con documentación con la que poder empezar a aprender cómo iniciarnos en el proceso de creación de un juego básico.
Stencyl
Este software se llamaba
originalmente StencylWorks, mientras que en el desarrollo de las últimas
versiones para el público se decidió que el nombre se debería acortar llagando
a llamarse Stencyl.
Stencyl es una plataforma de
creación de videojuegos en 2D. Esta plataforma nos permite crear videojuegos
desde Linux, OS X y Windows para varias plataformas como iPhone, iPad, Android,
Windows, macOS y Linux.
El método de empleo se basa
en el Drag and Drop mediante diferentes bloques con distintas
funcionalidades. Sin embargo, para aquellos usuarios más avanzados, también
tiene la opción de extender las funcionalidades a través de código.
PyGame
Para finalizar este apartado
vamos a presentaros PyGame, el entorno de desarrollo de juegos en Pyton.
Tiene una estética muy retro pero sin embargo sus módulos son muy potentes.
Lo cierto es que es perfecto
para empezar a programar videojuegos y aprender cómo funcionan las
diferentes variables y pantallas. Con PyGame encontraremos más programación que
en los anteriores ya que es un requisito indispensable para desarrollar
videojuegos.
También puede utilizarse
para crear otros programas multimedia o interfaces gráficas de usuario. Herramientas y entornos para
avanzados
CryEngine 3
Seguro que os suena este nombre.
Esto es porque es el entorno en el que se han creado los juegos de la saga
Crysis. Con este editor podremos desarrollar juegos para las plataformas más
importantes del mundo incluyendo las consolas.
Tiene muchas herramientas para el
desarrollo del juego que van desde el sistema de Scripting Visual a la
posibilidad de editar pistas de audio y vídeo para el juego. CryEngine es
para uso personal y no comercial, pero si nuestro proyecto prospera, podremos
adquirir por Steam una licencia de 9 dólares al mes.
miércoles, 12 de julio de 2017
TESTER
PRUEBAS DE SOFTWARE "TESTING"
También
conocidas como (Testing).- son los procesos que permiten verificar y revelar la
calidad de un producto software. Son utilizadas para identificar posibles
fallos de implementación, calidad, o usabilidad de un programa de ordenador o
videojuego. Básicamente es una fase en el desarrollo de software consistente en
probar las aplicaciones construidas.
Para
determinar el nivel de calidad se deben efectuar unas medidas o pruebas que
permitan comprobar el grado de cumplimiento respecto de las especificaciones
iniciales del sistema.
TIPOS DE PRUEBAS
PRUEBAS DE VALIDACIÓN
Las
pruebas de validación en la ingeniería de software son el proceso de revisión
que el sistema de software producido cumple con las especificaciones y que cumple
su cometido. Es normalmente una parte del proceso de pruebas de software de un
proyecto, que también utiliza técnicas tales como evaluaciones, inspecciones, y
tutoriales. La validación es el proceso de comprobar lo que se ha especificado
es lo que el usuario realmente quería.
Las
pruebas de validación empiezan tras la culminación de las pruebas de
integración, cuándo se han ejercitado los componentes individuales. Se han
terminado de ensamblar el software como paquete y se ha descubierto y corregido
los errores de interfaz.
Tipos de pruebas de validación
· Pruebas de aceptación:
desarrolladas por el cliente.
· Pruebas alfa realizadas
por el usuario con el desarrollador como observador en un entorno controlado
(simulación de un entorno de producción).
· Pruebas beta: realizadas
por el usuario en su entorno de trabajo y sin
observadores.
Características de las pruebas de validación.
·
Se usan la mismas
técnicas, pero con otro objetivo.
·
No hay programas de
prueba, sino sólo el código final de la aplicación.
·
Se prueba el programa
completo.
·
Uno o varios casos de
prueba por cada requisito o caso de uso especificado.
·
Se prueba también
rendimiento, capacidad, etc.
·
Pruebas alfa
(desarrolladores) y beta (usuarios).
PRUEBAS DE INTEGRACIÓN
Pruebas
integrales o pruebas de integración son aquellas que se realizan en el ámbito
del desarrollo de software una vez que se han aprobado las pruebas unitarias.
Únicamente se refieren a la prueba o pruebas de todos los elementos unitarios
que componen un proceso, hecha en conjunto, de una sola vez.
Consiste
en realizar pruebas para verificar que un gran conjunto de partes de software
funcionan juntos.
Las
pruebas de integración (algunas veces llamadas integración y testeo I&t) es
la fase del testeo de software en la cual módulos individuales de software son
combinados y testeados como un grupo. Son las pruebas posteriores a las pruebas
unitarias y preceden el testeo de sistema.
PRUEBAS FUNCIONALES
Una
prueba funcional es una prueba basada en la ejecución, revisión y
retroalimentación de las funcionalidades previamente diseñadas para el
software. Las pruebas funcionales se hacen mediante el diseño de modelos de
prueba que buscan evaluar cada una de las opciones con las que cuenta el
paquete informático.
Las
pruebas funcionales están desarrolladas bajo la perspectiva del usuario,
confirmando que el sistema hace lo que los usuarios esperan que haga. Un error
funcional en su aplicación puede tener consecuencias catastróficas, desde la
pérdida de credibilidad de sus clientes, hasta grandes pérdidas económicas.
Los
consultores de pruebas funcionales de Testhouse tienen amplia experiencia en
multitud de mercados a nivel global, adaptándose a todo tipo de metodologías de
desarrollo y habiendo realizado pruebas funcionales en aplicaciones críticas de
empresas líderes en el sector de finanzas, telecomunicaciones y media, entre
otros.
PRUEBAS DE RECORRIDO
Incluye
indagación y observación del flujo de transacciones dentro de procesos
representativos desde el punto en que las transacciones son iniciadas hasta el
punto en el que son reportadas en el mayor general. Recorremos los controles
que hemos identificado para determinar que han sido diseñados e implantados
eficazmente. El recorrido incluye el examen de los flujos de la documentación e
información desde una perspectiva tanto manual como automatizada. Su objetivo
es confirmar nuestra comprensión del flujo de las transacciones
representativas, la exactitud de la información que hemos obtenido acerca de
los controles preventivos y/o de detección relevantes sobre el flujo de
transacciones, si los controles han sido diseñados eficazmente para prevenir o
detectar y corregir aseveraciones equívocas materiales en forma oportuna, si lo
los controles han sido implantados y la idoneidad de nuestra documentación.
PRUEBA UNITARIA
En
programación, una prueba unitaria es una forma de probar el correcto
funcionamiento de un módulo de código. Esto sirve para asegurar que cada uno de
los módulos funcione correctamente por separado. Luego, con las pruebas de
integración, se podrá asegurar el correcto funcionamiento del sistema o
subsistema en cuestión.
La idea
es escribir casos de prueba para cada función no trivial o método en el módulo
de forma que cada caso sea independiente del resto.
Característica de la prueba unitaria.
·Automatizable: no debería
requerirse una intervención manual. Esto es especialmente útil para integración
continúa
· Completas: deben cubrir la
mayor cantidad de código.
· Repetibles o
Reutilizables: no se deben crear pruebas que sólo puedan ser ejecutadas una
sola vez. También es útil para integración continua.
· Independientes: la
ejecución de una prueba no debe afectar a la ejecución de
otra.
· Profesionales: las pruebas
deben ser consideradas igual que el código, con la misma profesionalidad,
documentación, etc.
· Aunque estos requisitos no
tienen que ser cumplidos al pie de la letra, se recomienda seguirlos o de lo
contrario las pruebas pierden parte de su función.
PRUEBAS DE CAJA BLANCA.
Son
realizadas directamente en el código y normalmente son hechos por el
programador del software, un ejemplo de este tipo de prueba es la prueba de
unidad (unit testing). Sin embargo, las pruebas de caja negra son hechos de
manera funcional, donde el probador no tiene contacto directo con el código del
programa, así lo programa es tenido como una caja negra donde al pasar valores
de entrada para esta caja y ella retorna valores de salida. Muchas veces estos
tipos de pruebas son hechos por un equipo específico de probadores, los cuales
utilizan la especificación de requisitos del cliente para crear un plan de
casos de prueba.
PRUEBAS DE REGRESIÓN
Se
denominan Pruebas de regresión a cualquier tipo de pruebas de software que
intentan descubrir las causas de nuevos errores (Bugs), carencias de
funcionalidad, o divergencias funcionales con respecto al comportamiento
esperado del software, inducidos por cambios recientemente realizados en partes
de la aplicación que anteriormente al citado cambio no eran propensas a este
tipo de error. Esto implica que el error tratado se reproduce como consecuencia
inesperada del citado cambio en el programa.
Este
tipo de cambio puede ser debido a prácticas no adecuadas de control de
versiones, falta de consideración acerca del ámbito o contexto de producción
final y extensibilidad del error que fue corregido (fragilidad de la
corrección), o simplemente una consecuencia del rediseño de la aplicación.
Por lo
tanto, en la mayoría de las situaciones del desarrollo de software se considera
una buena práctica que cuando se localiza y corrige un bug, se grabe una prueba
que exponga el bug y se vuelvan a probar regularmente después de los cambios
subsiguientes que experimente el programa.
Existen
herramientas de software que permiten detectar este tipo de errores de manera
parcial o totalmente automatizada, la práctica habitual en programación extrema
es que este tipo de pruebas se ejecuten en cada uno de los pasos del ciclo de
vida del desarrollo del software.
Tipos de regresión
Clasificación
de ámbito
·
Local - los cambios
introducen nuevos errores.
·
Desenmascarada - los
cambios revelan errores previos.
· Remota - Los cambios
vinculan algunas partes del programa (módulo) e introducen errores en ella.
Clasificación
temporal
· Nueva característica - los
cambios realizados con respecto a nuevas funcionalidades en la versión
introducen errores en otras novedades en la misma versión del software.
· Característica
preexistente - los cambios realizados con respecto a nuevas funcionalidades
introducen errores en funcionalidad existente de previas versiones.
PRUEBAS DE PRESTACIONES
A veces
es importante el tiempo de respuesta, u otros parámetros de gasto. Típicamente
nos puede preocupar cuánto tiempo le lleva al sistema procesar tantos datos, o
cuánta memoria consume, o cuánto espacio en disco utiliza, o cuántos datos
transfiere por un canal de comunicaciones, o Para todos estos parámetros suele
ser importante conocer cómo evolucionan al variar la dimensión del problema
(por ejemplo, al duplicarse el volumen de datos de entrada).
PRUEBAS DE SISTEMA
Al
final del desarrollo del software se incorpora otros elementos (hardware,
personas, información) y se realiza una serie de pruebas de integración del
sistema y de validación.
Estas
pruebas están más allá del proceso del software y no las realizan únicamente
los ingenieros del software. Sin embargo los pasos dados durante el diseño y la
prueba mejoraran en gran medida la probabilidad de tener éxito y la integración
del software del sistema mayor.
El
software ya validado se integra con el resto del sistema donde algunos
Tipos
de pruebas a considerar son:
Rendimiento: determinan los tiempos de respuesta, el espacio que ocupa el
módulo en disco o en memoria, el flujo de datos que genera a través de un canal
de comunicaciones, etc.
Resistencia: determinan hasta donde puede soportar el programa
determinadas condiciones extremas.
Robustez:
determinan la capacidad del programa para soportar entradas incorrectas.
Seguridad:
se determinan los niveles de permiso de usuarios, las operaciones de acceso al
sistema y acceso a datos la prueba comprueba que los mecanismos de protección
integrados en el sistema realmente lo protejan de irrupciones inapropiadas
Usabilidad:
se determina la calidad de la experiencia de un usuario en la forma en la que
éste interactúa con el sistema, se considera la facilidad de uso y el grado de satisfacción
del usuario.
Instalación: se determinan las operaciones de arranque y actualización del
software.
Desempeño:
está diseñada para probar el desempeño del software en tiempo de ejecución en
tiempo de contexto de un sistema integrado. La prueba de desempeño se aplica en
todos los pasos del proceso de la prueba, incluso a nivel de la unidad, el
desempeño de un módulo individual debe evaluarse mientras se realizan las
pruebas.
PRUEBAS DE CAJA NEGRA.
En
teoría de sistemas y física, se denomina caja negra a aquel elemento que es
estudiado desde el punto de vista de las entradas que recibe y las salidas o
respuestas que produce, sin tener en cuenta su funcionamiento interno. En otras
palabras, de una caja negra nos interesará su forma de interactuar con el medio
que le rodea (en ocasiones, otros elementos que también podrían ser cajas negras)
entendiendo qué es lo que hace, pero sin dar importancia a cómo lo hace. Por
tanto, de una caja negra deben estar muy bien definidas sus entradas y salidas,
es decir, su interfaz; en cambio, no se precisa definir ni conocer los detalles
internos de su funcionamiento.
PRUEBAS DE ACEPTACIÓN
Cuando
se construye software a la medida para un cliente, se llevan a cabo una serie
de pruebas de aceptación para permitir que el cliente valide y verifique todos
los requisitos. Estas pruebas las realiza el usuario final en lugar del
responsable del desarrollo del sistema.
martes, 11 de julio de 2017
jueves, 6 de julio de 2017
miércoles, 5 de julio de 2017
martes, 4 de julio de 2017
lunes, 3 de julio de 2017
domingo, 2 de julio de 2017
Suscribirse a:
Entradas (Atom)
Entradas populares
|
|