¿Es difícil codificar un juego como agar.io?

Hola, soy el creador de Orpe.ga.
Codificar un juego como Agar.io no es muy difícil y, a diferencia de la mayoría de las respuestas, entender la comunicación cliente / servidor es la parte fácil en mi opinión personal. Si está familiarizado con JavaScript, puede usarlo para el cliente y el servidor. Hay un proyecto llamado Node.js que es un mod del motor JavaScript V8 de Chrome que le permite ejecutar JavaScript en un servidor con varias utilidades de red. Hay muchos módulos / complementos para el nodo como el módulo WS websockets / ws que le permiten crear servidores WebSocket. El cliente puede conectarse al servidor a través de IP a través de una conexión HTML5 WebSocket. También debe tener una sólida comprensión de los gráficos HTML5. Orpe.ga usa el elemento de lienzo HTML5 y dibuja con JavaScript, puede usar DOM (no recomendado), WebGL (todavía inestable en algunos navegadores) u otros marcos gráficos de JavaScript como Paper.js. Si no ha trabajado con gráficos de JavaScript antes, el Ejemplo de juego HTML de W3School es un buen lugar para comenzar para todo lo que sea su cliente. Vi en una de las respuestas que debería decirle al cliente cuándo mover un objeto hacia la izquierda / derecha / arriba / abajo. Para un juego como Agar.io, ese no suele ser el caso. Es mejor enviar coordenadas sobre ese tipo de datos en caso de que el cliente pierda un paquete, lo que generalmente no sucede, pero puede. El cliente debe enviar qué botones se presionan en lugar de sus coordenadas. El servidor también debe manejar toda la física / colisión / lo que sea. Si alguien tiene más preguntas, mi correo electrónico es goaliesave25 [at] gmail [dot] com y ¡Feliz año nuevo!

La parte más difícil sería la creación de redes. Si quisieras hacer de ese juego un solo jugador y usaras una herramienta como Unity 3D, podrías hacerlo en un solo día, porque solo tiene una mecánica y los gráficos son muy básicos y 2D.

Si quisieras usar directamente el santo webdev trinity css + html + javascript para hacer el juego, sería un poco más difícil, ya que Unity hace mucho trabajo por ti, y en javascript deberías comenzar desde cero (a menos usaste algunas herramientas inestables), pero la dificultad aún no es demasiado alta.

Pero como dije, la parte más difícil sería la creación de redes.

Ahora no se preocupe, no es ciencia espacial, simplemente tiene que elegir su esquema de diseño y atenerse a él. La forma más sencilla probablemente sería usar la forma autorizada por el servidor, ya que hay una copia del juego ejecutándose en un servidor y cuando el jugador presiona una tecla para moverse, esta entrada se envía al servidor, que luego la usa para moverse. su copia del objeto jugador (para que todos los jugadores envíen sus datos al servidor que los mueve). Y luego, a su vez, el servidor envía posiciones de todos los objetos en red a los clientes conectados, y actualizan las posiciones de sus objetos locales respectivamente. Esto probablemente suene confuso, pero en realidad es bastante simple:

Cliente -> Servidor: Hola, quiero mover mi pelota hacia la derecha

Servidor: Bien, voy a mover esa pelota de chicos como él quería

Servidor -> Cliente: moví tu pelota a la posición X, Y

Servidor -> Cliente_1: Oye, moví la bola del Cliente a la posición X, Y

Esta es también la forma más fácil de evitar trampas, ya que el servidor es quien decide dónde están todos en la pantalla.

Esto tiene, por supuesto, algunos aspectos negativos, como el retraso de entrada. Le toma un tiempo a su entrada llegar al servidor y al servidor decirle a su computadora que conmovió a su chico. Esto puede mejorarse mediante la interpolación pronosticada por el cliente y otras cosas, pero no nos preocupemos por eso ahora.

Ahora, otra forma sería la autoridad del lado del cliente sobre los objetos propiedad del cliente. Esto significa que el jugador puede mover su bola en su juego y luego le dice al servidor que la movió y el servidor le dice a todos los demás clientes que la movió. Esto hace que sea más fácil hacer trampa, ya que puedes hackear la posición localmente, pero la gran ventaja de este método es que hay un retraso de entrada cero, incluso si tu conexión a Internet apesta.

Dice así:

Cliente -> Servidor: Hola, moví a mi chico a la posición X, Y

Servidor: Ok, moveré a su chico a esa posición

Servidor -> Cliente_1: Hey, el Cliente movió a su chico a la posición X, Y

Cliente -> Servidor: Hola, moví al chico del Cliente_1 a la posición X, Y

Servidor: De acuerdo, lo haré, espera un minuto, él no puede hacer esa pequeña mierda astuta.

Servidor -> Cliente: ¿Qué F estás tratando de hacer? No puedes mover la mierda del Cliente_1, solo él puede hacerlo.

Y, por supuesto, también hay otros métodos, y varias combinaciones híbridas entre ellos y todas las redes son una pesadilla a veces y, si puedes, puedo decirte por experiencia, evítalo. No es súper difícil, solo súper tedioso. (Ahora, obviamente, no puedes hacer eso en un juego como Agar que está completamente orientado al multijugador, pero si estás haciendo algo como Mario, no dupliques tu trabajo y acortes tus nervios abofeteando a un multijugador allí como una ocurrencia tardía).

En lo que a mí respecta, no puede ser tan difícil. Probablemente habría tenido más problemas con las animaciones que con la programación real.

Vamos a elegir algunas cosas para considerar.

Este juego está formado por círculos que son muy fáciles de manejar.

El círculo solo tiene que seguir su mouse, nuevamente no es difícil de programar.

Cuando dos círculos se encuentran (su centro está más cerca que su radio sumado) tienen que hacer algo. Aquí puede pasar un poco de tiempo descubriendo las reglas.

Entonces, para resumir: si tienes conocimientos básicos de programación puedes hacer este juego, pero el hecho de que tengas que hacer esta pregunta demuestra que no tienes los conocimientos necesarios para hacer este juego, TODAVÍA. Comience con algo menos complejo.

Si. Con un motor de juego como Unity3d, tal vez no (a excepción de las redes, eso es increíblemente difícil en Unity) pero funcionará muy lentamente.

Agar usa Node.js como back-end con Socket.IO como administrador de redes. Tampoco son muy difíciles de comenzar, tuve la sala de chat en un día, y las redes están integradas, y es bastante rápido.

Tendrá que escribir un motor de renderizado para dibujar cosas en la pantalla. Tendrá que detectar y procesar los eventos de colisión. Deberá alquilar servidores para alojarlo o alojarlo en su casa, y de cualquier manera pagar por el ancho de banda que utiliza.

La curva de aprendizaje no es empinada, pero es muy larga. Estoy tratando de hacerlo, y animo a otros a hacer lo mismo. La mejor de las suertes para todos nosotros.

Diría que realmente depende de qué tan bien pueda comprender los conceptos de redes. Codificar un juego multijugador IMO es mucho más difícil que codificar un juego para un solo jugador. Aunque si puedes codificar un juego para un solo jugador, ¡ese es un buen comienzo! Tome este clon de un jugador de Agar.io creado con HTML / CSS / JS que se encuentra aquí: My Agar.io Clone. No se necesita mucho código si navega por la fuente allí. Pero una vez que agregue el modo multijugador, puede esperar otra capa de complejidad y muchas más líneas de código dependiendo de las características que desee agregar.

Si está realmente interesado en aprender a codificar un juego como Agar.io, le recomiendo este documento de Arquitectura de juego que se encuentra aquí: huytd / agar.io-clone. Es bastante detallado sobre cada parte de cómo funciona el juego bajo el capó. También puede usar esto para ayudarlo a construir un clon Agar.io también. Espero que esto ayude

– – – – – – – – – – – – –

Shameless Plug: si alguien está buscando una lista súper limpia de juegos .io, visite http://playio.games . Sin juegos de desarrolladores de sandboxing o iframing, y sin anuncios excesivos. Realmente me encantaría tu opinión para ayudar a mejorarla para todos, ¡más funciones por venir!

Hay código abierto disponible para Agar.io. Si desea evaluar la dificultad en detalles, puede ver en Github: huytd / agar.io-clone.

La mayor parte de la codificación de juegos .io es relativamente simple cuando se compara con MMO tradicionales y nuevos géneros como MOBA. Pero aún así no son tan fáciles como crear un juego flash para un solo jugador, ya que hay mucho más trabajo por hacer, como servidores, conexiones, etc.

Depende de tus habilidades y herramientas que estés utilizando. Si eres lo suficientemente hábil en el área y si tienes las herramientas adecuadas, puedes fácilmente hacer un clon de este juego y hay muchas personas haciendo esto. Para la mayoría de los juegos como Agar.io, la parte más difícil es venir con la idea, aplicar la idea de una buena manera y promoverla. Incluso si escribe el mejor código de todos los tiempos si no tiene una buena idea de juego, entonces no puede tener éxito, o si no puede aplicar su idea de una buena manera, entonces es lo mismo. La codificación es la parte más fácil del proceso si tiene las herramientas adecuadas y la habilidad para usarlas.

Para inspirarte, puedes consultar los juegos .io en IO Games Network

Sí y no, según el script de codificación que esté utilizando.

Si es Python, la dificultad normal para un juego también como PHP.

C ++ es muy difícil de codificar algo así.

Java y JavaScript son los mejores con juegos en línea, por lo que es muy fácil

Bueno, me parece bastante simple. No creo que necesites descargar nada de Asset Store.

Hacer esto como un juego multijugador será difícil como principiante, así que olvídalo por ahora. Simplemente revise algunos de los tutoriales en http://unity3d.com/learn , y luego comience un juego de sprites 2D.

Tengo miedo de admitirlo porque rara vez codifico, pero déjame decirte algo. El viejo juego de la serpiente en Nokia hace mucho tiempo, incluso para ese juego simple, necesitaba un código largo.

Tengo especialización en TI en mi universidad. La razón principal porque quiero hacer un juego, pero más tarde me doy cuenta de que son tan duros (está empeorando ya que no me gusta codificar también) pero no es imposible.

Agar.io, necesitará codificar no solo las redes, sino también todos los aspectos dentro de ellas, desde dar un nombre a su celda, configurarlo siempre en el núcleo de su celda, qué tan grande es su celda después de comer otras células, etc. No es imposible. Debe codificar con paciencia (si tiene pasión por la codificación) y buscar en muchas fuentes. Y recuerda, necesitas equipo incluso para hacer un juego como Agar.io.

Espero que esto ayude 🙂

Es muy difícil. Tratando de hacer que el servicio funcione, corregir sprites y codificación.

Thomas