Reflexión sobre los programadores de DarkOrbit (Silvanito, quizás encuentres algo útil)

Tema en 'Archivo de temas restantes' iniciado por ImManulaiko, 29 Abril 2014.

Querido usuario,

si deseas participar activamente en nuestro foro en los diferentes temas, deberás acceder al él desde tu cuenta de juego. En caso de no tener una cuenta de juego registrada aún, te pedimos que te registres en el juego lo antes posible. Nos alegraremos mucho con tu próxima visita a nuestro foro! „JUGAR“
Estado del tema:
Cerrado para nuevas respuestas
  1. Hola!!!

    Bueno, pues últimamente me estoy encontrando con muuuuchos temas negativos acerca de DarkOrbit, y esto sinceramente no lo entiendo.

    Tengo 16 años, soy programador de Java, C#, PHP, Python, Ruby, HTML, CSS y JavaScript.
    Esto me ha permitido intentar conocer como funciona DarkOrbit, de hecho lo he comprendido.

    A dónde quiero llegar con esto? Bien, antes de empezar a programar pensaba que el juego era una m¡erda y que tendrían que arreglar todos los bugs que habían.

    Cuando empecé a programar me dí cuenta de que no era tan fácil como creía (y seguro, muchos creen), ni que los bugs no se arreglaban dando click a un botón, ni que el rendimiento del juego era pésimo.

    Hacer algo como esto no es tan fácil como muchos piensan, creerme.

    DarkOrbit está MUY bien programado (en términos de POO), al menos los js y el cliente sobretodo, el problema es que faltan hábitos muy muy pero que muy importantes de programación.

    Al principio puede parecer una chorrada, pero no lo es cuando trabajas en equipo, y un equipo tan grande como el de DarkOrbit lo necesita urgentemente.

    Estoy hablando de los comentarios (si, esas líneas que empiezan por // o /*), la documentación (las líneas que empiezan por /**) y los TODO de los cuales, DarkOrbit, no posee ninguno. Fijaros, el tema de la subasta que esta causando tantos posts últimamente (en el foro inglés también pasa lo mismo), podrían resolver el problema en menos tiempo del que se esta tardando si documentasen y comentasen (línea por línea estaría bien) su código sería muchísimo más comprensible y ayudaría ENORMEMENTE a la hora de corregir bugs.

    PERO, y esto es muy importante, no los eliminarían (que sería de un juego sin bugs), puesto que, como ya he dicho antes (y ahora voy a explicar), un juego del calibre de DarkOrbit es difícil de hacer y aún más difícil de mantener.

    Muchos quizás penséis que es mentira, que BP solo se preocupa del dinero (y a primera vista lo parece) pero quizás las siguientes líneas cambien vuestra manera de ver las cosas.

    ¿Cómo funciona DarkOrbit?
    Bien, pues básicamente es un servidor de sockets (clientes, usuarios o llámalo como te de la gana) que escucha en un puerto determinado (8080) y espera conexiones. Cuándo recibe una conexión la procesa hasta que, una de dos, o el cliente se desconecta.

    Dicho así parece muy fácil (de hecho lo es), el problema es que no es tan sencillo.

    A demás de un servidor de sockets, DarkOrbit, tiene también una base de datos.

    Los programadores que estén viendo esto (espero que alguno, así no pareceré un idiota) dirán "Realizar una conexión a la base de datos es trivial" y tendrán razón, el problema no es la base de datos en sí, sino su contenido.

    ¿Nunca os habéis parado a pensar como tiene que ser la base de datos?
    Yo si, y creerme, me asusté la primera vez que pude observar la cantidad de información que actualmente DarkOrbit tiene en su base de datos.

    El problema está en como procesar toda esa información, y aquí el camino se divide bastante.

    Tal vez la forma de administrar la base de datos no sea la correcta y por eso hay que esperar un poquito más de lo necesario para ver como se resuelven los bugs, o tal vez no, nunca lo sabremos.

    Ahora volvamos con el servidor.
    Os acordáis de hace 1 o 2 años con los boteros? como olvidarles eh?
    BP hizo un MUY BUEN trabajo al eliminarlos, aunque también hizo algunas tonterías que no eran necesarias como por ejemplo el XOR de main.swf que empieza en 0x043 y va aumentando 1 con cada byte si no recuerdo mal.
    ¿Para qué hacer un XOR a main.swf si luego en loadingscreen.swf se hace otro XOR para anularlo?
    En mi opinión eso es una gran pérdida de tiempo.

    Pero también hizo cosas buenas, como la encriptación de los paquetes, primero pasaron de no encriptarlos, a un XOR, después a netty y ahora a ARC4 con un big endian y una clave fuerte de cojones que (si no recuerdo mal) está en los 3 primeros paquetes.

    Esto hizo que TODOS los desarrolladores de bots tirasen su trabajo por la ventana y se rindieran, a no ser que tengas un grado en matemáticas lo tienes crudo si quieres romper la encriptación actual.

    Pasemos ahora al rendimiento.
    Muchos decís que es pésimo, y tal vez tengáis razón, pero ¿no os habéis parado a pensar la cantidad de threads (hilos, instancias o como quieras llamarlo) esta activos ahora mismo? Yo pienso que más de 10.000, fijo fijo tiene que haber uno por usuario, esto ya puede cambiar enormemente según los hábitos de los programadores, y creerme que seguro que tienen 2 o más threads, cada uno con una gran cantidad de variables y operaciones que seguro no son nada fáciles.

    No siempre, la cantidad de líneas en un método o una clase indican la cantidad de esfuerzo empleada, veamos un ejemplo.

    Este método (esta hecho por mí, no tiene nada que ver con BP) tiene pocas líneas, pero me costó tres horas hacerlo, es simple, recibe como parámetro un vector con una cantidad X de puntos y calcula cuál es el más cercano al centro (en este caso, el centro de la pantalla), no voy a explicarlo más dado que ya esta documentado y comentado línea por línea:

    Código:
    /**
    * Descripción: Calcula (por fuerza bruta :D) el punto más cercano al centro de la pantalla.
    *
    * @param puntos: Vector<Point> que contiene la lista de puntos a procesar
    * @returns el punto más cercano al centro de la pantalla
    */
    public static Point getClosestMatch(Vector<Point> puntos)
    {
        //Iniciamos varios objectos Point
        Point top = new Point(0, 0); //La esquina superior izquierda de la pantalla
        Point centerScreen = new Point((1280 / 2), (1024 / 2); //Centro de la pantalla
        //Obtenemos el primer elemento del vector puntos
        Point p1 = new Point(puntos.firstElement());
        //calculamos la distancia máxima de los puntos
        double min = distMax(top, centerScreen);
        double dist;
    
        System.out.println("Calculando...");
        for (int i = 0; i<puntos.size()-1;i++)
        {
            //Entramos en el primer bucle
            for(int j = i+1; j <puntos.size(); j++)
            {
                //Entramos en el segundo bucle
                //Calculamos la distancia del elemento "i" en el vector puntos con el centro de la pantalla
                dist = distMax((Point)puntos.elementAt(i), centerScreen);
                /* Esto no lo voy a usar :D
                if (min<0)
                {
                        min = dist;
                        p1 = (Point)puntos.elementAt(i);
                        p2 = (Point)puntos.elementAt(j);
                        plano.dibujaLinea(p1,p2,Color.blue);
                        plano.dibujaLinea(p1,p2,Color.yellow);
                        esperar(Integer.parseInt(chRetardo.getSelectedItem()));
                }
                else*/
                //Si la distancia del punto "i" es menor a la distancia actual
                if (dist < min){
                    //la distancia actual es la distancia del punto "i"
                    min = dist;
                    //Guardamos el punto actual, quizás sea el más próximo
                    p1 = (Point)puntos.elementAt(i);
                }
            }
        }
        //devolvemos el resultado
        return p1;
    }
    
    /**
    * Descripción: Devuelve la distancia entre 2 points
    *
    * @param p1: point 1
    * @param p2: point 2
    * @returns distancia
    */
    public static double distMax(Point p1, Point p2){
        return Math.sqrt(Math.pow((p1.x-p2.x),2)+Math.pow((p1.y-p2.y),2));
    }
    
    Este foro necesita ayuda de prettyfier.js

    Puede parecer una tontería, pero me costó lo suyo xD.

    Si con todo este rollo no he conseguido cambiar vuestra perspectiva acerca de los programadores de DarkOrbit, os invito a crear un juego multijugador masivo online que pueda hacerle sombra a DarkOrbit.

    Y ahora me voy que son las 6:30, no he dormido nada, tengo sueño y mañana (ahora luego) es el primer día de clase después de las vacaciones, así que intentaré dormir 30 minutitos
     
    A Juanzx, Silvanito, 4n7h0n3 y 1 persona más les gusta esto.
  2. talvez lo encuentres facil para ti por que entiendo que tengas 16 años no es tan dificil entender de como funciona los html entre otros, pero si supuieras como crear un juego 3d y tenerlo al tanto, veraz que no es tan facil de corregir errores, esos señores ya tienen una carrera tecnica en informatica otros en modelado 3d otros en programacion, etc etc bla bla bla, si el juego se buguea o se crean errores unos tras otros, cuando actualizan es por varios factores el equipo de bp aun no logra entender SIN MENCIONAR DE LOS SERVIODORES OBSOLETOS QUE TIENEN,.

    un claro ejemplo de que el equipo de bp no pudo solucionar un problema fue el foro antiguo, querian actualizar el foro viejo por este pero no era posible debido a la compatibilidad de los programas y no se que cosas

    si me equivoco corriganme
     
  3. Camicacoxx

    Camicacoxx User

    Muy buen post,aunque no entendí ni la mitad de eso de los codigos ,pero me parece muy interesante :D,y es verdad que en un juego siempre habrá millones de bugs, y que es bastante chungo arreglarlos todos,pero los programadores no tienen 16 años,ni solo tienen conocimiento -básico-medio- de la informática,(codigos,main.swf,entre muchos otros)tienen su carrera de informática,de unos cuantos años,y ya deberían arreglar estos errores,lo que les falta a el equipo( desde mi punto de vista,eh..)es mucha falta de comunicación entre el equipo,hay muchos errores más o menos graves que ya deberían haber sido resueltos(subasta lleva ya como más de una semana) y sigue estando ahí,yo creo que no tienen constancia los programadores de dichos errores.
    Se que es chungo arreglar un problema de estos..como el de la subasta,pero insisto; estos programadores tienen su carrera y ya podrían solucionar un problema de estos en menos de dos días.

    Para uno que sabe muy poco de esto como yo,y supongo que para mas gente,puede serles complicado todo eso de codigos,pero para un equipo que ya sabe,para ellos sería muy fácil de hacerlo.

    Una comparación:

    .-Un niño sabe sumar y el otro no.

    Para el niño que no sabe,lo de sumar le parece una locura y algo muy difícil de entender.

    Para el que estudió, no lo es.

    saludos :D
     
  4. Podrían, pero la cosa es que hay fallos que ya llevan meses y aun siguen ahí.
     
  5. Me parece que no has entendido nada
     
    A 4n7h0n3 le gusta esto.
  6. Yo no digo que sea fácil, pero ellos lo hicieron, ellos trabajan en esto todos los días, si le pusieran ganas, podrían mejorar mucho y rápido. A manera de excusar sus faltas nos dices, "hazte un juego multijugador tu", a lo que yo te respondo que no es a lo que me dedico, no es lo que se hacer. En lo mío, que no te quede duda de que soy el mejor.

    Saludos :)
     
    A 4n7h0n3 le gusta esto.
  7. El juego es mediocre, tienes que tener en cuenta que viene desarrollándose desde 2006, el equipo original que trabajó en DO comenzó un buen trabajo para su época pero una vez que se dieron cuenta que podían meter actualizaciones que valian cantidades exorbitantes de dinero y que habría mucha gente dispuesta a pagar por ello cambiaron su manera de ver el juego y lo convirtieron en lo que veiamos hasta 2013, un juego muerto que sólo representaba una vaca llena de dinero para ordeñar hasta que se secara, lleno de bugs, errores, abusos y una indiferencia total hacia los jugadores fieles.

    Hoy en día la nueva administración ha aliviado un poco la carga hacia los jugadores promedio (una inversion a futuro) intentando rescatar un poco el juego (Al paso que iba el juego no duraria online por mucho tiempo).

    Igualmente para ser un juego que lleva 8 años en desarrollo me parece que es -mediocre-
     
  8. pues para mi veo que DO en partes se esta haciendo mediocre y pues si solo les preocupa la plata, tu crees que no harian mejor su trabajo despues de tanto dinero que reciben los programadores??? Es su trabajo por eso lo escojieron, solo mira con los bots el rango se elevo y que hizo BP??? Nunca reseteo los puntos de rango,tambien actualmente existen llamados chetos y no veo sanciones respecto a esto, si no quieren tanto trabajo que dejen de hacer actualizaciones inútiles.....
     
  9. Ehhh... si.... emmm... yo iba.... a decir... ehhh.... lo mismo.... claro claro...
    Pero.... le falto... lenguaje cristiano....
     
    A PalafoЖ•MΞЖ•811† y 4n7h0n3 les gusta esto.
  10. TABACO

    TABACO User


    Bueno muchachos, el juego con las actualizaciones, poniéndoles en términos simples se "apila", la base del juego es el mismo que el de 2009 pero se van añadiendo mas "lineas"; ahora como vas a poder seguir construyendo si no sabes que hay abajo? si no han seguido los posts de los programadores ( que deberían, ya que cualquier queja respecto al funcionamiento si no saben de se trata ni deberían opinar) los que trabajan ahorita NO SON LOS MISMOS QUE LOS DE INICIO por muy ducho que seas en tu trabajo, como vas a corregir algo que no sabes donde empezo!!

    Construyo un puente de 100 pisos de 1000 Km de largo pero cuando pasas a 500 Km/h sientes una vibración molesta ahora revisa toda construcción para ver cual es el fallo con todo el respeto no ·$%&/( las ·$% y ponganse a pensar.
     
  11. El problema no es que se note una vibracion molesta, el problema es que el puente entero se tambalea
     
    A TABACO le gusta esto.
  12. TABACO

    TABACO User

    Touche
     
  13. Si he visto el video en que dicen que los programadores originales ya no trabajan en el juego, pero me parece una muy pobre y mediocre excusa. Si tienes un problema en tu puente, búscalo antes de que se derrumbe y mates a un millón de personas...

    Saludos :)
     
  14. enfin el juego es my dificil de arreglar lo mejor seria que la beta de darkorbit en 3D salga lo mas pronto posible
     
  15. yo mejor no opino tu "explicacion" tiene muchas fallas
     
  16. Silvanito, he visto que has leído el post, me gustaría saber que piensas ;)
     
  17. hector.

    hector. User

    Pues
    yo de códigos, programación y todas esas cosas que has puesto no te entiendo nada
    lo único que se es que para un error del juego no se deben de buscar excusas como, no son los mismos programadores, es decir los programadores que trabajan en el juego hoy en día no trabajan sin pago o me equivoco?
    entonces si les pagan que hagan bien su trabajo que es para eso que les pagan
    claro me dirás es muy complicado arreglar esto y aquello así por así
    bueno, pues para eso han estudiado no? o acaso contratan incompetentes en BP la verdad no creo que sea así
    pero como ya se como es este juego por que digo yo que ya tengo el tiempo suficiente como para decir eso
    acá arreglan una cosa y arruinan 20
    mejor que lo dejen como esta ;);)
     
  18. Si fuese como tú dices Windows seria perfecto
     
  19. Bueno, tal vez no versiones anteriores, pero con W7 no he tenido problemas en 3 años de uso, así que para mi ES perfecto ;)

    Ya has dejado claro que trabajas para BP, puedes dejar de defenderte :D

    Saludos :)
     
  20. No trabajo para BP, ojalá, de hecho cuando acabe mis estudios aprenderé alemán y me iré p'allá :D

    A demás, windows 7 también tiene sus fallos, no a nivel visual.

    Sinceramente pienso que ubuntu es lo mejor, y aún así tiene sus fallos.
     
Estado del tema:
Cerrado para nuevas respuestas