Comenzando desde cero: ¿es un error si reinvento la rueda?


31

Por lo general, cada vez que quiero comenzar un juego, creo que tengo una buena arquitectura básica para renderizar y un mejor bucle de juego desde cero. Por lo general, no quiero usar motores existentes. La razón detrás de esto es que quiero implementarlo por mi cuenta para aprender cosas.

Pero muchos blogs y desarrolladores dicen que no es una buena opción para reinventar la rueda.

¿Me estoy perdiendo de algo?


¿Con qué frecuencia realmente "comienzas un juego"? Si está iterando ideas rápidamente, haga lo que funcione. Si está haciendo una obra maestra donde un paso en falso es costoso o el tiempo es limitado, ¿por qué perder el tiempo reinventando la rueda? Si estás interesado en aprender cómo funcionan las cosas, ¿por qué no escribes tu propia tecnología? ¿Cuáles son tus objetivos aquí?
ChrisE

Respuestas:


16

No, no es algo malo en absoluto. El aprendizaje y la capacidad de aprender es absolutamente fundamental para ser un buen programador.

PERO
Lo importante cuando se construye algo desde cero es terminarlo hasta su finalización. No importa cuán arrogante y poco optimista sea, si lo completa hay una sensación de satisfacción como ninguna otra. Todo le dará una experiencia valiosa y siempre puede hacer que el código sea más elegante o tener un mejor rendimiento más adelante cuando tenga algo funcional. Al final del día, lo único que separa a los programadores asombrosos de los mediocres es la experiencia y la práctica.

Por supuesto, cuando hayas hecho algo y quieras crear más juegos, no hay razón para reutilizar tu antigua base de código.

Si estás buscando comenzar una carrera en el desarrollo de juegos, o cualquier tipo de desarrollo realmente, la experiencia te llevará muy, muy lejos. Pero si está buscando producir juegos rápida y fácilmente (relativamente fácil, en comparación con escribir sus propias cosas), use un motor existente.

Para ser honesto con usted, una combinación de experiencia usando su propio código Y usando una variedad de bibliotecas y motores diferentes lo convertirá en un codificador mucho mejor.


Gracias Ray que es útil! pero, ¿puedes enumerar también la mecánica del juego ...
Ayyappa

No hay problema. No estoy completamente seguro de lo que quieres decir en el contexto de tu pregunta original. ¿Qué buscas en particular?
Ray Dey

Está bien, lo haré como una pregunta separada. La otra pregunta en esta publicación fue eliminada (editada) ya que no relaciona un poco el contexto.
Ayyappa

+1 para la línea de meta : completar un proyecto es una buena experiencia.
Cíclope del

36
i want to implement it on my own to learn stuff.

Eso es probablemente lo más importante. Si su objetivo es aprender, escribir sus propios motores de renderizado y bucles de juegos desde cero está bien, y es una experiencia de aprendizaje perfectamente buena. Si su objetivo es hacer un juego terminado de forma rápida y sencilla, utilice un marco existente.


3
+1. El hecho de que una API o una biblioteca de terceros pueda abstraer todos los detalles de implementación no significa que no necesite conocerlos. El uso de 'ruedas disponibles' lo ayudará a escribir el código terminado más rápido; pero hacer su propia rueda ayudará a identificar qué premade cuáles son los mejores, y lo más importante cómo optimizar la depuración y cuando los radios empiezan a saltar hacia fuera ...
sebf

44
+1 No reinvente la rueda, a menos que esté aprendiendo a hacer ruedas.
zzzzBov

44
recuerda que esto mejorará tus habilidades en el diseño del motor del juego , pero no en el diseño del juego.
Dave O.

Esta también es una respuesta digna ... gracias ... pero es malo que no pueda marcar dos respuestas :(
Ayyappa

10

Reinventar la rueda te enseña cómo funcionan las ruedas.


5

Depende de lo que estés buscando. Si quieres aprender, reinventa tantas ruedas como quieras. Conozco personas que han escrito sus propios cargadores JVM o PNG por el gusto de hacerlo.

La mayoría de los blogs probablemente dan consejos sobre cómo llegar a las cosas que le pagan rápidamente, pero no sé si es una buena estrategia a largo plazo. Si no sabes con qué estás jugando, ¿cómo sabes si es una buena opción? ¿Qué harás cuando encuentres problemas, te quejes en los foros o puedas resolverlo tú mismo?


4

Hay mucho desánimo sobre esta frase en la comunidad de programación general, pero creo que todos sabemos que muchos de nosotros amamos nada más que reinventar la rueda y encontrar una manera de hacerla girar un poco mejor, más rápido y más fresco.

Están surgiendo nuevas tecnologías todo el tiempo que necesitan personas para reinventar la rueda. OpenCL y otros lenguajes de computación GPU son un buen ejemplo.

Podrías usar un marco que incluyera las nuevas capacidades de este año pero haciéndolo por tu cuenta, si realmente investigas y haces mejoras en lo que ya existe, ... realmente puedes encontrar un nuevo terreno en rendimiento y utilidad.

Una vez que haya inventado algunas ruedas para que pueda rodar, ¡conoce sus cosas bastante bien como una gran ventaja!

Además, es muy divertido.


1

Y hay quienes afirman que son más productivos precisamente porque reinventan la rueda.

Caso en cuestión: Eskil Steenberg, creador de World of Love (excelente video donde habla sobre su juego, su motor y herramientas increíbles , y su filosofía: http://vimeo.com/18423305 )


1

Si es la primera vez, aunque sea solo para aprender, es mejor usar algún tipo de motor porque aprenderá lo que el motor puede proporcionarle.

El uso de "la rueda" en la metáfora es el concepto, no la implementación. Incluso si no va a reinventar la rueda, aún debe elegir si comprará una o la hará por su cuenta. Por lo tanto, crear su propio motor ni siquiera es reinventar la rueda, solo desea crear su propia rueda para algún propósito, que puede ser para aprender, a bajo costo, para un tamaño pequeño o cualquier uso o requisitos específicos.


0

La cuestión es que lo que lleva mucho tiempo cuando se hace un juego es el contenido real y la creación y prueba de activos, en general no escribir código. Es probable que sea por eso que es fácil omitir esa parte y usar un motor existente para poder pasar más tiempo en contenido, diseño de juegos y errores de nivel superior.

Creo que hacer cosas desde cero para aprender generará una buena sensación del trabajo detrás de los motores existentes y mejorará la capacidad de seleccionar uno más adelante si es necesario.

Por diversión y para aprender, haga lo que quiera. Si tuviera que escribir clases de canalización de contenido desde cero, manejando todos los detalles molestos y casos extremos del sistema de archivos y cargadores de activos, me volvería loco, siempre y cuando haya aprendido lo suficiente como para tener una buena comprensión de cómo hacerlo, Tiendo a evitar hacerlo si alguien ya lo ha hecho bien (aunque es cierto, muchos frameworks y motores no encajan en mi propia idea de "bueno", lo que sería motivo para reescribir algo). Si no sé cómo hacerlo, realmente me gusta completarlo al menos una vez, solo para comprender los detalles más finos de lo que sea, como ya dijo Ray Dey.


0

Es solo un error si no tienes tiempo para aprender. Si tienes tiempo, anímate. Si no lo haces, entonces no lo hagas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.