Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - abreu20011

#1
Saludos :)

Escribo este post un poco con la esperanza de poder aclarar y aclararme cual debería ser el camino a seguir, según qué situaciones, para desarrollar videojuegos, centrándonos en el tema de programar, más que de hacer diseño de niveles.

Yo ya tengo algunos conocimientos básicos, por lo que mi duda va más orientada hacia el futuro, que hacia la actualidad.

Personalmente, uso Unity, como muchos cientos, debido a su facilidad y a que permite hacer real, sin demasiados conocimientos, muchas de las cosas que queramos. No quiero entrar en el debate de si es bueno o no, bajo mi punto de vista, aunque Unity en la actualidad me permite calmar las ganas de crear juegos, me gustaría entender mejor como funciona lo que hay por detrás.

He estudiado algo de XNA, y con ello aprendí (un poco) el tema de la matrices, las proyecciones, y ya sólo de ojeada, el lenguaje que usa para los shaders.

Mi problema, e imagino que el de cualquiera que empiece en esto, es qué camino debería seguir uno llegados a este punto, en el que más o menos te defiendes, sabes, más o menos lo que es programar, y ya has hecho algunos trabajos reales en .NET y por placer en Android SDK y Unity.

Existen muchas API diferentes en este bonito mundo, y supongo que aquí se empieza a notar mi desconocimiento, porque no sé ni si se llaman API, engine o cómo exactamente.

Me refiero a: XNA, DirectX y OpenGL. (ya sé que XNA no está al mismo nivel, pero tampoco se aleja mucho por lo que leí en su momento)
Aunque he visto otros frameworks tipo Dark GDK (http://www.thegamecreators.com/?m=view_product&id=2128), creo, que son variaciones de estos primarios. Y supongo que XNA es una variación de DirectX. ¡Cuantas suposiciones! xD

Mi problema es que quiero verlos todos, y no abarco ninguno. Miro un poco de XNA, y luego paso a OpenGL (más bien OpenGL ES) y asi continuamente.

Por ejemplo, ¿para programar un visor de objetos 3D y poder crearlos, tipo 3DMax, que usaría? Imaginad la pregunta en su modo más simple, obviamente, no me refiero a programar 3dsmax.

Vale, me diréis que OpenGL es compatible con todos los SO, DirectX es privativo, y que XNA está muerto.

Pero para entender mejor todo el tema de la programación 3D, y al mismo tiempo, estudiar algo que me complemente en el futuro, ¿qué sería la mejor opción?

Personalmente, mi pequeño sueño desde niño ha sido programar Doom 1 como lo hizo John Carmack, sin Unity, UDK, ni nada. Un poco de C, pizza y muchas ganas.

Pero si de los sueños podemos sacar algo util, mejor, por eso mi duda va un poco orientada a qué estudiar, pero que me ayude a seguir mejorando en el futuro.

Ya sabéis como funciona esto, estudias una cosa, y poco después ves que otra cosa que usabas, se basa en esa misma. No digo que quiera llegar a ASSEMBLY, tampoco quiero exagerar, pero al menos no sentir que no tengo ni idea cómo funciona internamente un Raycast en Unity.

Otra duda que siempre he tenido, y tarde o temprano, yo creo que cualquiera que se meta en este mundo se plantea es... ¿cómo se diseña un nivel?

Me refiero: Si usas XNA, hagas lo que hagas, lo haces escribiendo, no hay un visor como en Unity o en UDK. Puedo entender que programes los objetos para que actúen de de una u otra manera según que situaciones, pero por ejemplo, un mapa del Doom, que tiene una forma establecida, unos enemigos en unas posiciones establecidas y unas texturas establecidas, ¿cómo cargas todo ese 3D a nivel de código? Teniendo en cuenta que hay colisiones, distintos materiales, animaciones en las puertas, texturas... Por  no hablar de un Mario Bros, con los trozos de tierra (donde los pies hacen contacto con el suelo, vamos :P) en X sitios a lo largo de un más que extenso ancho que ocuparía mucho más que un folio A4 dibujado a mano.

Estas ultimas preguntas son demasiado especificas, pero mi verdadera pregunta es: ¿Qué tengo que estudiar para responderme todas esas dudas?

Creo que si hubiera continuado estudiando XNA habría podido responder esa ultima pregunta, pero me daba tanta cosas que haya donde fuera me dijeran que XNA estaba muerto, y que usara DirectX o OpenGl... Jajaja, pero claro, ¿cual? :)

Muchas gracias por leerme!
Un saludo :)
#2
Gracias Daemon :)

Estoy mirando algunas cosas que me has pasado porque me huelo que me voy a tener que crear una clase para esa información. Cosa que me parece un poco exagerada, pero bueno...

Gracias ^^
#3
Por favor, que alguien me ayude, cualquiera idea me vendrá bien :)
#4
Saludos,

La verdad es que ya no sé si me esta tomando el pelo o qué pasa aquí. Estoy programando bajo la API de Autodesk Maya sobre Python algo muy, muy básico: cambiar el valor de una variable mediante una función.

Pero mi asombro y mi desesperación es que, si cambio el valor de la variable desde dentro de la función (en teoría, es una variable creada FUERA de la función, por lo que debería ser global) y sin salir de la función, le digo que me haga un print del valor... funciona.

Pero en cuanto llamo a la misma variable (se supone, ya modificada) desde otra función, no hace nada. Simplemente, deja el valor con el que fue creada la variable :(

Es como si creara una segunda variable en mi función o no guardara nada o no sé qué u.u

¿Alguna sugerencia?


import maya.cmds as mc

variable = '_MAL_'
collection1 = mc.radioCollection()

ventana = mc.window(t = 'a')
mc.columnLayout(adj = True)

mc.radioButton(l = 'A', cl = collection1, onc = 'F1()')
mc.radioButton(l = 'B', cl = collection1, onc = 'F2()')
mc.button(l = 'ver', c = 'Ver()')

mc.showWindow(ventana)

def F1():
   variable = 'A'
   print 'variable modificada a A'
   print 'valor leido desde F1(): ' + variable

def F2():
   variable = 'B'
   print 'variable modificada a B'
   print 'valor leido desde F2(): ' + variable
   
def Ver():
   print variable


Un saludo y gracias!
#5
Redes / Router SMC7004VBR fantasma?
16 Septiembre 2012, 15:35 PM
Saludos comunidad :)

Vengo aquí en busca de ayuda porque ya no sé qué hacer. Ni siquiera sé que es lo que esta pasando, ojala alguien pueda darme algún consejo o sepa que esta ocurriendo.

El tema es un poco extraño, así que lo explico:

Tengo contratado una linea ADSL con Orange -aunque hasta hace dos días, tenia una de Jazztel en la que duré cerca de tres años- en la que un técnico nos añadió una nueva linea (yo, personalmente, le vi introducir un cable en la central de mi comunidad y llevarlo hasta un nuevo PTR en mi casa) con la que llevo desde hace dos días.

El problema viene en que, tanto antes, como ahora, el rango correcto de IP en mi hogar es de 192.168.1.XXX. El nuevo router, funciona por DHCP, por lo que, cuando funciona, la IP que me da es una valida e Internet funciona correctamente.

Pero a veces, porque sí, me da un IP distinta: 192.168.2.XXX y claro, ahí ya no tengo Internet. Investigué un poco, y metiendome en la puerta de enlace: 192.168.2.1 puedo entrar en un rotuer (SMC7004VBR) que en mi casa no existe.

Sé que es ese router porque metiéndome en 192.168.2.1 dentro de un navegador llego hasta él.

No tengo ese router por ningún sitio, no existe. Sin embargo, a veces recibo esa IP. Hace años es cierto que ese router estuvo en mi casa, pero hace años. Hoy por hoy, ni siquiera esta a 10km a la redonda de donde yo vivo. Sinceramente, creo que incluso se tiró a la basura. La conexión funciona así:

El router de Orange (el bueno) tiene un cable directo hasta un HUB nque a su vez, saca otro cable que llega a mi sobremesa. No hay más intermedios, y sin embargo, a veces recibo esa otra IP (este HUB a parte, va otro sobremesa, sin embargo, la IP mala la da este o no encendido este otro ordenador, por lo que no creo que sea por ahí)

¿Alguien sabe que puede estar pasando? ¿Qué es este router? ¿Es posible que sea de algún vecino? Es que no tiene sentido, porque va por cable!! D:

Otros datos que quizás sean importantes:

Dentro del router fantasma, dentro de Status, tengo esta información que no he sido capaz de encontrar donde cambiarla:

Barricade Settings
IP Address: 192.168.2.1
Subnet Mask: 225.225.225.0
DHCP Server: Enabled
Firewall: Deisabled
UPnP: Disabled

La información que sale en Connection Status si que la he podido cambiar, y le he dado la información de mi ISP pero nada... Si no puedo destruirlo, al menos que de la información correcta >.<

La verdad que ya no sé que hacer.

Un saludo a todos :)
#6
Cita de: rir3760 en  9 Agosto 2012, 19:41 PM
No, no es correcto ya que no colocas todos los bytes del array a cero.

Una forma mejor es utilizando el nombre del array y su numero de elementos:
fichaPersona Alumnos[20];
memset(Alumnos, 0, sizeof *Alumnos * 20);


También deberías eliminar la literal 20 (en su lugar utiliza una macro).

Muchisisisisimas gracias rir3760 ^^
Ya decía yo que no podía estar bien :)

Ahora mismo voy a mejorar mi código :D
Y gracias por el consejo de la macro, no la use por que es un ejercicio, pero está bien saberlo ^^

Un saludo y muchas gracias de nuevo :)
#7
Saludos :)

Vengo con una duda a ver si alguien puede ayudarme un poco  ^^ Es un tema de concepto, que no sé si estoy haciendo bien algo.

Hablo de la función memset y como la he aplicado. Se supone que esta función sirve para inicializar una matriz a 0, indicandole el tamaño en bytes que queremos que ocupe.

Pero, ¿y cuando esa matriz es una matriz de estructura?
Mi código funciona, pero no tengo muy claro sí está bien programado:


typedef struct
{
char Nombre[20];
char Direccion[30];
int Telefono;
int Nota;
nDias Dias;
}fichaPersona;

fichaPersona Alumnos[20];

memset(Alumnos, 0, sizeof(int) * 20);


al parametro de sizeof le he dicho que es un entero. Pero la matriz Alumnos que tiene 20 posiciones, esta compuesta por 5 enteros y dos char.

¿Es correcto entonces poner sizeof(int) o tendria que poner otra cosa? A mi entender un solo entero tiene que ocupar menos bytes que 6 variables unidas :S

Muchas gracias! :)
Un saludo
#8
Saludos y muchas gracias por las diversas respuestas :)

El Dependency Walker lo he bajado y comprobado mi archivo, y no me entero mucho de como va, más que de que tengo un error (no sé si mi archivo, o un error del programa a leerlo) y sí, encontré la función getch() pero no aclara mi duda >.<

El NCurses lo miré por encima y tiene buena pinta, pero primero quiero acabar bien C y las librerías ANSI C que ponerme con otra cosa. Por otra parte, no entiendo muy bien en qué me puede ayudar respecto a mi duda.

Y respecto a a lo que dices rir3760, ¿como que es posible, pero no se recomienda? ¿Me estas diciendo que es culpa de Windows que se me añaden esas librerías? Si es asi, pues que allanamiento de la programación xD

He estado mirando, y me he dado cuenta de que puedo, sencillamente, no declarar ni un solo include que el programa anda. Con el error que dices, pero anda. ¿Esto es correcto? ¿Es decir, si no declaráis las librerías os va? :S

Que yo sepa, no debería ser así, no? Porque si no, ¿como sabe que printf hace una cosa y no otra? Me siento muy perdido ahora mismo xD

Un saludo
#9
Me pasa tanto usando el MinGW en windows, como con el de DevC++ :)
#10
Saludos :)

Sólo queria preguntar una duda que tengo. Cuando compilo un programa en C e incluyo el #define <stdio.h> pero no el conio.h puedo usar las funciones getch() y getche.

Sin embargo, si busco en la librería de stdio.h no salen, sin embargo si para la librería conio.h.

¿Es posible que funcione por compilar desde Windows aunque no incluya las librerías? Es que no se muy bien por que pasa eso :)

Del mismo modo, puedo usar system() sin incluir stdlib.h :S

Gracias