@unpublished{upm58090, address = {Madrid, Espa{\~n}a}, note = {Unpublished}, year = {2020}, title = {Desarrollo y optimizaci{\'o}n de entorno 3D en Unity}, month = {January}, author = {Ramos Guti{\'e}rrez, Alberto}, abstract = {El planteamiento de este proyecto era el de dise{\~n}ar, crear y optimizar un entorno tridimensional, as{\'i} como un videojuego que sirva como prueba de concepto, con el motor gr{\'a}fico Unity, siempre teniendo muy presente la optimizaci{\'o}n de cada apartado del juego. Los distintos objetivos principales eran los de: hacer el dise{\~n}o del juego, crear el escenario donde tendr{\'i}a lugar el juego, escribir al menos un shader para aplicar a alg{\'u}n elemento del entorno y, finalmente, desarrollar el juego, que implica pero no consiste {\'u}nicamente en escribir una variedad de scripts que implementen la funcionalidad de diversos factores del juego. Tom{\'e} varios videojuegos existentes como referencia sobre los que he basado varios aspectos del juego, entre ellos la est{\'e}tica general, que he buscado lograr mediante el uso de recursos art{\'i}sticos ya creados y de un shader que modifica la est{\'e}tica de un elemento del entorno. Us{\'e} las herramientas de generaci{\'o}n de terreno de Unity para crear el entorno explorable por el personaje y lo rellen{\'e} de objetos para dotar al escenario de credibilidad. He aplicado t{\'e}cnicas de optimizaci{\'o}n a varios niveles: en el escenario se usan t{\'e}cnicas de renderizado dise{\~n}adas para quitar cargas de trabajo a la tarjeta gr{\'a}fica; en el c{\'o}digo he puesto gran {\'e}nfasis en realizar cach{\'e}s lo m{\'a}ximo posible, as{\'i} como de usar los algoritmos m{\'a}s apropiados para cada situaci{\'o}n. El grueso del proyecto, sin embargo, fue la realizaci{\'o}n de la l{\'o}gica del juego: escribir todo el c{\'o}digo en C\# entre los diversos scripts para los objetos del juego que tienen alguna funcionalidad. A pesar de estar terminado el proyecto con todos los objetivos cumplidos, hay muchas posibilidades de continuaci{\'o}n de trabajo en el futuro: extensi{\'o}n del entorno, optimizaci{\'o}n de los sistemas del juego ya establecidos y, sobre todo, la inclusi{\'o}n de nuevos sistemas para agrandar las posibilidades del juego.---ABSTRACT---The goal for this project was to design, make and optimize a 3D environment, as well as a videogame to serve as proof of concept, made in the Unity game engine, always keeping optimization in mind. The different objectives for my project were: design the game, build the environment where the game takes place, write at least one shader to apply to some element in the environment and develop the game itself, which consists in -among other things- creating the scripts to implement all the logic and functionalities in the game. I took some existing games as reference/inspiration for several aspects of the game, one of them being the aesthetic. I tried to accomplish this through the use of already made art assets and a custom made shader to modify the looks of one or more element/s in the environment. I used Unity's terrain tools to create the walkable environment and filled it with objects to give it credibility. I applied optimization techniques to various degrees: rendering techniques used by the environment so as not to draw unnecessary assets and reduce the graphic's card work load; also, in code, I've strived to use caching as much as possible, as well as the most appropriate algorithms for every situation. Lastly I developed all the logic for the game. Even though I finished the project and succeeded in accomplishing all objectives there's a lot of room for improvement and optimization of the already implemented game systems as well as other game systems to extend the possibilities of the game.}, url = {https://oa.upm.es/58090/} }