SonSilentSea, creación de juegos en Blender con Python



Documentos relacionados
Caso práctico de Cuadro de Mando con Tablas Dinámicas

El reto de la Gestión Documental

Conclusiones. Particionado Consciente de los Datos

IES MARXADELLA LABORATORIO DE IMAGEN DIGITAL

Documentación de la Práctica 1 para la asignatura de Nuevas Tecnologías de la Programación (NTP)

MACROS Y FORMULARIOS

LINEAMIENTOS PARA LA ELABORACIÓN DEL PROGRAMA ANUAL DE TRABAJO

Capítulo 1. Introducción

Dando nuestros primeros pasos con 3DS Max. 1. Objetivos

TRABAJO Y ENERGÍA. W = F d [Joule] W = F d cos α. Donde F y d son los módulos de la fuerza y el desplazamiento, y α es el ángulo que forman F y d.

WEB INMOBILIARIA. La página web de su inmobiliaria fácil de gestionar.

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Instituto Tecnológico de Costa Rica

IMPAKTO CONSULTORA EN RECURSOS HUMANOS. Consultora en RRHH enfocada en proyectos de Desarrollo Organizacional,

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Licenciatura en Computación

CUESTIONARIO DE EVALUACIÓN. Nombre de la peluquería: Firma del responsable del salón. Localidad:

Asignaturas antecedentes y subsecuentes

Indice Todos los derechos reservados Advisionario, S.A. de C.V.

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL

MICROSOFT ACCESS 2010

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

CASEN 2013: HISTÓRICA REDUCCIÓN DE LA POBREZA

Respuestas: Consulta para una Estrategia Nacional de Propiedad Industrial

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

DIAGRAMA DE CLASES EN UML

Plan de trabajo para el desarrollo de su sitio web

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

PRÁCTICAS DE GESTIÓN GANADERA:

Capítulo 1. Introducción

Manual de suscripción a fuentes RSS.

Generación de carpetas compartidas, grupos y usuarios en DiskStation Manager

Introducción. Sistemas de Información Geográfica (SIG)

CUESTIONARIO PARA LA EVALUACIÓN DE CURSOS APOYADOS EN TECNOLOGÍAS DE LA INFORMACIÓN Y LA COMUNICACIÓN

CASO PRÁCTICO Nº OBJETIVO 2. TEMAS A DESARROLLAR

Además se recomienda su uso como herramienta de trabajo dentro de las actividades habituales de gestión.

UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS ESCUELA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

Conceptos Básicos. Capítulo Informática

INGRID Gestión geográfica de activos urbanos y mantenimiento

BLOG: PUNTADA A PUNTADA

1.2 Qué es un Sistemas de Información Geográfica?

ORIENTACIONES SIMCE TIC

Manual de OpenOffice Impress

Estudio General sobre Seguridad Vial y Accidentología ligados a la ciudad de Goya

- Dirigido a Centros Docentes- Versión 01-23/03/2010

SESIÓN 6 INTRODUCCIÓN A WORD.

Nueva generación de materiales. Sincronismo video/web

32.- Manejo de Capacitación

Centro de Capacitación en Informática

COPPEL MANUAL TÉCNICO MCC DE SISTEMAS PROGRAMACIÓN DESCRIPCIÓN DEL PROCESO DE ARQUITECTURA DE SOFTWARE

CURSO BASICO DE ESTRELLAS DOBLES. Lección Nº 5: Orbitas de las estrellas binarias

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

VALORACIÓN ACTIVOS. 1. Planificación: (primera pantalla)

ESCUELA SECUNDARIA TÉCNICA 113

ISO14001: disponer de un certificado bajo la versión de 2008 en vigor - superar una auditoria bajo los requisitos de la nueva versión

LOS RETOS DE LA ENSEÑANZA EN LA INGENIERÍA 1

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

INGENIERÍA DE SISTEMAS Y AUTOMÁTICA EN LOS NUEVOS PLANES DE ESTUDIO DE CICLO LARGO

Aire ambiente: No se recogieron muestras en esta comunidad.

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

MICROSOFT ACCESS 2003

Introducción al diseño híbrido con ZW3D

TEMA 1 INTRODUCCIÓN A OPENOFFICE IMPRESS

1. Introducción al evaluación de proyectos

VI. SINDICATOS Y RELACIONES LABORALES

Capítulo 6: Conclusiones

La visualización de la ventana de Word tiene las siguientes partes:

El catálogo y los listados

UN PROBLEMA CON INTERÉS Y CALCULADORA

Es de aplicación a aquellos estudios o situaciones en que es necesario priorizar entre un conjunto de elementos.

ÍNDICE INTRODUCCIÓN LA EVOLUCIÓN DE LA POBREZA DIFUSA MULTIDIMENSIONAL EN MÉXICO,

Lapicero reciclado. Proyecto para el 2 Concurso para Emprendedores, Soluciones para el Futuro

9. CONCLUSIONES. si al iniciarse una obra ingenieril no se cuenta con los elementos (humanos y equipo) ni

MÓDULO CÉDULAS DE AUDITORÍA DESDE EXCEL

Construyendo gráficos estadísticos con ayuda de Microsoft Excel

ISO 17799: La gestión de la seguridad de la información

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Santiago, 18 de enero de 2016

Aplicación informática para la evaluación externa del programa de garantía de calidad de la Organización Nacional de Trasplantes

Diseño y desarrollo de una aplicación informática para la gestión de laboratorios

PoliEstudio: Una herramienta computacional para la enseñanza de la Matemática, en secundaria

MANEJANDO FICHEROS Y CARPETAS

ESCUELA DE ADMINISTRACIÓN

Directrices sobre una definición estadística de empleo en el sector del medio ambiente

Anexos II.A7 Acta de revisión del Sistema de Gestión Medioambiental

[Tutorial Windows Live Movie Maker]

DataMAX pa r a PS3. Manual del Usuario V1.0

Secretaría de Salud. Subsecretaria de Innovación y Calidad. Dirección General de Calidad y Educación en Salud

Microsoft Access 2007 (Completo)

Gestión Documental con Microsoft Office SharePoint Server 2007 (MOSS) Ignacio López - Ingeniero en Informática Software Architect en Alhambra-Eidos

Software de identificación y ubicación mediante GPS para radios digitales MOTOROLA Con Control de rondas y Gestión de control del riesgo

Manual del software para la creación de mapas conceptuales MIND42. Maria José Ciudad Mas

Paso 1 de 13. Paso 2 de 13. Guía de aprendizaje de Flash CS5 Tutorial 3. Creación de un logotipo textual.

El Costeo Directo, una Necesidad para la Toma de Decisiones

CAPITULO VI ESTRATEGIAS DE OUTSOURCING

INTRODUCCIÓN. La influencia de las Tecnologías de la Información y la Comunicación (TIC) en la

INSTRUMENTOS DE CAUDAL

Transcripción:

SonSilentSea, creación de juegos en Blender con Python Jose Luis Cercos-Pita November 22, 2013 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 1 / 35

Tabla de contenidos 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 2 / 35

Contents Introducción 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 3 / 35

Introducción Quién soy yo? Quién soy yo? Ingeniero Naval y Oceánico Doctorando del programa de ingeniería aeroespacial Investigador en el canal de ensayos de la ETSIN Especializado en mecánica de fluidos computacional Desarrollador de software libre FreeCAD ocland SonSilentSea... Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 4 / 35

Qué es SonSilentSea? Introducción Qué es SonSilentSea? https://github.com/sanguinariojoe/sonsilentsea Juego de simulación naval Dedicado a Sonsoles Jiménez Caballero Software libre Desarrollado durante 3 años con C++ y OGRE Ahora se desarrolla en Blender con Python Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 5 / 35

Introducción Qué pretendo contar? Qué pretendo contar? OGRE vs. Blender C++ vs. Python O más concretamente... Diferencias debidas a la familiaridad con el diseño, el lenguaje y el entorno Diferencias debidas a una mejor integración Diferencias debidas a tener un framework Diferencias debidas a los estándares (ligado con la integración) Diferencias debidas al lenguaje (C++ vs. Python) Tratamos de estimar que parte se límita al cambio de lenguaje, pero es difícil de medir: tiempo, esfuerzo, cantidad de información... "3 años en C++ 2 meses en Python" Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 6 / 35

Introducción Qué pretendo contar? Qué pretendo contar? OGRE vs. Blender C++ vs. Python O más concretamente... Diferencias debidas a la familiaridad con el diseño, el lenguaje y el entorno Diferencias debidas a una mejor integración Diferencias debidas a tener un framework Diferencias debidas a los estándares (ligado con la integración) Diferencias debidas al lenguaje (C++ vs. Python) Tratamos de estimar que parte se límita al cambio de lenguaje, pero es difícil de medir: tiempo, esfuerzo, cantidad de información... "3 años en C++ 2 meses en Python" Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 6 / 35

Introducción Qué pretendo contar? Precedentes Usando algunos ejemplos de algoritmos de ordenación... Python Bubble sort: 24 líneas Bitonic sort: 23 líneas Counting sort: 11 líneas Insertion sort: 8 líneas Merge sort: 24 líneas Heap sort: 35 líneas Radix sort: 38 líneas C++ Bubble sort: 33 líneas (x1.4) Bitonic sort: 131 líneas (x5.7) Counting sort: 49 líneas (x4.5) Insertion sort: 9 líneas (x1.1) Merge sort: 58 líneas (x2.4) Heap sort: 53 líneas (x1.5) Radix sort: 90 líneas (x2.4) Con ésta pequeña muestra crear un algoritmo en C++ parece requerir 2.7 ± 1.6 veces más líneas de código Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 7 / 35

Introducción Qué pretendo contar? Diferencias en cuanto a características Blender 20 FPS en el portátil Cámara "isométrica" Sólo visión desde fuera del agua Geometría del mar simplificada por un plano Física más realista No existe necesidad de preocuparse por la atmósfera OGRE Inmanejable en el portátil Cámara libre Completo entorno submarino (Hydrax) Compleja geometría del mar Física pobre Atmósfera realista (SkyX) Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 8 / 35

Contents Desglose de líneas de código 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 9 / 35

Desglose de líneas de código Estructura general Estructura general Blender 7975 líneas de código main Blender OGRE 39211 líneas de código (-1054 líneas) main 112+257+303 líneas frame listener Blender logic frame listener 242+140 líneas input manager Blender logic input manager OIS reading Environment Water plane Environment PSSM + HydraX + SkyX GUI bgui GUI CEGUI Sound Blender internal engine Sound ALSA + OGG Vorbis Entities Player/AI control & ship motions Entities Ship motions Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 10 / 35

Desglose de líneas de código Componentes Input manager Blender (0 líneas) OGRE (-1054-379 líneas) Analizar las entradas por teclado y ratón en C++ requiere generar una clase específica para ello haciendo uso de OIS (el estándar en OGRE hasta la versión 1.8). Header file 204 líneas Source file 175 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 11 / 35

Input manager Desglose de líneas de código Componentes Blender (-98 líneas) OGRE (-1054-379 líneas) Camera inputs 83 líneas Submarine inputs 15 líneas Sin implementar en OGRE Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 12 / 35

Desglose de líneas de código Componentes Environment (Parallel-Split Shadow Maps) Crucial para obtener sombras de calidad. Crítico en función de la distancia mínima de corte: n x v 0 0 0 r x y v z v = n 0 0 0 h 0 0 f +n 2fn y z, f n f n w v 0 0 1 0 w Resultando la profundidad del punto en pantalla como: z s = zv = 2 fn w w v f n z + f + n ( ) 1 f n = O z Blender (-98 líneas) OGRE (-1054-379-159 líneas) Header file 40 líneas Implementado internamente en el motor de Blender. Source file 119 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 13 / 35

Desglose de líneas de código Componentes Environment (Parallel-Split Shadow Maps) Crucial para obtener sombras de calidad. Crítico en función de la distancia mínima de corte: n x v 0 0 0 r x y v z v = n 0 0 0 h 0 0 f +n 2fn y z, f n f n w v 0 0 1 0 w Resultando la profundidad del punto en pantalla como: z s = zv = 2 fn w w v f n z + f + n ( ) 1 f n = O z Blender (-98 líneas) OGRE (-1054-379-159 líneas) Header file 40 líneas Implementado internamente en el motor de Blender. Source file 119 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 13 / 35

Environment (Atmósfera) Desglose de líneas de código Componentes Blender (-98 líneas) La cámara no permite apreciar la atmósfera, y por tanto no ha sido implementada. OGRE (-1054-379-159-11877 líneas) SkyX 11877 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 14 / 35

Environment (Océano) Blender (-98-38 líneas) Desglose de líneas de código Componentes OGRE (-1054-379-159-11877-8220 líneas) Plano que sigue a la cámara 38 líneas Geometría compleja 121+159+193+229+277+452+667+842 líneas Olas creadas internamente en el shader 0 líneas Olas generadas sobre la geometría 65+97+112+133+135+152+186+194+272+282+589+800 líneas Sin entorno submarino 0 líneas Entorno submarino 43+ 75+335+ 190+ 255+915+ 450 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 15 / 35

GUI Desglose de líneas de código Componentes Blender (-98-38-2500 líneas) OGRE (-1054-379-159-11877-8220 líneas) bgui tool 2500 líneas CEGUI 0 líneas Código para manejar las ventanas 362 líneas (que cuentan para comparar) Código para manejar las ventanas 1895 líneas (que cuentan para comparar) Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 16 / 35

Sonidos Desglose de líneas de código Componentes Blender (-98-38-2500 líneas) OGRE (-1054-379-159-11877-8220-1880 líneas) Gestor de sonidos interno de Blender 0 líneas Gestor de sonidos & streamer 1880 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 17 / 35

Entidades Desglose de líneas de código Componentes Blender (-98-38-2500-2206-388 líneas) OGRE (-1054-379-159-11877-8220-1880-592 líneas) Gestor de partículas adaptado de easyemit 2206 líneas Gestor de Partículas asistido por OGRE 592 líneas Contol del jugador / inteligencia artificial 138+194+56 líneas Sin control implementado 0 líneas Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 18 / 35

Contents 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 19 / 35

Resultado Resultado del experimento Blender 2745 líneas de código comparables OGRE 15050 líneas de código comparables Según la estimación (en la que he tratado de restringir al máximo los efectos al cambio de lenguaje de programación) el código en C++ parece requerir 5.5 veces más líneas de código que una implementación en Python. La medida queda fuera del valor que obtuvimos muestreando algunos algoritmos de ordenación (2.7 ± 1.6). Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 20 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Existe una gran cantidad de información y comparaciones fiables sobre la velocidad de códigos implementados en ambos lenguajes. Existen estimaciones del número de errores que se cometen en cada lenguaje por línea de código escrita (0.69 vs. 0.005 bugs per KLOC). No parecen existir estudios serios acerca de la diferencia de esfuerzo en el desarrollo dependiendo del lenguaje empleado. Por ejemplo, si en C++ se requiren 10 líneas más de código que en Python para llevar a cabo la misma tarea, el índice de errores estará artificialmente incrementado un orden de magnitud. Se ha tratado de estimar la influencia del lenguaje de programación en una aplicación compleja, usando como indicador el número de líneas de código. Para ello se ha tratado de eliminar todo elemento no comparable. Ambas aplicaciones son demasiado diferentes, así que el resultado no debe considerarse una buena medida. Tal y como se podía esperar en C++ se ha obtenido un incremento significativo de las líneas de código necesarias. Tampoco se ha abordado la dependencia con el ámbito de aplicación. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 21 / 35

Contents Preguntas 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 22 / 35

Preguntas Preguntas Preguntas? Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 23 / 35

Contents Demostración 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 24 / 35

Demostración Demostración Demo Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 25 / 35

Creando la física Demostración Física Partimos de: 1 Un objeto poco detallado para manejar la física. 2 Dos objetos detallados sin propiedades físicas. Estos objetos tan sólo estarán ligados al objeto físico que será invisible. Acciones a tomar: 1 Retiramos la física a los dos objetos visuales. 2 Establecemos el controlador físico como dinámico: 1 m = 4.6ton 2 r = 1.3m 3 r factor = 1 También eliminamos todos los efectos disipativos. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 26 / 35

Demostración Física implementada out of the box Física El objeto ahora tiene la física implementada de serie, y por tanto si empezamos la simulación el objeto caerá irremediablemente. Queremos por tanto implementar los efectos del agua. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 27 / 35

Flotabilidad (hidrostática) Demostración Hidrodinámica = ρ = Desplazamiento (peso del objeto) ρ = Densidad del agua = Volumen de agua desplazada = π 3 (R z)2 (2R + z) R = Radio de la esfera z = Altura del centro de la esfera con respecto de la superficie libre Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 28 / 35

Flotabilidad (hidrostática) Demostración Hidrodinámica = ρ = Desplazamiento (peso del objeto) ρ = Densidad del agua = Volumen de agua desplazada = π 3 (R z)2 (2R + z) R = Radio de la esfera z = Altura del centro de la esfera con respecto de la superficie libre Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 28 / 35

Flotabilidad (hidrodinámica) Demostración Hidrodinámica 2 z t 2 = g ( ρ ) = f (z3 ) Movimiento no amortiguado, es decir, el objeto nunca llegará a estar en equilibirio. Lo solucionamos añadiendo un término amortiguador: 2 z t 2 ( ) 3 = g ( ρ ) K z 2/3 t Podemos usar el mismo término amortiguador para todos los movimientos en x, y y z. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 29 / 35

Estabilidad Demostración Hidrodinámica Excitación del mar del tipo: M = A cos (ωt) Estabilidad regida por el parámetro GM: M = g GM sin (θ) u x local u x global = cos (θ) u x local u z global = sin (θ) En este caso también añadimos un término viscoso. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 30 / 35

Estabilidad Demostración Hidrodinámica Excitación del mar del tipo: M = A cos (ωt) Estabilidad regida por el parámetro GM: M = g GM sin (θ) u x local u x global = cos (θ) u x local u z global = sin (θ) En este caso también añadimos un término viscoso. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 30 / 35

Estabilidad Demostración Hidrodinámica Excitación del mar del tipo: M = A cos (ωt) Estabilidad regida por el parámetro GM: M = g GM sin (θ) u x local u x global = cos (θ) u x local u z global = sin (θ) En este caso también añadimos un término viscoso. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 30 / 35

Demostración Importando el nuevo objeto Preparación de la escena 1 Nos aseguramos de que todas las luces y cámaras (si las hubiera) se encuentran en capas inactivas. 2 Colocamos todos los objetos útiles en una capa inactiva. De no hacerlo al cargar la librería el objeto se añadirá automáticamente a la escena, y no se podrán crear más instancias del mismo. 3 Guardamos el archivo. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 31 / 35

Edición de la misión Demostración Importando el nuevo objeto Cargamos la nueva librería : Manager.load_blender_file( AI/Bouy/Bouy.blend ) Añadimos el objeto a la escena: obj = scene.addobject( Bouy, origin) Y lo posicionamos: obj.worldposition = Vector((-190.0, 1900.0, 0.0)) Hecho! Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 32 / 35

Contents 1 Introducción Quién soy yo? Qué es SonSilentSea? Qué pretendo contar? 2 Desglose de líneas de código Estructura general Componentes 3 Resultado del experimento 4 Preguntas 5 Demostración Física Hidrodinámica Importando el nuevo objeto 6 Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 33 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Blender ha puesto a disposición de los desarrolladores una herramienta rápida, flexible y potente. Se trata de un motor gráfico joven (en comparación con otros software similares), y eso tiene algunas consecuencias negativas. Aunque dicho motor tiene una buena integración con las herramientas de Blender, aún no se encuentra completamente integrado (por ejemplo no se pueden manipular las mallas desde el motor gráfico). Al estar amparada por un proyecto como Blender se puede esperar un buen soporte. Durante ésta presentación hemos creado una entidad básica, mostrando lo sencillo que resulta. Se ha mostrado como se puede modificar su comportamiento de forma sencilla mediante Python. Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 34 / 35

Fin Muchas gracias! Preguntas? Jose Luis Cercos-Pita SonSilentSea, creación de juegos en Blender con Python November 22, 2013 35 / 35