{"id":11,"date":"2010-04-29T18:50:24","date_gmt":"2010-04-29T18:50:24","guid":{"rendered":"http:\/\/www.tecn.upf.edu\/~jagenjo\/blog2\/?page_id=11"},"modified":"2022-05-26T11:48:13","modified_gmt":"2022-05-26T11:48:13","slug":"taller-de-jocs","status":"publish","type":"page","link":"https:\/\/tamats.com\/upf\/?page_id=11","title":{"rendered":"TJE"},"content":{"rendered":"<h3>Introducci\u00f3n<\/h3>\n<p>El taller trata sobre el desarrollo de un videojuego 3D en C++ sobre OpenGL comenzando de un esqueleto muy b\u00e1sico, usando los conceptos b\u00e1sicos del desarrollo de motores de juegos. Desde carga de texturas y modelos 3D, pasando por logica de juego y inteligencia artificial.<\/p>\n<p>La asignatura es una buena oportunidad para desarrollar una aplicaci\u00f3n compleja, donde poner en pr\u00e1ctica todos los conceptos de programaci\u00f3n orientada a objetos, patrones de dise\u00f1o, y metodologias de programaci\u00f3n eficientes y limpias.<\/p>\n<p>En anteriores edificiones se han hecho juegos de Tankes, de lucha de naves espaciales (estilo <a href=\"https:\/\/www.youtube.com\/watch?v=qtsO0fRnc2U\">Freespace<\/a>), de lucha de barcos (estilo <a href=\"http:\/\/www.youtube.com\/watch?v=rQm_gvvtSRc\">Battlestations Pacific<\/a>) y de lucha de aviones (estilo <a href=\"http:\/\/www.youtube.com\/watch?v=4bHkDdTJvK8\">Winds of Prey<\/a>).<\/p>\n<p><a href=\"https:\/\/discord.gg\/MMCtTUJ\">Server de Discord<\/a><\/p>\n<h3>Prerequisitos<\/h3>\n<p>Este es un listado de algunos de los conceptos que se asume los estudiantes estan familiarizados de otras asignaturas.<\/p>\n<ul>\n<li><a href=\"?p=78\">Programaci\u00f3n en C++<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1CWP-y5Vxx5DvjY4XQaQFD6H2e6EUqKsDjUURAS-FesE\/edit?usp=sharing\">Transformaciones y algebra<\/a>.<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/13crrSCPonJcxAjGaS5HJOat3MpE0lmEtqxeVr4tVLDs\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Camaras y proyecciones.<\/a><\/li>\n<\/ul>\n<h3>Semana 1-2: Practica 2D<\/h3>\n<p><a href=\"https:\/\/docs.google.com\/presentation\/d\/1n7VuEz0fCXQxNe2Tm851CtI2jzsnNLuSBTl69bpDoMc\/edit?usp=sharing\">Presentaci\u00f3n de Jocs Electronics<\/a><\/p>\n<p>En la primera pr\u00e1ctica crearemos un simple juego 2D.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/19rhV6orq_lp46PbJJcQXRaOOuZZMOKzRjqGzdEZvTvM\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener noreferrer\">Slides: How to make a game<\/a> [<a href=\"https:\/\/www.youtube.com\/watch?v=mrdnBZzJbu4\">Video<\/a>]<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1DDnMT9xI8eCIYbQvzmgPZxuWfv0o43DBaNrIPXaw1mQ\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener noreferrer\">Slides: Detalles t\u00e9cnicos sobre el framework y herramientas<\/a> [<a href=\"https:\/\/youtu.be\/NA6bsTIWaLs\">Video<\/a>]<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1IO75FA-25uWu1RbVl0kW_5uFB49djiHmQdlOcZEjNKI\/edit?usp=sharing\">T\u00e9cnicas de desarrollo<\/a><\/li>\n<li><a href=\"http:\/\/tamats.com\/upf\/uploads\/TJE2020_2D.zip\">Framework 2D<\/a> [<a href=\"https:\/\/github.com\/jagenjo\/TJE2D\">github<\/a>]<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/13vSNNdasNiMLXTdX_o6QMRsFswNCLo8Uq-9ebfsWON8\/edit?usp=sharing\">Enunciado practica 1<\/a><\/li>\n<li><a href=\"http:\/\/tamats.com\/apps\/texturetools\/\">Conversor de imagenes a TGA<\/a><\/li>\n<li><a href=\"https:\/\/tamats.com\/games\/rogue\/\">Editor de Tiles<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1hpbruQC5dquZPFv9svKiv-311HOlTZOJPonQ-NUnCWs\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener noreferrer\">Tools for creativity<\/a><\/li>\n<\/ul>\n<p>Requisitos Practica 1<\/p>\n<ul>\n<li>Resolution <span style=\"color: #faa;\">160&#215;120<\/span><\/li>\n<li>Control con cursores y dos botones m\u00e1ximo (salvo botones para salir del juego)<\/li>\n<li>Tiene que tener title screen<\/li>\n<li>Tema: <span style=\"color: #afa;\">JUNTOS<\/span><\/li>\n<li><span style=\"color: #afa;\">\u00a0<\/span><\/li>\n<\/ul>\n<p>La entrega sera el Jueves 23 a las 23:59 max a trav\u00e9s del aula global, y tendreis que presentar cada grupo el viernes 24.<\/p>\n<h3>Semana 3: Introduction to 3D<\/h3>\n<p><a href=\"http:\/\/tamats.com\/upf\/uploads\/TJE_framework_2020.zip\">Framework Practica 2 (3D)<\/a><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/present\/view?id=dg932qn8_14c4mhrmhp\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre OpenGL y programaci\u00f3n gr\u00e1fica.<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/19QrwvrXdfhUvAFzQ21yAIzt87fhQcgOhkHqSv016J90\/edit?usp=sharing\">Slides sobre cargar y pintar meshes (ASE)<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/present\/edit?id=0AR34fAMO9xh9ZGc5MzJxbjhfMjA0ZDNzam5mZGM\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre texturas<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1hqmh7-3YJHxMSh3HEAyryRUGEY47ybHanvx2cQF_1JQ\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Shaders<\/a><\/li>\n<li><a href=\"http:\/\/docs.google.com\/present\/view?id=dg932qn8_183fmdfxwgv\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre sobre Alpha y Blending<\/a> [<a href=\"http:\/\/andersriggelsen.dk\/glblendfunc.php\">Web para testear blends<\/a>]<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLImQaTpSAdsD88wprTConznD1OY1EfK_V\">Videos: Matematicas para game developers<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 4-5: Engine<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1Gv5guvpUfNE8uq5E6FhLckP9l0yjSWV75Prhjkpap7w\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Optimizar Render<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1Mc6aP0TGpJy1ZaLfDBP6WMKjZFs4wXjqtQBvkAlcF6s\/edit?usp=sharing\">Slides sobre C\u00f3mo estructurar una escena<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1tXqvlMiOntzy8m4kdFq-e1wIVOt6cTDqFmwRm7NvDZs\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre C\u00f3mo pintar un mundo<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1N96srmGujBXisAnwUYvglstJVDiNMx5XoHZh8pSzniw\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Gestores de recursos<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1hbVAFZu8OZCCESVeXnVvtyDcLtZmVZX-2ZQmQT_V8uo\/edit?usp=sharing\">Slides sobre Assets 3D<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1NeQs-iA9aHExJ_uyPQOzNfMXI_Or06-n2VZrWyre8No\/edit?usp=sharing\">Slides sobre Colisiones<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 6: Game Logic<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/11tqxfrwfnFwK20Azbak7DdqxoP13V1qduu0PwDPa91Y\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre F\u00edsicas<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 7: Characters<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1rs5eBEq3J30Ji3bT_-YazRTXbtmDlZ9EwA2Yqoj06a4\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Animaciones<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 8: AI + Gameplay<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1OXpkXbwzXsgTYeuaSl65XU-U4zVim3Sta8L2Ktx5axU\/edit?usp=sharing\">Slides sobre IA para juegos<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1GpnRVsN3vLcwFbc5lain0o4prxTHFzauKx-RYZkIOis\/edit?usp=sharing\">Slides sobre Scripting para juegos<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1idYZknXLLxhuwTKqLqZlxft3n_uBXVLTYg-37rSLs5s\/edit?usp=sharing\">Slides sobre GUI<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1xyPLlZYLVOeDsWV8zemMyNzYtRMtV9vvLDPyBpHUU7U\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Gestor de Balas<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 9: GUI + Audio<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1i0yU0LCAynl1co_vJ0pZn7lBk-ifS9vGUYKcAGW-7k8\/edit?usp=sharing\">Slides sobre Audio<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/14068ddiDYYA9Bd7kkzYG3KeD2JwCNlOXMBLZ8lt0cyI\/edit?usp=sharing\">Slides sobre Gameplay<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 10: Improving Graphics<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/present\/view?id=dg932qn8_211gr7qwdc8\">Slides sobre Sistemas de particulas<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1nU4fkAB7f1SDMb8nxgmfsosBXB8MX2Ql-OTQtUwyt0A\/edit?usp=sharing\">sobre iluminacion en shaders<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1J4e5VE8nk6ygY6N-GgFnq8tjVc170LeVL2ptzwtBEBg\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">Slides sobre Mejorar el render con Shaders<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1rWLOrToYGnK6cX3gn7wo3d_cNLPzsOslXeHYM45g7_4\/edit?usp=sharing\">Aesthetics in games<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Semana 12: Final touches<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1ZxDdcqJwoLZJTKZxLGI7RQaGO8Ej6EShLNw9LkEevc8\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">C\u00f3mo publicar el juego<\/a> (sobre deploy y testeo)<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1FllHMaIUgIYprMe7cROZWz4BBMF5GjknYlkKHgqnPcQ\/edit?usp=sharing\" target=\"_self\" rel=\"noopener noreferrer\">M\u00e1s all\u00e1 de JE<\/a> consejos para seguir creciendo<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Extra<\/h3>\n<ul>\n<li><a href=\"http:\/\/docs.google.com\/present\/view?id=dg932qn8_195r5zkwwcq\">Introducci\u00f3n al XML con TinyXML<\/a><\/li>\n<\/ul>\n<h3>C\u00f3digo<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.visualstudio.com\/es\/vs\/older-downloads\/\">Visual Studio 2015 Community<\/a> IDE gratuito solo para Windows<\/li>\n<li><a href=\"uploads\/src\/tutorial_glew_xcode.txt\">C\u00f3mo compilar con Glew en XCode<\/a><\/li>\n<li><a href=\"uploads\/src\/SDL_OpenGL_Application_template.zip\">SDL y XCode<\/a>: Template para XCode para compilar bajo OSX con SDL y OpenGL<\/li>\n<li><a href=\"http:\/\/www.un4seen.com\/\">Bass Lib<\/a>: Libreria para audio (<a href=\"uploads\/src\/tutorial_bass.txt\" target=\"_blank\" rel=\"noopener noreferrer\">tutorial de uso<\/a>)<\/li>\n<li><a href=\"uploads\/src\/trucos_shader.txt\">Shader Snippets<\/a>: peque\u00f1os fragmentos de codigo para shaders (incluye conversiones a polares).<\/li>\n<\/ul>\n<h3>Arte<\/h3>\n<p>Para descargar recursos para el juego (assets) visita la secci\u00f3n de <a href=\"?p=71\">recursos de arte<\/a>. Recuerda que tienes un enlace a la secci\u00f3n arriba de todo a la derecha de esta p\u00e1gina.<\/p>\n<h3>Entrega Practica Final<\/h3>\n<p><a href=\"https:\/\/docs.google.com\/presentation\/d\/1QbTnRdlok2amwS0w6tc8XJSt9OVIhpVNAhiogMQ-U3A\/edit?usp=sharing\">Enunciado sobre Entrega Final<\/a><\/p>\n<p>La fecha de entrega ser\u00e1 el ultimo dia de examenes, y la presentaci\u00f3n ser\u00e1 ese mismo dia por la tarde.<\/p>\n<p>Teneis que entregar a traves del aula global un zip que contenga todo siguiendo <a href=\"https:\/\/docs.google.com\/presentation\/d\/1ZxDdcqJwoLZJTKZxLGI7RQaGO8Ej6EShLNw9LkEevc8\/edit?usp=sharing\">la guia de deploy<\/a>, debe contener:<\/p>\n<h3>Enlaces externos<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/mbrukman\/awesome-gamedev\">awesome-gamedev<\/a> Repositorio con links a cientos de cosas (articulos, librerias, programas, etc)<\/li>\n<li>Curso online sobre <a href=\"http:\/\/ocw.mit.edu\/courses\/comparative-media-studies\/cms-608-game-design-spring-2008\/#highlights\">Game Design<\/a> del MIT<\/li>\n<li>Curso online sobre <a href=\"https:\/\/www.edx.org\/courses\/BerkeleyX\/CS184.1x\/2012_Fall\/about\">Computer Graphics<\/a> del MIT<\/li>\n<li>Tutorial sobre <a href=\"http:\/\/gafferongames.com\/game-physics\">fisica en videojuegos<\/a>, <a href=\"http:\/\/ai.eecs.umich.edu\/soar\/Classes\/494\/talks\/Lecture%205%20Basic%20Physics.pdf\">Slides sobre fisica en juegos<\/a>, <a href=\"http:\/\/ureddit.com\/class\/23541\/intro-to-2d-rigid-body-physics\">Curso sobre Rigid Body Physics en 2D<\/a>.<\/li>\n<li>Presentacion sobre <a href=\"http:\/\/et1337.github.io\/shaders\">Shaders, como funcionan.<\/a><\/li>\n<li><a href=\"https:\/\/simonschreibt.de\/game-art-tricks\/\">Gamedev-tricks<\/a>, listado de trucos de desarrollo usados en juegos<\/li>\n<li>Tutorial sobre <a href=\"http:\/\/www.arcsynthesis.org\/gltut\/\">OpenGL avanzado<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLW3Zl3wyJwWOpdhYedlD-yCB7WQoHf-My\">Math for game developers<\/a> Videos sobre mates utiles para juegos.<\/li>\n<li>Tutorial sobre <a href=\"http:\/\/gafferongames.com\/game-physics\/fix-your-timestep\/\">Fixed time step<\/a><\/li>\n<li>Mejora tus <a href=\"http:\/\/www.iguanademos.com\/Jare\/wp\/?p=2658\">matematicas<\/a> o <a href=\"http:\/\/www.essentialmath.com\/tutorial.htm\">Essential Maths for a game developer<\/a>.<\/li>\n<li>Videotutoriales sobre Design Patterns en videojuegos <a href=\"http:\/\/www.youtube.com\/playlist?list=PL8B19C3040F6381A2&amp;feature=plcp\">PatternCraft<\/a><\/li>\n<li><a href=\"http:\/\/www.stratos-ad.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Stratos-ad<\/a> comunidad hispana sobre desarrollo de juegos<\/li>\n<li><a href=\"http:\/\/www.gamedev.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">Gamedev.net<\/a> comunidad inglesa sobre desarrollo de juegos<\/li>\n<li><a href=\"http:\/\/www.tigsource.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">The Independent Games Source<\/a>, blog sobre juegos independientes (foro de desarrolladores)<\/li>\n<li><a href=\"https:\/\/docs.google.com\/presentation\/d\/1LQUMIld4SGoQVthnhT1scoA3k4Sg0as14G4NeSiSgFU\/edit#slide=id.p\" target=\"_blank\" rel=\"noopener noreferrer\">Slides sobre optimizar graficos en GPU<\/a><\/li>\n<li><a href=\"https:\/\/lospec.com\/pixel-art-tutorials\" target=\"_blank\" rel=\"noopener noreferrer\">Pixel art tutorials<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=SnpAAX9CkIc\">Video sobre programar sistemas y no escenas<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=AJdEqssNZ-U\">Video &#8220;The Art of Screenshake&#8221;<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=tu-Qe66AvtY\">Video &#8220;Juicing Your Cameras With Math&#8221;<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=GpsKrAipXm8\">Video &#8220;Math for Game Programmers&#8221;<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=d4EgbgTm0Bg\">Video &#8220;Quaternions&#8221;<\/a> muy bien explicado<\/li>\n<\/ul>\n<h3>Trabajos entregados en a\u00f1os anteriores<\/h3>\n<ul>\n<li><a href=\"http:\/\/www.youtube.com\/watch?v=13LS1_mbY3Q\" target=\"_blank\" rel=\"noopener noreferrer\">Blue wars<\/a> (2009)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=rsaGNGtDrBI\">Batallions of Steel<\/a> (2014)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=5ylQ7eUI_q4\" target=\"_blank\" rel=\"noopener noreferrer\">Star Battlezone<\/a> (2014)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=x13r9jsSBOc&amp;feature=youtu.be\" target=\"_blank\" rel=\"noopener noreferrer\">Coolspace<\/a> (2014)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=OhyQ5Sp-RJY\" target=\"_blank\" rel=\"noopener noreferrer\">Assault Birds<\/a> (2015)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=NFZj2OiY0lU\" target=\"_blank\" rel=\"noopener noreferrer\">Wing Commander<\/a> (2015)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=rWdYBulHmiE\" target=\"_blank\" rel=\"noopener noreferrer\">Love the Bomb<\/a> (2015)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=HkAlfuppsDA\" target=\"_blank\" rel=\"noopener noreferrer\">Fleet Sinker<\/a> (2015)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=vElmO8HjN0s\" target=\"_blank\" rel=\"noopener noreferrer\">Drift Space<\/a> (2016)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=CFIizXzfcC0\" target=\"_blank\" rel=\"noopener noreferrer\">IN THE SKY: Battle of Britain<\/a> (2017)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=_6WnI65Hftw\" target=\"_blank\" rel=\"noopener noreferrer\">SPACE THINGS<\/a> (2017)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=tVW-svvfsSI\" target=\"_blank\" rel=\"noopener noreferrer\">IronSky<\/a> (2018)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=To3HHiCDlrQ\">Village Escape<\/a> (2019)<\/li>\n<li><a href=\"https:\/\/youtu.be\/jjUYd92FbEo\">Island Escape<\/a> (2019)<\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=WnwV5CcM3_Y\">Neera<\/a> (2019)<\/li>\n<\/ul>\n<h3>Posts interesantes<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/SSYGEN\/blog\/issues\/31\">Lessons to learn from doing your engine<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=tGmnZdY5Y-E\">Data oriented game programming (optimization)<\/a><\/li>\n<li><a href=\"http:\/\/www.codergears.com\/Blog\/?p=1103\">Learning from the Doom3 Source Code<\/a><\/li>\n<li><a href=\"http:\/\/www.gamasutra.com\/view\/news\/249475\/More_dirty_coding_tricks_from_game_developers.php\">Dirty coding tricks from game developers<\/a><\/li>\n<li><a href=\"http:\/\/preshing.com\/20171218\/how-to-write-your-own-cpp-game-engine\/\">Build your 3D engine from scratch<\/a><\/li>\n<li><a href=\"http:\/\/www.gamasutra.com\/blogs\/ItayKeren\/20150511\/243083\/Scroll_Back_The_Theory_and_Practice_of_Cameras_in_SideScrollers.php\">Camaras en juegos con scrolling 2D<\/a><\/li>\n<li><a href=\"https:\/\/catlikecoding.com\/unity\/tutorials\/\" target=\"_blank\" rel=\"noopener noreferrer\">Tutoriales de muchas cosas sobre 3D<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=FPzuYWbnln4\" target=\"_blank\" rel=\"noopener noreferrer\">Glitch de Mario Land 2<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=exp1Yrxt50A\" target=\"_blank\" rel=\"noopener noreferrer\">Rendering water in videogames<\/a><\/li>\n<li><a href=\"http:\/\/martinf.dk\/jump\/Jumping_Thesis_Fasterholdt_09.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Tesis sobre el salto en los videojuegos<\/a><\/li>\n<\/ul>\n<h3>Librerias utiles<\/h3>\n<p>Si quereis seguir desarrollando aplicaciones gr\u00e1ficas aqu\u00ed hay un listado de librerias utiles para hacerlo:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/nothings\/stb\">STB libraries<\/a> librerias de un solo .h para cualquier cosa (cargar imagenes, voxelizar, pintar texto, etc).<\/li>\n<li><a href=\"uploads\/pathfinders.zip\">Pathfinders<\/a> libreria de un solo .h y .c para calculo de caminos.<\/li>\n<li><a href=\"https:\/\/github.com\/RandyGaul\/tinyheaders\">Tiny headers<\/a> otras librerias de un solo .h para audio, red y fisica 2D.<\/li>\n<li><a href=\"http:\/\/connect.creativelabs.com\/openal\/default.aspx\">OpenAL<\/a> o <a href=\"http:\/\/www.un4seen.com\/\">BASS<\/a> para el audio<\/li>\n<li><a href=\"http:\/\/www.grinninglizard.com\/tinyxml\/\">TinyXML<\/a> o <a href=\"http:\/\/www.digip.org\/jansson\/\">Jansson<\/a> (para parsear XMLs o JSON respectivamente)<\/li>\n<li><a href=\"http:\/\/icculus.org\/physfs\/\">PhysFS<\/a> para el sistema de ficheros virtual<\/li>\n<li><a href=\"http:\/\/libnoise.sourceforge.net\/\">libnoise<\/a> para generar perlin noise (util para generacion procedural).<\/li>\n<li><a href=\"http:\/\/openil.sourceforge.net\/\">OpenIL<\/a> para cargar imagenes.<\/li>\n<li><a href=\"https:\/\/github.com\/google\/corgi\/\">CORGI<\/a> para crear componentes y entidades en tu juego.<\/li>\n<li><a href=\"http:\/\/curl.haxx.se\/libcurl\/\">libcurl<\/a> y <a href=\"http:\/\/www.zoidcom.com\/\">zoidcom<\/a> para peticiones HTTP y realtime connections respectivamente.<\/li>\n<li><a href=\"http:\/\/www.lua.org\/\">LUA<\/a>, <a href=\"http:\/\/www.gmscript.com\/\">GameMonkey<\/a> o <a href=\"http:\/\/www.angelcode.com\/angelscript\/\">Angelscript<\/a> como motor de scripting<\/li>\n<\/ul>\n<h3>Ambientaci\u00f3n<\/h3>\n<ul>\n<li><a href=\"https:\/\/youtu.be\/goMon2M0ROM?t=567\">COD WW2<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=qP_-WUMi-nw\">Video sobre ataques antiaereos con FLAK (WW2)<\/a><\/li>\n<\/ul>\n<h3>Codigo Fuente de Juegos Originales<\/h3>\n<ul>\n<li><a href=\"https:\/\/github.com\/XProger\/OpenLara\">OpenLara (Tomb Raider)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/id-Software\/DOOM-3-BFG\/tree\/master\/doomclassic\/doom\">Doom 3<\/a><\/li>\n<li><a href=\"http:\/\/hg.icculus.org\/icculus\/lugaru\/file\/97b303e79826\/Source\">Lugaru<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/galaxyhaxz\/devilution\">Diablo<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/minetest\/minetest\/tree\/master\/src\">Minetest (Minecraft style)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/NoelFB\/Celeste\/blob\/master\/Source\/Player.cs\">El c\u00f3digo de la clase Player.cs del juego Celeste<\/a><\/li>\n<\/ul>\n<div class=\"legend\"><a href=\"?p=71\">Assets<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n El taller trata sobre el desarrollo de un videojuego 3D en C++ sobre OpenGL comenzando de un esqueleto muy b\u00e1sico, usando los conceptos b\u00e1sicos del desarrollo de motores de juegos. Desde carga de texturas y modelos 3D, pasando por logica de juego y inteligencia artificial. La asignatura es una buena oportunidad para desarrollar una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/pages\/11"}],"collection":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":69,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions"}],"predecessor-version":[{"id":879,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions\/879"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}