Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - Altair

#1
Proyectos / Publicado NGL 1.0
12 de Enero de 2015, 10:02:23 AM
Buenas,

pues eso, que ya lo he publicado, creo que es lo suficientemente buena y estable como para ser una primera version. Se podrian poner muchas mas cosas, pero creo que de momento es mejor que se pruebe lo que hay.

Trae el codigo fuente, la documentacion y unos cuantos ejemplos. Tiene licencia LGPL, me ha parecido la mejor opcion.
La he programado en Linux (concretamente Debian) con C/C++, y se necesitan unos conocimientos mas bien basicos.

Creo que esta todo bastante bien, para ser una primera version.
(NOTA: especialmente teniendo en cuenta el tema del diseño, cuando veais alguno de los ejemplos ya lo entendereis)

http://sourceforge.net/projects/nautilusgl/

Pongo aqui la referencia de funciones, para que os hagais una idea rapida:

FUNCIONES DE ENTIDADES
   load
   unload

   set_x
   set_y
   set_xy

   set_signal
   get_signal

   set_region_x
   set_region_y
   set_region_w
   set_region_h
   get_region_x
   get_region_y
   get_region_w
   get_region_h

   set_main_icon

FUNCIONES DE INTERACCION ENTRE PROCESOS
   ngl_collision
   ngl_get_angle
   ngl_get_dist
   ngl_advance

FUNCIONES MATEMATICAS
   ngl_rand_seed
   ngl_rand

FUNCIONES GRAFICAS
   ngl_alpha
   ngl_mask

   ngl_put_pixel

   ngl_get_pixel_r
   ngl_get_pixel_g
   ngl_get_pixel_b

   ngl_rotate

   ngl_geom_hline
   ngl_geom_vline
   ngl_geom_line
   ngl_geom_line_aa
   ngl_geom_line_thick

   ngl_geom_rectangle
   ngl_geom_rectangle_rounded

   ngl_geom_box
   ngl_geom_roundedbox

   ngl_geom_circle
   ngl_geom_circle_aa
   ngl_geom_circle_filled

   ngl_geom_arc

   ngl_geom_ellipse
   ngl_geom_ellipse_aa
   ngl_geom_ellipse_filled

   ngl_geom_pie
   ngl_geom_pie_filled

   ngl_fill

FUNCIONES DE MUSICA
   load
   unload
   play
   stop
   pause
   resume
   rewind
   volume

FUNCIONES DE SONIDO
   load
   unload
   play
   play_num
   
   volume
   volume_up
   volume_down

FUNCIONES DE ENTRADA
   ngl_key

   ngl_mouse_get_x
   ngl_mouse_get_y
   ngl_mouse_get_button_state

FUNCIONES DE TEXTOS
   ngl_load_font
   ngl_unload_font

   ngl_font_set_color

   ngl_font_text_solid_basic
   ngl_font_text_solid_utf
   ngl_font_text_shaded_basic
   ngl_font_text_shaded_utf
   ngl_font_text_blended_basic
   ngl_font_text_blended_utf

FUNCIONES DE INICIALIZACION Y FINALIZACION
   ngl_quit

   ngl_init_ttf
   ngl_ttf_quit

   ngl_sound_init
   ngl_sound_close

FUNCIONES DE FPS
   ngl_set_fps
   ngl_get_fps

FUNCIONES DE LA PANTALLA PRINCIPAL
   ngl_screen_set_bpp
   ngl_screen_get_bpp

   ngl_screen_set_main_text

   ngl_create_screen
   ngl_clear_screen
   ngl_frame

   ngl_screen_set_region_x
   ngl_screen_set_region_y
   ngl_screen_set_region_w
   ngl_screen_set_region_h

   ngl_screen_get_region_x
   ngl_screen_get_region_y
   ngl_screen_get_region_w
   ngl_screen_get_region_h

FUNCIONES DE PINTADO
   ngl_paint
   ngl_paint_region
   ngl_paint_entity

FUNCIONES DE PLANO
   add
   del
   get_number
   paint
   paint_one
   paint_group
   swap

FUNCIONES DE TIMER
   start
   stop
   get_ticks
   pause
   unpause

   is_started
   is_paused

FUNCIONES DE SCROLL HORIZONTAL
   load
   unload
   set_x1
   set_x2
   set_y
   paint
   move

FUNCIONES DE SCROLL VERTICAL
   load
   unload
   set_x
   set_y1
   set_y2
   paint
   move

FUNCIONES VARIAS
   ngl_pause

FUNCIONES DE PATHFINDING
   add_node
   del_node
   num_node

   set_x
   set_y
   get_x
   get_y

   add_son
   del_son
   num_son

   set_son
   get_son

   search
#2
General / Proteger el contenido de la base de datos
15 de Junio de 2014, 08:08:36 AM
Buenas,

estoy ahora mismo con unas pruebas para almacenar información en MySQL, usando la distribución Debian.

Dado que la idea es que cualquiera se pueda bajar el servidor y el cliente, la pregunta que tengo es: ¿cifro la información de la base de datos?. Por cierto, según ciertas web el término correcto es cifrar y descifrar, no encriptar y desencriptar.

El escenario es este: una persona se baja el servidor, lo instala y crea todo el sistema. X usuarios se bajan el cliente y se conectan al servidor.

Hay datos que por su naturaleza estan cifrados, por ejemplo el email y el password de los usuarios y admins.

Sin embargo hay otros datos de los jugadores que son más sensibles, como la cantidad de recursos que tiene y su tipo. La idea es que dichos datos queden protegidos de cambios no autorizados. Ejemplo: el admin del servidor se conecta y que quita recursos a un jugador y le da recursos a otro jugador. Puede que haga eso porque uno le cae bien y el otro le cae mal, o que lo haga simplemente porque sí, o por lo que sea.

El tipo de cifrado ya lo tengo mas o menos pensado, pero no se si esta es la mejor opción o hay alguna otra mejor.

Gracias.
#3
Buenas,

quiero exponer esta idea, que llevo unos dias dandole vueltas y me parece que puede ser interesante, a ver que os parece a los demas.

Todos los juegos tienen, de una forma o otra, botones para realizar acciones: el boton Aceptar, el de Cancelar, los de Pantalla Siguiente, etc.

Habia pensado en meter a mi proyecto una GUI basica basada en GTK, pero he pensado: ¿y cuando quieran usar otros graficos, que?. Cada juego es un mundo (graficamente hablando) y hacer que los graficos de la GUI sean los mismos para todos los juegos no parece buena idea.

Y ahi se me ha ocurrido: ¿y un sistema que sean todo menos los graficos en si mismos?, los graficos los pone el juego y todo lo demas el sistema. Por ejemplo, un boton de menu puede tener los siguientes estados: normal, seleccionado, enfocado (raton encima), desactivado. El juego puede usar los estados que quiera, o todos, y asignar a cada uno un grafico diferente.

La misma idea aplicada a cualquier elemento de una GUI: barras de scroll, menus, etc.
#4
Buenas,

he hecho un pequeño programa de tipo cliente servidor, necesito ayuda para probarlo.

Se divide en un servidor que acepta un maximo de 3 clientes simultaneos y el cliente que envia datos. Esta hecho en C y usa las versiones de desarrollo de SDL y SDL_net. Funciona en Linux Debian, pero deberia ser portabie a otras distribuciones y tambien a Windows,

En mi ordenador funciona, pero necesito que se pruebe en una LAN, y si es posible tambien por Internet.

Si hay gente interesada en la prueba, me gustaria que me dijerais donde preferis que suba los archivos.

Edito para añadir el sitio:
https://sourceforge.net/projects/nautilusgl/files/v0.5/?
#5
Buenas,

estoy avanzando con mi proyecto y he llegado a un punto que creo que deberia meterle la opcion multiplayer, he pensado tanto red local como por Internet. Estoy pensando en usar MySQL tanto para la comunicacion como almacenar datos de lo que sea (perfiles de jugadores, rankings, etc)

Entiendo que depende bastante del tipo de juego, no es lo mismo un matamarcianos que un plataformas que un juego tipo Quake pero creo que poderse, se podria hacer con C/C++ y MySQL. El como se gestionen los datos y demas cosas internas es otro tema.

¿Estoy mas o menos en lo cierto?.

Gracias.
#6
Programación en red / Juego 2D cliente servidor
18 de Noviembre de 2012, 10:41:29 AM
Buenas,

estoy mirando alguna libreria para hacer un juego en red. Es un juego 2D sencillo, lo tengo todo en papel mas o menos claro, estoy usando Linux, C/C++, SDL para graficos y demas y MySQL en el servidor para almacenar los datos.

En la comunicacion entre el cliente y el servidor, como uso SDL he mirado SDL_net. Estoy trasteando con TCP con este ejemplo http://content.gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net y me funciona mas omenos, puedo enviar texto. Digo mas o menos porque si el texto tiene espacios en blanco, en el servidor aparece solo hasta el espacio. Si envio "uno dos" el servidor recibe "uno" y el resto "(espacio en blanco) dos" se pierde. Si envio "uno_dos", el servidor lo recibe bien.

Otro tema es que estoy probando pero no me deja conectar mas de un cliente, parece que la funcion SDLNet_TCP_Recv tiene que estar dentro de un bucle, lo cual hace que solo pueda atender un socket.

He leido en una web, que estoy intentando localizar desde hace un rato, que SDL_net es mas bien una libreria sencilla para aclarar conceptos y cosas basicas, pero nada mas. Recomendaban otras dos o tres librerias, segun ellos mucho mas avanzadas.

Otra opcion que he pensado, no se si es muy valida pero en fin, es que los clientes metan su solicitud en una tabla de entrada y que el servidor continuamente lea esa tabla y procese las ordenes una a una. Con esto se conseguiria algo del tipo una accion cada vez, y para tener un orden, se pone un identificador del tipo nombre_cliente y la fecha y hora completa al milisegundo del servidor. Hay en mysql algo asi, no recuerdo exactamene el nombre. Lo que pasa, y no se si puede ser un problema, es que creo que con esto la CPU y el disco duro estan siempre en marcha porque se esta leyendo la tabla continuamente, no se si esto puede ser un problema.

En fin, no me enrollo mas, no se si estoy por el camino que toca o que, pero un poco eso es lo que estoy barajando. Igual, para los que conoceis mas estos temas, estoy poniendo una tonteria  ^_^' pero ahi lo dejo.
#7
Buenas,

estoy mirando unas cosas y me ha salido esta duda: haces un programa con licencia LGPL (lo que sea). Las condiciones de la licencia indican que tienes que poner a disposicion de los demas el codigo fuente del programa. Vale.

La pregunta es: ¿seria valido que para tener el codigo fuente tengas que comprar el CD?.

Un ejemplo: haces un programa, pones en la web el binario e indicas que programas se necesitan para ejecutarlo. El que quiera el codigo fuente que pague 3 euros + gastos de envio y se manda un CD con el codigo fuente por correo.

Esto viene a raiz de algun que otro texto que he leido por internet.
#8
Muy buenas,

he visto mucha información al respecto sobre crear empresas en el extranjero. Tras leer informacion por Internet he decidido poner aqui unos enlaces que parecen explicar bastantes temas legales. Mi idea es que la gente que conoce más profundamente estos temas de su opinión.

¿Es posible crear una empresa en un país extranjero?. La web de la comision europea dice que SI. Hago copy & paste: "El principio de libertad de establecimiento, consagrado en el artículo 49 del Tratado de Funcionamiento de la Unión Europea, permite a los emprendedores crear empresas en cualquier país miembro de la UE."
Fuente http://ec.europa.eu/youreurope/business/starting-business/setting-up/index_es.htm

En esa web dan los detalles legales tanto para crear una empresa como para adquirir una.

Posteriormente, estos dos enlaces:
http://desencadenado.com/2012/01/crear-una-empresa-en-3-horas-por-71-euros.html
http://desencadenado.com/2012/02/que-implica-abrir-una-empresa-en-londres.html

Espero que sea información útil.
#9
Proyectos / Dos capturas de Nautilus Game Library 0.4
22 de Febrero de 2012, 09:27:20 AM
http://tinypic.com/r/nyyznn/5

http://tinypic.com/r/mjmutl/5

Demo de pathfinding y demo de reproduccion de peliculas.
#10
Proyectos / Publicado Nautilus Game Library 0.3
23 de Enero de 2012, 09:53:37 AM
Novedades:

- Nueva funcion de interaccion entre entidades: ngl_advance
- Scroll horizontal y vertical, en ambas direcciones (arriba, abajo, izquierda, derecha)

La descarga incluye:
- Codigo fuente de NGL
- Tutoriales
- Demos con ejemplos listos para compilar, con imagenes de los resultados

http://ngl.ayudaprogramacion.net/
#11
Proyectos / Usar los ejemplos de div2
09 de Noviembre de 2011, 11:12:22 AM
Muy buenas,

estoy planteandome usar los ejemplos que trae div2 para hacer unas demos con la libreria. La pregunta que tengo es si es legal. Seria coger todo (graficos, sonido y codigo fuente) y "traducirlo" a mi proyecto.
#12
Industria y mercado / ¿Que tal el shareware en Linux?
02 de Agosto de 2011, 09:13:03 AM
Muy buenas,

lo pregunto porque la informacion que he visto en Google no es que sea de ultima hornada, he leido noticias del 2004 y demas.

Supongamos un juego tipo arcade de 40 niveles (por poner un numero). Supongamos que esta bien hecho: buen argumento, graficos, musica, sonido, etc.

¿Que condiciones es recomendable poner en la demo y en la completa?. Por poner un ejemplo:

Version demo:
- Limitado a los 5 primeros niveles
- Se ofrece el source para ser compilado (codigo fuente, imagenes, sonidos, etc)
- Licencia GPL version 2
- Descarga desde la web

Version completa:
- Precio, 3 euros. Creo que esta bastante ajustado teniendo en cuenta que es de creador a consumidor.
- Los 40 niveles
- El binario (Linux, Windows, etc). Source cerrado.
- Niveles adicionales cada X tiempo
- Enemigos y / o armas adicionales cada X tiempo
- Soporte tecnico sin limite de tiempo.

En fin, no tengo (casi) ni idea de como seria este tema, actualmente.
#13
Proyectos / Publicado Nautilus Game Library 0.2 RC1
28 de Julio de 2011, 05:21:59 PM
http://ngl.ayudaprogramacion.net/Releases/v0.2/NGL_v0.2RC1.tar.gz

¿Que hay en ese archivo?.
Todo. La propia libreria, 12 tutoriales para aprender a manejarlo, muchos ejemplos listos para ser compilados con una imagen del resultado en la mayoria de los casos. He hecho una reorganizacion para que este mas estructurado (espero) y sea mas facil de aprender.

¿Que novedades hay?
Muchas funciones graficas avanzadas: diversos tipos de lineas, circulos, cuadrados, rectangulos, arcos, elipses, porciones, etc.

¿Porque RC1?
Falta algo importante en esta etapa, la funcion ngl_advance. El archivo TODO.pdf detalla el funcionamiento. Espero que los que controlais el tema de matematicas y trigonometria podais ayudarme con esto y escribir la funcion :)

Ya se que en otro mensaje del foro se estuvo tratando esto, pero dado que es un tema muy complicado para mi, creo que es mejor verlo "sobre el terreno". Y mientras, a ver si consigo comprarme el libro de matematicas que estoy buscando :)
#14
Proyectos / Gente que quiera "hacer CV"
23 de Julio de 2011, 09:30:06 PM
Muy buenas,

he puesto lo que he puesto en el titulo del mensaje porque no se me ocurre una mejor manera de expresarlo. Ni tan siquiera se si lo que voy a preguntar existe, ni el como funciona. Prometedor el punto de partida, ¿eh?  ^_^'

Veamos, busco una persona que me haga la web para un proyecto personal, de forma gratuita. Es algo mas bien pequeño pero que ira creciendo con el tiempo, conforme vaya añadiendo contenido.

¿Que se ofrece?, mencion explicita en la web para ampliar CV, util para ofertas que pidan experiencia demostrable.

¿Que necesito mas o menos que conozca esa persona?. Con HTML, DHTML, CSS y JavaScript creo que seria mas que suficiente. Nada de PHP ni MySQL ni similar. Y por supuesto buena mano con maquetacion, diseño y esas cosas.

Ale, a ver si podeis orientarme.
#15
Muy buenas,

voy a poner el ejemplo basandome en como era el sistema educativo cuando yo estudiaba, no se como es ahora exactamente.

Suponer una persona que sale de la EGB, a partir de ahi ya tiene dos caminos distintos: FP o BUP, cada una con sus diferentes salidas y demas.

Como la base es EGB, que libros (en español) son los recomendados para aprender matematicas para videojuegos?.
#16
Muy buenas,

como de matematicas voy pez  ^_^' os pongo un poco en situacion, ya que no se si el algoritmo usado es incorrecto o me estoy liando por alguna otra parte.

Tenemos dos algoritmos, uno para calcular el angulo entre dos objetos (de Origen a Destino) y otro para hacer avanzar un objeto una distancia D en el angulo ANGLE. Estoy usando C/C++.

Los angulos usados son los mismos que teniamos en DIV2, los pongo aqui por si acaso.

0 grados, angulo hacia la derecha
+90 grados, angulo hacia arriba
+180 grados, angulo hacia la izquierda
+270 grados, angulo hacia abajo

estos angulos pueden tener valores negativos:

-90 grados, angulo hacia abajo
-180 grados, angulo hacia la derecha
... etc ...

El algoritmo para calcular en angulo es este, entity_id1 es el objeto origen y entity_id2 el objeto remoto.

double PI_detail;
int x1, y1, x2, y2;
float angulo;

PI_detail=3.141592;
x1=entity_id1->x;
y1=entity_id1->y;
x2=entity_id2->x;
y2=entity_id2->y;

angulo=atan2(x1 - x2, y1 - y2) * 180 / PI_detail;
if (angulo<0) { angulo += 360; }

Y luego tengo el algoritmo para hacer avanzar X pixels un objeto, que me ha dado dos sorpresas. La primera es que no puedo hacer avanzar el objeto 1 pixel porque no se mueve, deben ser como minimo 2. La segunda es que si la hago avanzar con angulo 0, y por tanto a la derecha, el movimiento es correcto, pero con un angulo de 90 grados (deberia ir hacia arriba), el objeto se mueve en diagonal abajo y a la izquierda.

El algoritmo de avance es este:

float radian;
float angulo;

angulo=entity_id->angle;
radian=(float)(3.1415926535897931/180)*angulo; // Pasamos el angulo a radianes.
entity_id->x=entity_id->x+(distance*cos(radian));
entity_id->y=entity_id->y+(distance*sin(radian));

Por ultimo, decir que no es imprescindible que se use el mismo sistema de angulos que div2 si es mejor usar otro sistema de angulos.
#17
General Programadores / Debuggers recomendados
16 de Junio de 2011, 03:17:43 PM
Estoy usando C/C++ en Linux y parece que los mas recomendados son GDB  de http://www.gnu.org/software/gdb/ y  Valgrind de http://valgrind.org/

En vuestra opinion, ¿son buenas opciones?. Sobretodo teniendo en cuenta que nunca he usado depuradores.
#18
Proyectos / Web de NGL disponible
14 de Junio de 2011, 01:17:38 PM
Muy buenas,

es una web muy sencilla, pero funcional. Aqui os dejo la direccion de Nautilus Game Library: http://ngl.ayudaprogramacion.net/

En la seccion "Que es Nautilus" hay un resumen de las caracteristicas de la primera version.

Espero que os guste  :D
#19
Inteligencia Artificial / Posible algoritmo de pathfinding
16 de Mayo de 2011, 11:29:54 AM
http://www.megaupload.com/?d=AYM0TFOO

Aqui os dejo en PDF lo que se me ha ocurrido, a ver que os parece.

PD: me bajo al supermercado a por unas cuantas botellas de agua y unos cuantos frascos de aspirinas  ^_^'
#20
General Programadores / Numeros aleatorios
12 de Mayo de 2011, 09:24:37 AM
Muy buenas,

estoy mirando con mas detalle el tema de los numeros aleatorios usando C/C++ y  me he encontrado lo siguiente:

Para la semilla:
srand(time(NULL));

Para numeros aleatorios entre un MIN y un MAX que sean distintos de cero, formulas a montones:
rand () % (N-M+1) + M; // N es el max y M el min
P+(int)(((U-P+1.0)*rand())/(RAND_MAX+1.0)); // U y P son dos numeros cualesquiera
max_value%rand())+ min_value;

Problema: estoy haciendo pruebas con una funcion que dibuja lineas horizontales en la pantalla, y por lo visto algo falla porque veo muchos azules y verdes pero poco mas. Algun amarillo perdido, y creo que no he visto aun ningun rojo ni otros colores.

Opcion A: la formula de semilla esta mal. Lo malo de esta opcion es que me la he encontrado en mil sitios. Otra posibilidad es hacerlo tomando como base la fecha+hora actual del sistema, pero CREO que no necesito tanta precision.

Opcion B: la formula del rand esta mal. Lo que pasa con estas formulas es que esta el factor de hasta que punto queremos que sean aleatorios. ¿Buscamos que no se repitan nunca o casi nunca o eso es mas bien poco importante y no pasa "nada" si la secuencia se repite?. Tal vez por este factor es por el que algunas formulas son mas elaboradas que otras.

Dado que estoy usando colores RGB, los valores van de 0 a 255. Para las pruebas le pido a rand un valor entre 1 y 255. Siempre los mismos azules y verdes, ponga la formula que ponga. Seguramente sea una tonteria, pero no caigo.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.