Logo

¡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

Mensajes - Jare

#31
General Programadores / Fucniones C ( Arranque, Parada )
25 de Mayo de 2006, 11:02:00 PM
 
Cita de: zupervacaPor lo mismo que por que no se sepa por que funciona no significa que este mal hecho.
Cuando el autor no sabe explicar por qué funciona, tampoco puede GARANTIZAR que vaya a seguir funcionando mañana, y por tanto su trabajo no está bien hecho (a no ser que te paguen por hacer algo y solo te exijan que funcione "hoy" ;)). Y, como vamos a ver más abajo, cuando la razon por la que funciona es "implementation dependent" o "por pura casualidad", entonces ESTA mal hecho, sepas o no sepas por qué.
Cita de: zupervacaEl por que funciona es simple, la clase singleton alberga un miembro estatico, pero la instancia de la clase en si no es estatica por lo que al indicarlas en la funcion main se asignan como memoria automatica, es decir, en la pila, y la pila tiene un orden muy estricto, el primero en destruirse es el ultimo en crearse, y ya que el estandar c++ indica que las instancias de las clases solo se inicializan cuando son llamadas por primera vez el orden se vuelve correcto
Ni de coña.

"For the static member to exist, it is not necessary that any objects of the class type exist"

Las variables estáticas de una funcion son inicializadas la primera vez que se ejecuta la función, ni antes ni despues. Para las estáticas de clase eso no es aplicable, porque ni siquiera hace falta que exista una instancia de la clase para que la estática de esa clase exista.

"Initialization of global static objects in a translation unit. This may occur either before entry to main or before the first use of any function or object in the object's translation unit."

Las variables estáticas de una clase se pueden inicializar mucho antes y en un orden no definido por el estándar. Lo curioso es que los templates en general ni siquiera viven en una translation unit concreta, sino (generalmente) como multiples en una amalgama de "translation units" en las que se usa ese template, y que el linker se ocupa de fundir en una sola copia.

La presencia de las instancias en la pila no tiene NADA que ver. La realidad? Funciona en tu ejemplo solamente por la forma en que el compilador / linker generan el código asociado al template en ese caso concreto. Tu ejemplo es tremendamente fácil de destrozar:

#include <stdio.h>

template <class TYPE> class Singleton
{
 static TYPE object;
public:
 TYPE *operator -> () { return &this->object; }
};
template <class TYPE> TYPE Singleton<TYPE>::object;

struct A { A() { puts("A::A()"); } ~A() { puts("A::~A()"); } void f() {puts("A::f()"); } };
struct B { B() { puts("B::B()"); } ~B() { puts("B::~B()"); } void f() {puts("B::f()"); } };

void f()
{
 Singleton<B> b;
 puts("f()");
 b->f();
}

int main()
{
 Singleton<A> a;
 Singleton<B> b;

 a->f();
 b->f();

 f();
 return 0;
}

Y la salida de ese programa es:

B::B()
A::A()
A::f()
B::f()
f()
B::f()
A::~A()
B::~B()

Como puedes ver, el orden de los singletons en main() es A y luego B, sin embargo las llamadas a los constructores de esas clases ocurren en orden inverso. Por qué? Porque lo que dices simplemente NO ES CIERTO, aunque en determinados casos funcione por casualidad. Mejor dejarse de filigranas que ni funcionan ni responden a una regla establecida y estandarizada. Globales con inicialización explícita y a vivir que son dos días.

PD: Joer que destrozo hace el foro con los acentos y tal. :(
#32
General Programadores / Fucniones C ( Arranque, Parada )
24 de Mayo de 2006, 09:55:40 PM
Cita de: zupervacaBuff ¿por que no pruebas el ejemplo en todos los compiladores que quieras y lo dejamos? es que creo que es perder el tiempo intentar demostrar algo que funciona en el 100% de los casos y de los compiladores, es que seria lo de siempre, pondria mil links, tu pondrias otros y estariamos en un sin acabar.
Solo por que te funcione no significa que este bien hecho.
#33
General Programadores / Fucniones C ( Arranque, Parada )
23 de Mayo de 2006, 12:47:14 AM
Cita de: DegiikYo lo q pretendo es ejecutar código depués de que se ejecuten los destructores de todos los objetos de la applicación. Creo q tiene que existir algo al respecto predefinido, sin hacer paranoias.
No lo hay.
#34
Industria y mercado / Como Esta El Mercado?
20 de Mayo de 2006, 11:35:14 PM
 No te confundes. Otro es Sergio Garc�s, programador de IA del Praetorians e Imperial Glory. El tercero es Angel Cu�ado, aunque ahora me entran dudas de si realmente hizo teleco. :) De todas formas, la idea no es personalizar sino, de alguna forma, desmentir que teleco no signifique nada para hacer videojuegos... nadie aprende a hacer virguerías en la carrera, pero la carrera te da una excusa cojonuda para aprender cosas que de otra forma no mirarías, y también te entrena en cosas como disciplina, trabajo en equipo y desarrollo del aprendizaje.
#35
Industria y mercado / Como Esta El Mercado?
20 de Mayo de 2006, 05:33:51 PM
Cita de: raistlinun teleco en videojuegos pinta lo mismo que un arquitecto.
Al menos tres de los mejores programadores que he conocido haciendo videojuegos son telecos.
#36
General Programadores / Toda La Vida Haciendolo Asi
14 de Mayo de 2006, 06:14:59 AM
 Usar parametros enteros para templates es relativamente frecuente (p.ej. Vector), pero NO hablamos de números sino de... ¿cadenas? ¿No puedes contarnos QUE es lo que hace tan imprescindible que la construcción de los managers no reciba parámetros? ¿Estás creando arrays u otros contenedores con tus Managers? (En C++0x pretenden resolver ese defecto de C++ con los "sequence constructors", pero seguro que se dejan algo ;)) ¿O lo haces con la idea de optimizar alguna operación? Podría ser un sizeof(tag) en vez de strlen(tag), pero si hablas de leer tags de XML, la unica operación que normalmente harias con el tag dichoso es como mucho un strcmp(), y eso no va a cambiar porque la cadena sea un parámetros del template. Y en cualquier caso, ese coste debería ser nulo en la practica si la lectura está bien diseñada.

Ni idea, pero me encantaría conocer la justificación real. En fin, si realmente quieres hacerlo, la unica forma es con los static.
#37
General Programadores / Toda La Vida Haciendolo Asi
13 de Mayo de 2006, 01:50:59 AM
 
Cita de: zupervacaNo me vale pasar al constructor el string por que tendria que derivar un template, cosa extraña por que los templates se hicieron para crear plantillas y evitar asi derivar una clase de otra
Por puntos:

- Derivar templates es lo más normal del mundo. En absoluto se hicieron para "evitar derivar". El template da el manejo del tipo que quieras parametrizar, y la derivada del template hace las cosas concretas que quieras para un tipo de recurso concreto. Pueden haber varios recursos diferentes que usen el mismo tipo.

- Puedes hacer un template que toma los tipos como parámetro del template, y las cadenas de los tags como parámetro del constructor.

- Tampoco entiendo para qué necesitas derivar el template para pasarle diferentes cadenas, pero no es problema. Si la derivada del template solo debe ser usada con un tag concreto, pues que sea la derivada quien pase el tag (y aunque el constructor del template recibe un tag, el constructor de la derivada no.  Por ejemplo:


template<typename T>
class IManager
{
   const char *Tag;
 public:
   typedef T Tipo;
   IManager(const char *tag): Tag(tag) { }
   //...
};

class ManagerDeLuces: public IManager<float>
{
   std::vector<IManager::Tipo> Valores;
 public:
   ManagerDeLuces(): IManager("luz") { }
   //...
};


- NO se pueden pasar cadenas literales como parámetro para la instanciación de un template, hay que hacerlo con los static.

- Es la primera vez que veo a alguien hacer un diseño así, y espero que sea la última. ;)
#38
Industria y mercado / Exelweiss Hace Un Post Mortem!
29 de Abril de 2006, 12:55:58 PM
 
Cita de: ethernetqué hace un diseñador de videojuegos?
Respuesta- resumen clásica:

Crean y definen los elementos interactivos y narrativos
- Diseño conceptual: A qué se juega
- Definición de elementos, reglas, mecánicas e interfaz
- Misiones y escenarios
- Guión, ambientación, etc

Y no es solamente pensar la teoría en abstracto: también es sentarse a meter cada número, cada estadística, cada zona sensible, cada conexión entre elementos de juego, etc. Desde el concepto "terroristas y contra-terroristas" hasta los detalles de si un rifle cuesta $3700 o $4000, la fuerza y duración del retroceso de cada arma, los tiempos de emisión de humo de una granada, marcar qué paredes pueden ser atravesadas por ciertas armas, o colocar y ajustar las plataformas, obstáculos y espacios abiertos para que un nivel no dé ventajas a un equipo frente al otro.

Por cierto, muy interesante el postmortem.
#39
General Programadores / Switch "esotérico"
10 de Abril de 2006, 05:34:31 PM
 Mientras los breaks estén bien puestos, ell switch solamente entra en una de las etiquetas, o sea que si te está entrando en varias será porque está pasando varias veces por el switch. Es posible que desde las llamadas a read y write se esté generando una llamada de vuelta a System_call()?

Por lo demás, hay cosas de estilo de programacion que me hacen llorar. :)
if (tal)
...
else
 assert(FALSE);
// ------------------------
while (true)
{
 if (carac=='\n')
   break;
...

Por qué no poner lo siguiente?
assert(tal);
...
// ------------------------
while (carac!='\n')
{
...

Ya se que suena a pijadas pero cuando el código es fácil de leer, tambien suele ser más fácil de depurar.
#40
General / Máster O No Máster
18 de Febrero de 2006, 05:15:55 PM
 No lo sé decir con seguiridad porque no llevo ese aspecto, pero es probable que se admitan, previa entrevista con los directores del master.

De todas formas, tampoco os volvais muy locos con el tema de empezar a trabajar en videojuegos nada más terminar la carrera. Yo ya tenia juegos publicados, bastante experiencia en hacer cosas "tipo juegos", y aún así trabajé en el departamento de informática de un banco durante más de 3 años. Y me alegro MUCHO de haber tenido esa experiencia; vale que no aprendí de poligonos, pero sí mucho sobre lo que significa trabajar en equipo, documentar, coger responsabilidades, cumplir fechas, etc.
#41
General Programadores / Duda Windows Forms Con Vs.net 03 Y C#
16 de Febrero de 2006, 10:54:34 PM
 El método de Vicente creo que tiene más futuro.  (ole)  
#42
General / Máster O No Máster
16 de Febrero de 2006, 10:33:21 PM
Cita de: raistlinAl contrario que Jare yo si creo que una empresa de este tipo hace muy bien en formar a su gente
En Pyro hay clases de inglés todas las tardes, un buen taco de libros sobre desarrollo, y material vario de lectura (C++ User's Journal, Game Developer Magazine). Cuando hay algún artículo interesante nos lo pasamos. Cuando alguien quiere o necesita saber de un tema, dudo que nadie le haya dicho "calla y programa". Este es el cuarto año que gente de Pyro va a la GDC, además de varias conferencias menos públicas sobre desarrollo de next-gen. Si alguien quiere saber sobre un tema, es casi imposible que no encuentre a otra persona dispuesta a contarle / explicarle / darle referencias. Nada es perfecto, pero yo diría que en Pyro hay más material formativo del que la gente llega a usar.

No tengo ni idea de dónde has sacado que yo me opongo a que la gente se forme, pero como soy "jefe" supongo que en tu cabeza caigo en el mismo saco que el resto de los "jefes" sobre los cuales tan pobre impresion pareces tener. Desde luego, si opinas que la formación consiste en mandar a la gente a cursos, entonces tenemos ideas muy diferentes sobre cómo formar a un desarrollador dentro de una estudio de videojuegos.
#43
General / Máster O No Máster
16 de Febrero de 2006, 12:53:35 AM
Cita de: pR0gR4m3RTanto se quejan de que faltan profesionales, pues que se invierta en un programa educativo que no sea solamente un master y punto..
"y punto"? Joer que fáciles que son las cosas para algunos. Si es que los que nos dedicamos a hacer juegos y a tratar de enseñar a otros debemos ser idiotas, ¡cuando la solución era tan sencilla!

Perdonad el tono sarcástico, pero es que leyendo cosas como las que se dicen aquí, a uno se le cae el alma a los pies.
#44
General / Máster O No Máster
15 de Febrero de 2006, 12:45:57 AM
 Hacer un máster es uno de los muchos pasos que se pueden dar para entrar en la industria de los videojuegos. De ellos no sales hecho un Carmack, pero si sabiendo bastante más. Los hay mejores y peores, con más trayectoria y con menos, más académicos y más prácticos, más caros y más baratos, más largos y más cortos, más especializados y más generales. Muchos alumnos que han hecho los master de la UPF o de la UCM están trabajando en juegos hoy día, y muchos no.

Intentar meter a todos los másters y a todos los posibles alumnos en un mismo saco es la mejor forma de no sacar nada en claro.
#45
General Programadores / Generadores De Makefiles
03 de Enero de 2006, 01:10:27 AM
 Esto no es lo exactamente que buscas, pero desde luego ayuda a reducir el mantenimiento de los makefiles casi a cero (por experiencia):

http://gpwiki.org/index.php/Make





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.
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.