Development Schedule for Sounds of Silence
Hola, les escribiré sobre un proceso mas detallado que logré capturar en el desarrollo de este juego. No pude hacer un registro mas detallado por tiempo, pero espero pueda ser útil para alguien o aprenda a realizar algo.
Tomé 5 de los 10 días en la construcción de un documento de ideación y un Game Desing Document. En este documento planteé la totalidad de los activos a utilizar, mecanicas y estilo del juego. Consulte este documento en este Dev Log o diréctamente aquí. Nota: actualmente estoy trabajando en Programación Orientada a Componentes de Unity, así que verá referencias de esta arquitectura.
MECANICA DEL MICROFONO
Con este documento pude saber que la mecánica principal de Sounds of Silence es el uso del micrófono. No sabía si era posible implementarlo así que fue lo primero que se realizó. Se realizó como un controlador que respondía a eventos de unity a los que fueron asignados los elementos del canvas que tenían otro componente que cambiaba su escala según el float entregado por el micrófono.
video: https://drive.google.com/file/d/1x0aiJUMazU7M_8Igjacb1lY5gw7_sCJH/view?usp=drive...
CONTROLADOR DE PERSONAJE
Luego se trabajó en el controlador de personaje. Movimientos básicos, salto y la interacción con la tecla E. Se usó el Axis para determinar las acciones horizontales y verticales.
video: https://drive.google.com/file/d/15hIAmKAY4JYu8U8xf4o1GC3Nx8uAsm7B/view?usp=drive...
COMPONENTES
Finalmente se crearon e importaron componentes de mi bilbioteca. Aqui destacar un componente que genera transiciones fade a negro, componentes clave para el desarrollo como uno que controla por eventos el enable y disable de los GO.
SCRIPTABLE OBJECTS
Usando el poder de los scriptable objects (que son como assets que almacenan datos) se crearon estas estructuras interesantes:
- GameEvents (patrón observer): En el enable de un GO se añade el componente GameEventListener al que se le asigna un Scriptable Object previamente creado de tipo GameEvent y un evento de unity. El evento se añadirá en un arreglo del scriptable y podrá ser invocado desde cualquier parte del juego con la referencia al activo. ¡Se usó mucho esta funcionalidad en la construcción de Sound of Silence!
- Audios: Creé un Scriptable que almacena audios, su información y canales (Sfx y Musica). De esta forma sdesde eventos podía reproducir los audios sin necesidad de tener un Audio Source o un Audio Manager en mi escena.
- Lenguaje: Todos los textos de Sounds of Silence están en scriptable Objects que almacenan los textos por cada idioma. Al cambiar el idioma desde el botón, cambiará los textos en todo el juego.
video: https://drive.google.com/file/d/1-l-EWo8XLysuE7fpz3mx-3juDAI-AgVX/view?usp=drive...
Shaders
Para la estética quería usar luz de unity en tiempo real. Por esto tuve que crear un shader que recibiera correctamente esta iluminación, además, para las siluetas otro shader que mostrara los sprites completamente negros o blancos incluso recibiendo luz.
imagen: https://drive.google.com/file/d/1zBJC-9GAmZNh1E5EVqcLw36TqsIVTwMD/view?usp=drive...
imagen: https://drive.google.com/file/d/1ETVg_vOwTaoYgqCn5_XRYbRD3WnBmM3J/view?usp=drive...
imagen: https://drive.google.com/file/d/1Uy10HSj_u1JtAsvPTiVeH7VJVbsaKvQT/view?usp=drive...
imagen: https://drive.google.com/file/d/1E7QHy82r9OfSKdAxe2KST6n-JJNE9e00/view?usp=drive...
Escenario
Para el escenario se crearon Layers y se ubicaron en diferentes posiciones del eje z. De esta forma se facilitaría el efecto paralax al moverse.
imagen: https://drive.google.com/file/d/1nFKEwq-VKcsOv4HiIfx7uhlUWv9t1iNw/view?usp=drive...
Arte
Se comenzó el trabajo de arte (duró varios días). Como la estética es basada en los dibujos de mi amiga, tuve que calcar algunos. Mientras que otros tuve que inventar para darle vida al mundo. A continuación una serie de imagenes que tomé en el proceso:
https://drive.google.com/file/d/1J8SDQxR9_KazNm1NZaaw5rpgitFvF3Fh/view?usp=drive...
https://drive.google.com/file/d/1pFtx1FQbfSZnzze0Yba1sBFXjc-jpHLJ/view?usp=drive...
https://drive.google.com/file/d/1hk5r8kimWKWqW71gF_7AxIZOVct5u_3_/view?usp=drive...
https://drive.google.com/file/d/1mjtuWMMejJPo1zy17YAVjOM7-NecSv5r/view?usp=drive...
https://drive.google.com/file/d/1VoNvXfmf--O8otSi3rgMccb2nxQWCsSc/view?usp=drive...
al comenzar la importación de las montañas noté que debía definir mejor la paleta de colores. Por eso utilicé la web gratuita de Adobe Color para definir colores complementarios y contrastar las nubes en el cielo, pintando finalmente las montañas de color arena.
https://drive.google.com/file/d/1Z0y5muuptgKeLSG_tHvZsF_D7HIbamRN/view?usp=drive...
https://drive.google.com/file/d/1VSfgVlRvdSZL-gvghVBhYLD1982xPrRr/view?usp=drive...
https://drive.google.com/file/d/170laJHIKG_BuVRFBynOslHUmDRRiaul8/view?usp=drive...
Personajes
EVA / Ilusión de EVA: Para los personajes tuve varios invonenientes debido al tiempo. Decidí usar un asset y modificarlo para darle un aspecto mas Sounds of Silence, para esto, mi shader me ayudó, ya que hacia oscura, incluso el alpha de los sprites. Esto me ayudó a "cambiar la forma" manteniendo el rig del modelo. Usé algunas de las animaciones e importé a Eva.
imagen: https://drive.google.com/file/d/1E5OKx1Onkkv0ZOMC3ROeSDmLWB2DupFK/view?usp=drive...
tuve que crear una nueva máquina de estados de animación personalizada.
Gato: Para Gato, no tuve la misma suerte. Tuve que importar un modelo 3D y animarlo usando Animation Riggin. Sin embargo el efecto final no fue tan adecuado, así que tuve que reducir considerablemente su participación en el juego debido a que no tenía tiempo de animarlo.
imagen: https://drive.google.com/file/d/187KETjCawqLjd32sKzz3rEg0Si0446Xm/view?usp=drive...
imagen: https://drive.google.com/file/d/1YFtIDXnCJ0LaEFaB7tSFa__RPP6pf1Tu/view?usp=drive...
Audio
Los audios los busqué todos en FreeSound.org, esto debido a que no confio en la librería de audio de Youtube, donde consideré buscar musica en primer lugar. No encontré ni usé varios de los audios de la lista, y no pude trabajarlos ni probarlos mucho debido al tiempo.
Conclusión
Espero estos conocimientos adquiridos en esta experiencia les den muchas ideas de desarrollo! Mi perfil no es de artista ni sonidista, soy arquitecto de software, pero me divertí mucho realizando este, mi primer Jam. Si necesitan ayuda o quieren que les comparta algun componente no duden en escribirme.
AUTOMATIC TRANSLATION
Hello, I will write to you about a more detailed process that I managed to capture in the development of this game. I couldn't make a more detailed record due to time, but I hope it can be useful to someone or learn how to do something.
I took 5 of the 10 days building an ideation document and a Game Design Document. In this document I outlined all the assets to be used, mechanics and style of the game. Consult this document in this Dev Log or directly here. Note: I am currently working on Unity Component Oriented Programming, so you will see references to this architecture.
MICROPHONE MECHANICS
With this document I was able to know that the main mechanic of Sounds of Silence is the use of the microphone. I didn't know if it was possible to implement it so it was the first thing that was done. It was made as a controller that responded to unity events to which canvas elements were assigned that had another component that changed its scale according to the float delivered by the microphone.
video: https://drive.google.com/file/d/1x0aiJUMazU7M_8Igjacb1lY5gw7_sCJH/view?usp=drive...
CHARACTER CONTROLLER
Then we worked on the character controller. Basic movements, jumping and the interaction with the E key. The Axis was used to determine horizontal and vertical actions.
video: https://drive.google.com/file/d/15hIAmKAY4JYu8U8xf4o1GC3Nx8uAsm7B/view?usp=drive...
COMPONENTS
Finally, components from my library were created and imported. Here we highlight a component that generates fade to black transitions, key components for the development such as one that controls the enable and disable of the GOs by events.
SCRIPTABLE OBJECTS
Using the power of scriptable objects (which are like assets that store data) these interesting structures were created:
GameEvents (observer pattern): When enabling a GO, the GameEventListener component is added to which a previously created Scriptable Object of type GameEvent and a unity event are assigned. The event will be added in an array of the scriptable and can be invoked from anywhere in the game with the reference to the asset. This functionality was used a lot in the construction of Sound of Silence!
Audios: I created a Scriptable that stores audios, their information and channels (Sfx and Music). This way I could play the audio from events without needing to have an Audio Source or an Audio Manager in my scene.
Language: All the texts in Sounds of Silence are in scriptable Objects that store the texts for each language. Changing the language from the button will change the texts throughout the game.
video: https://drive.google.com/file/d/1-l-EWo8XLysuE7fpz3mx-3juDAI-AgVX/view?usp=drive...
Shaders
For the aesthetics I wanted to use unity light in real time. For this reason, I had to create a shader that correctly received this lighting, and also, for the silhouettes, another shader that would show the sprites completely black or white even receiving light.
imagen: https://drive.google.com/file/d/1zBJC-9GAmZNh1E5EVqcLw36TqsIVTwMD/view?usp=drive...
imagen: https://drive.google.com/file/d/1ETVg_vOwTaoYgqCn5_XRYbRD3WnBmM3J/view?usp=drive...
imagen: https://drive.google.com/file/d/1Uy10HSj_u1JtAsvPTiVeH7VJVbsaKvQT/view?usp=drive...
imagen: https://drive.google.com/file/d/1E7QHy82r9OfSKdAxe2KST6n-JJNE9e00/view?usp=drive...
Scenario
Layers were created for the scenario and placed in different positions on the z axis. This would facilitate the paralax effect when moving.
imagen: https://drive.google.com/file/d/1nFKEwq-VKcsOv4HiIfx7uhlUWv9t1iNw/view?usp=drive...
Art
Art work began (it lasted several days). Since the aesthetic is based on my friend's drawings, I had to trace some. While others I had to invent to give life to the world.
https://drive.google.com/file/d/1J8SDQxR9_KazNm1NZaaw5rpgitFvF3Fh/view?usp=drive...
https://drive.google.com/file/d/1pFtx1FQbfSZnzze0Yba1sBFXjc-jpHLJ/view?usp=drive...
https://drive.google.com/file/d/1hk5r8kimWKWqW71gF_7AxIZOVct5u_3_/view?usp=drive...
https://drive.google.com/file/d/1mjtuWMMejJPo1zy17YAVjOM7-NecSv5r/view?usp=drive...
https://drive.google.com/file/d/1VoNvXfmf--O8otSi3rgMccb2nxQWCsSc/view?usp=drive...
When I started importing the mountains I noticed that I had to better define the color palette. That's why I used the free Adobe Color website to define complementary colors and contrast the clouds in the sky, finally painting the mountains a sand color.
https://drive.google.com/file/d/1Z0y5muuptgKeLSG_tHvZsF_D7HIbamRN/view?usp=drive...
https://drive.google.com/file/d/1VSfgVlRvdSZL-gvghVBhYLD1982xPrRr/view?usp=drive...
https://drive.google.com/file/d/170laJHIKG_BuVRFBynOslHUmDRRiaul8/view?usp=drive...
Characters
EVA / EVA Illusion: For the characters I had several inconveniences due to time. I decided to use an asset and modify it to give it a more Sounds of Silence appearance. For this, my shader helped me, since it made even the alpha of the sprites dark. This helped me "reshape" while maintaining the rig of the model. I used some of the animations and imported Eva.
imagen: https://drive.google.com/file/d/1E5OKx1Onkkv0ZOMC3ROeSDmLWB2DupFK/view?usp=drive...
I had to create a new custom animation state machine.
Cat: For Cat, I didn't have the same luck. I had to import a 3D model and animate it using Animation Riggin. However, the final effect was not so suitable, so I had to considerably reduce his participation in the game because I did not have time to animate him.
imagen: https://drive.google.com/file/d/187KETjCawqLjd32sKzz3rEg0Si0446Xm/view?usp=drive...
imagen: https://drive.google.com/file/d/1YFtIDXnCJ0LaEFaB7tSFa__RPP6pf1Tu/view?usp=drive...
Audio
I looked for all the audios on FreeSound.org, this is because I don't trust the YouTube audio library, where I considered searching for music in the first place. I didn't find or use several of the audios on the list, and I didn't get to work on or test them much due to time.
Conclusion
I hope this knowledge acquired in this experience gives you many development ideas! My profile is not that of an artist or sound engineer, I am a software architect, but I had a lot of fun making this, my first Jam. If you need help or want me to share any component, do not hesitate to write to me.
Get [English/Spanish] Sounds of Silence
[English/Spanish] Sounds of Silence
Eva's Aventure
Status | Prototype |
Author | Muse Coder |
Genre | Adventure |
Tags | 2D, Experimental, Fantasy, Horror, Singleplayer, Sprites, Unity |
Languages | English, Spanish; Latin America |
More posts
- Stop the project16 days ago
- DEV-LOGMay 07, 2024
Leave a comment
Log in with itch.io to leave a comment.