PDF de programación - sonsilentsea - Creación de Juegos en Blender con Python

sonsilentsea - Creación de Juegos en Blender con Pythongráfica de visualizaciones

Publicado el 14 de Enero del 2017
833 visualizaciones desde el 14 de Enero del 2017
2,7 MB
51 paginas
Creado hace 10a (22/11/2013)
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 Conclusiones

Resultado del experimento
Conclusiones

4 Preguntas

5 Demostración

Física
Hidrodinámica
Importando el nuevo objeto

6 Conclusiones

Conclusiones

Jose Luis Cercos-Pita

SonSilentSea, creación de juegos en Blender con Python

November 22, 2013

2 / 35

Introducción

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 Conclusiones

Resultado del experimento
Conclusiones

4 Preguntas

5 Demostración

Física
Hidrodinámica
Importando el nuevo objeto

6 Conclusiones

Conclusiones

Jose Luis Cercos-Pita

SonSilentSea, creación de juegos en Blender con Python

November 22, 2013

3 / 35

¿Quién soy yo?

Introducción

¿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

¿Qué pretendo contar?

Introducción

¿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

¿Qué pretendo contar?

Introducción

¿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

Precedentes

Introducción

¿Qué pretendo contar?

Usando algunos ejemplos de algoritmos de ordenación...

Python

C++

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

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

Diferencias en cuanto a características

Introducción

¿Qué pretendo contar?

Blender

OGRE

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

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 Conclusiones

Resultado del experimento
Conclusiones

4 Preguntas

5 Demostración

Física
Hidrodinámica
Importando el nuevo objeto

6 Conclusiones

Conclusiones

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

frame listener
Blender logic

input manager
Blender logic

Environment
Water plane

GUI
bgui

Sound

Blender internal engine

Entities

Player/AI control & ship motions

OGRE
39211 líneas de código (-1054 líneas)

main

112+257+303 líneas

frame listener
242+140 líneas

input manager
OIS reading

Environment

PSSM + HydraX + SkyX

GUI

CEGUI

Sound

ALSA + OGG Vorbis

Entities

Ship motions

Jose Luis Cercos-Pita

SonSilentSea, creación de juegos en Blender con Python

November 22, 2013

10 / 35

Input manager

Desglose de líneas de código

Componentes

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

Environment (Parallel-Split Shadow Maps)

Desglose de líneas de código

Componentes

Crucial para obtener sombras de calidad.
Crítico en función de la distancia mínima de corte:

 =

xv

yv
zv
wv

 n

r
0
0
0

0
0
0
n
0
0
h
0 − f +n
f−n − 2fn
f−n
−1
0
0



y
z
w

x
 ,

1

z

Resultando la profundidad del punto en pantalla como:

zs =

zv
wv

= 2

fn
f − n

w
z

+

f + n
f − n

= O

Blender (-98 líneas)

OGRE (-1054-379-159 líneas)

Implementado internamente en el motor de
Blender.

Header file
40 líneas

Source file
119 líneas

Jose Luis Cercos-Pita

SonSilentSea, creación de juegos en Blender con Python

November 22, 2013

13 / 35

Environment (Parallel-Split Shadow Maps)

Desglose de líneas de código

Componentes

Crucial para obtener sombras de calidad.
Crítico en función de la distancia mínima de corte:

 =

xv

yv
zv
wv

 n

r
0
0
0

0
0
0
n
0
0
h
0 − f +n
f−n − 2fn
f−n
−1
0
0



y
z
w

x
 ,

1

z

Resultando la profundidad del punto en pantalla como:

zs =

zv
wv

= 2

fn
f − n

w
z

+

f + n
f − n

= O

Blender (-98 líneas)

OGRE (-1054-379-159 líneas)

Implementado internamente en el motor de
Blender.

Header file
40 líneas

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)

OGRE (-1054-379-159-11877 líneas)

La cámara no permite apreciar la atmósfera, y
por tanto no ha sido implementada.

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)

Desglose de líneas de código

Componentes

Blender (-98-38 líneas)

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

∼43+∼75+335+∼190+∼255+915+∼450 líneas

Entorno submarino

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

Conclusiones

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 Conclusiones

Resultado del experimento
Conclusiones

4 Preguntas

5 Demostración

Física
Hidrodinámica
Importando el nuevo objeto

6 Conclusiones

Con
  • Links de descarga
http://lwp-l.com/pdf1527

Comentarios de: sonsilentsea - Creación de Juegos en Blender con Python (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad