Comet Project: diari de desenvolupament

Benvinguts al PROJECTE COMET!

En aquest vídeo, us comparteixo les primeres etapes del prototip. Encara és rudimentari, però representa el principi de la meva visió per al que aquest projecte pot arribar a ser. En aquesta etapa del desenvolupament, estic completament centrat en crear un prototip funcional per provar la jugabilitat; encara no he treballat en els gràfics, ja que aquesta fase la reservo per al futur si el prototip resulta viable. Aquí intento mostrar-vos breument algunes funcionalitats bàsiques, incloent els braços de la nau dissenyats per abordar els escombraries espacials, tot operat amb el simple toc d'un botó. Això és només el començament, i queda molt per refinar i millorar.

...

Hola projecte "COMET"

Resulta que estic decidit a treure un joc i, quasi es podria dir que, perdre l'anterior va ser un cop de sort.

Com ja vaig esmentar en el meu post anterior, iniciaré un projecte més petit i, en aquest moment, em trobo en la seva fase de "pre-producció", que bàsicament consisteix en redactar el GDD (Game Design Document).

El GDD és el document que recull absolutament tot sobre el teu joc, des de la història, personatges, guió i idees generals fins al més mínim detall sobre la jugabilitat, IA d'enemics, disseny de nivells, art, música, etc. Fins i tot es poden detallar aspectes financers i de màrqueting del joc. Es considera un document "viu" ja que en ell s'ha de reflectir tot el nou que es va afegint al joc, així com els canvis que puguin sorgir respecte al que s'havia escrit originalment durant el desenvolupament.

...

Canvi de rumb: forçat?

Hola a tots,

La vida, amics meus, té un sentit de l'humor retorçat. I de vegades, l'univers sembla conspirar per recordar-te que, en aquest ball de codificació i desenvolupament, no sempre portes la batuta.

Heu estat seguint el progrés del meu últim projecte. Doncs bé, resulta que s'ha corromput. Sí, ho sé, sembla una mala broma, veritat? A més, la meva còpia de seguretat va decidir prendre unes vacances permanents en el pitjor moment possible, perquè, ja sabeu, per què no afegir una mica de sal a la ferida?

...

Sistema d'inventari - part 2

En aquest post, us mostraré com col·locar una interfície sobre la pantalla del joc. No obstant això, no entraré en detalls sobre com crear aquesta interfície d'usuari d'inventari. En un futur post, us mostraré com interactuar amb l'inventari. Per al meu prototip de joc, vull aconseguir alguna cosa simple, com això:

Força simple i lleig, però funcionarà per ara.Dibuixant la interfície

Per dibuixar la interfície, vaig crear dos Widgets Blueprints, puc crear un de nou a través del menú contextual en la carpeta de contingut.

...

Sistema d'inventari - part 1

El següent pas en el meu projecte serà crear un sistema d'inventari per al jugador i contenidors de emmagatzematge com ara calaixos. El sistema d'inventari tindrà tres components: el personatge del jugador, els objectes recollibles i l'inventari on es desen els objectes recollits.Component d'inventari

Per crear l'inventari, utilitzaré un Component d'Actor, un tipus especial de Blueprint que es pot adjuntar a qualsevol Actor i que pot afegir variables, funcions, interfícies, etc. No obstant, no pot afegir malles o components renderables.

El component tindrà tres variables importants:InventoryItems: una llista d'articles que s'han recollit i s'emmagatzemen a l'inventari.MaxSize: un enter que indica el nombre màxim d'articles que es poden emmagatzemar a l'inventari.ActualSize: un enter que indica el nombre d'articles actualment a l'inventari. Això s'utilitza per comprovar si es pot agafar un article.

...

Consells per ordenar Blueprints

Aquest es un post molt curt per compartir aquests interessants videos que poden ajudar-nos a entendre i treballar millor amb els nostres Blueprints.

En el meu últim post he explicat un difícil concepte de programació anomenat "Interfaces". Acabo de trobar aquest interessant video del canal de Youtube "Glass Hand Studios" que ho explica amb un exemple bàsic. Penso que pot ser mes clar seguir aquest tutorial que el meu post:

Glass Hand Studios - I Struggled With Blueprint Interfaces for Years!! (Unreal Engine 5)

...

Perqué son útils els Blueprints Interface per fer botons?

Per fer botons, he fet alguns Blueprints complexos amb molta lògica per aconseguir bons efectes i jugabilitat. En aquest vídeo de Youtube podeu veure el resultat: Botons - Vista prèvia de funcions

Per fer-los vaig fer una estructura d'herència similar a la que he fet amb els llums, així tinc les mateixes característiques de llum als meus botons: soroll, espurnes, llum, etc. No aniré pas a pas perquè els meus Blueprints de botons són molt complexos, però explicaré les idees generals sobre les "interfícies de Blueprints" que em permeten fer la interacció dels botons. PER QUÈ NECESSITO BLUEPRINT INTERFACES?

Ara tinc un nou problema: qualsevol botó del meu joc pot interactuar amb qualsevol altre objecte o objectes. Per exemple: un botó pot encendre o apagar un grup de llums a una habitació, activar un esdeveniment com girar una vegada una porta giratòria, etc.

...

Llums amb més prestacions

En la meva darrera publicació he creat un Blueprint base per fer llums en el meu joc anomenat BP_BaseLamp. Amb aquest llum base tinc un sistema d'il·luminació bàsic i ara necessito afegir algunes característiques que seran útils per millorar l'ambient del joc.

Necessito afegir principalment dues coses: Crear un so ambiental, com un brunzit elèctric. Fer alteracions de llum amb variacions d'intensitat per representar llums que funcionen malament.

Per a l'ambient de so, he afegit un component de so que es pot activar mitjançant una variable booleana pública. És part del Blueprint del llum base, de manera que puc establir un ambient de so diferent per a cada Blueprint de llum derivat amb un so predefinit. A més, podré establir un so diferent del predefinit a cada instància de llum.

...

Creant múltiples tipus de llum amb l'herencia de Blueprints

En la meva darrera publicació vaig parlar sobre la diferència entre fer servir Lumen o il·luminació tradicional i per què m'interessa l'opció tradicional.

A més, vaig crear un Blueprint de configuració d'escena per controlar el PostProcessVolume i canviar entre Lumen i la il·luminació tradicional usant l'editor Unreal Engine i dins del joc.

Ara aprofundiré en els meus Blueprints de llums per prendre algunes notes importants sobre l'herència i les instàncies dels components perquè hi ha alguns conceptes confusos que vull aclarir. HERÈNCIA

...

Il·luminació Lumen vs normal

Vaig començar a fer la meva sala de proves amb algunes habitacions i llums.

Primer vaig fer un Blueprint que tingui una llum funcional i vull activar-la o apagar-la quan ho necessiti, potser prement un botó o des d'un esdeveniment. Per aconseguir-ho, col·loco una malla de cub simple que sosté tota l'estructura i una malla d'esfera amb un material brillant especial que representarà la bombeta. Després col·loco un con de llum unit a l'esfera per fer la il·luminació que vull.

Sé que aquesta no és la malla més òptima, però només és per proves. A partir d'aquí faré un Blueprint principal per fer uns Blueprints fills que heretin les propietats principals i amb algunes opcions i malles específiques.

...

"Personalitzant" el component pawn sensing

Hola! Ha passat un mes des de la darrera publicació! Estava molt ocupat però finalment vaig poder trobar una mica de temps per al projecte.

Em vaig quedar encallat amb un petit detall amb la meva lògica de detecció del "Poison Drone": no puc girar només el cap del dron i fer que el component "pawn sensing" miri en la mateixa direcció que el cap.

Aquest és el dron mirant endavant, com pots veure el component de detecció també mira endavant:

...

Perseguint al jugador

Per fer el sentinella Poison Drone que persegueixi el jugador, en primer lloc, he creat un blueprint en què he afegit algunes peces del pack d'assets que he comprat, aquest pack d'assets té peces i materials interessants i em permet crear diferents prototips de drones pel meu joc.

Ja vaig ensenyar part d'aquest disseny al post anterior, ara ha quedat una cosa així. No m'interessa evolucionar més aquest disseny per ara ja que per ser un prototip ja em val:

L'ull vermell brillarà en la foscor, pretenc ajudar el jugador a localitzar el Poison Drone alhora que fer que sigui inquietant.

...

Disenyant el Poison Drone

En el joc hi haurà alguns sentinelles a la nau buscant destruir-te.

Durant l'atac, la IA principal activa tots els drons i robots per buscar i destruir els atacants, però durant els trets, la nau pateix greus danys i la IA perd la connexió amb les sentinelles. Aleshores, en Mark ha d'arreglar tot aquest embolic amb tots els drons i robots buscant-lo pensant que és un altre atacant.

La jugabilitat principal serà intentar evitar els sentinelles però, si tens objectes en el teu inventari, potser podries fer un parany per eliminar-los un per un. Aleshores, ara vull dissenyar un enemic simple.

...

Afegint animacions al personatge

Estava jugant amb els Animation Blueprint i vaig fer l'animació ajupida. Vaig adonar-me que encara tenia problemes amb algunes animacions que no s'adaptaven al 100% al Metahuman, així que em vaig prendre un descans per pensar què fer. Mentrestant, vaig estar jugant a Return to Monkey Island les darreres setmanes. Quin gran joc! Gràcies, Ron Gilbert!

Per accelerar la creació del meu prototip del joc, finalment, vaig decidir fer servir un retargeter en temps real sobre el meu Metahuman a l'Animation Blueprint usant com a base el maniquí d'Unreal 5. Després obtinc les animacions de la biblioteca i les transformo en animacions del maniquí d'Unreal 5 usant un retargeter del maniquí d'Unreal 4. El resultat és lluny de ser perfecte però ara funcionarà.

Aquest és el resultat amb l'animació d'ajupir-se:

...

Aplicant animacions del Marketplace sobre el Metahuman

Com vaig dir en el post anterior ara he provat amb animacions que puc trobar al Marketplace en comptes de gravar les meves pròpies. Vaig trobar un paquet d'animacions gratuït força interessant amb el que puc començar a construir el meu personatge per al prototip del joc. El problema ha estat que eren animacions creades per a l'esquelet d'Unreal Engine 4 i al aplicar-ho sobre el nou esquelet, s'han d'ajustar les animacions perquè el resultat és aquest:

Com es pot veure en aquesta animació generada al Retargeter el personatge camina amb els braços molt oberts i els dits deformats.

Per arreglar això cal seguir una sèrie de passos:

...

Live Link Face

Després d'estudiar les meves possibilitats actuals amb la captura de moviments he fet la mateixa investigació per a la captura facial.

És important ja que no és el mateix tenir un personatge que mou el cos però té la cara estàtica que tenir un personatge que té expressió facial mentre es mou.

Per exemple, aquí sota poso l'animació de Mark en posició d'espera. Veureu a l'esquerra el personatge sense expressió facial i a la dreta el mateix però amb una captura facial.

...

Recerca sobre MOCAP

Aquests dies he estat investigant sobre sistemes de captura de moviment per gravar animacions per al meu personatge. Com tinc a disposició un impressionant pressupost de 0€ i poc espai he buscat opcions tan econòmiques com sigui possible.

La meva idea era capturar animacions per seguir el desenvolupament del meu personatge, entre les quals necessito animacions de caminar, córrer, ajupir-se, prémer botons i crafteig d'objectes de l'inventari. Ara em trobo en una fase del desenvolupament inicial, el prototip, això implica que vull obtenir una base jugable per avaluar si la meva idea és divertida de jugar i m'he adonat que no és el millor moment per complicar el desenvolupament.

Així que he decidit que ara com ara compraré assets d'animació amb els quals crear el prototip del joc.

...

Dissenyant el protagonista

"Ell és en Mark, un tio normal cansat del seu treball perquè és dur i solitari. És l'enginyer encarregat del manteniment d'una nau de càrrega automàtica a l'espai i fa cinc mesos que és l'únic tripulant supervisant el trasllat de materials entre la Terra i l'estació Ark1 al punt de Lagrange L2."

Mark és el nom provisional que tindrà el protagonista durant el desenvolupament del joc ja que no tinc clar com anomenar-ho ara com ara. Per crear en Mark he fet servir la tecnologia Metahuman d'Epic, es tracta d'un creador d'humans semblant a un editor de personatges que podríem trobar en un vídeo joc com ara Mass Effect.

La meva intenció és importar el personatge a Unreal Engine i basar el desenvolupament usant aquest "metahumà", de manera que totes les animacions i la seva lògica aniran lligades a aquesta tecnologia. Segurament en un futur li faré canvis però per ara estic força satisfet amb el resultat que he obtingut ja que, al final, es veurà una mica lluny i em preocupen més altres aspectes com per exemple: com ho animaré.

...

Quin joc vull fer?

Tinc al cap fer un joc curt de supervivència de ciència ficció. No tinc clar la durada però per ara no crec que hagi de superar les 5 hores. Argument

El joc transcorrerà en un futur no gaire llunyà durant la construcció d'unes estacions espacials gegantines al punt deLagrange L2, prop de les restes del telescopi James Webb. Per aconseguir-ho s'usen enormes transports espacials comandats per una IA i amb una tripulació formada únicament per un tècnic de manteniment humà i, per evitar atacs i polissons, robots i drones sentinella. Al joc encarnarem el tècnic de manteniment en una d'aquestes naus de càrrega i, òbviament, alguna cosa surt malament.

Hi ha una explosió que causa greus danys a la nau i la IA que la governa perd el control de tots els sistemes i dels sentinelles que, per algun motiu, es queden programats de manera “recerca i eliminació”. El joc començarà en aquest punt i caldrà fer les reparacions necessàries i aconseguir portar la nau a bon port mentre sobrevivim als atacs dels robots sentinella.

...

Instal·lant Unreal Engine

El primer pas lògic és instal·lar Unreal Engine i començar a treballar. En aquest post descriurem breument com instal·lar el motor.

Abans de seguir voldria recalcar que tots els pantalles seran en anglès. Això és perquè és recomanable fer servir la versió en anglès del programari ja que no està del tot ben traduït a l'Espanyol i no té traducció al Català. A més, un altre motiu pel qual és aconsellable utilitzar Unreal en anglès és perquè els conceptes al món de la programació tendeixen a ser en anglès, per exemple: solem dir "shader" en lloc de "ombrejador" per referir-nos a la part del programari que dibuixa la pantalla.

...

Consells inicials

Abans de començar amb el meu projecte, fins i tot abans de començar a dissenyar com vull que sigui el meu joc, toca familiaritzar-se amb Unreal Engine.

Jo he estat aprenent el que he pogut en tutorials, cursos d'Udemy, etc. i voldria aconsellar recursos gratuïts on començar a aprendre a controlar de manera pràctica i fàcil Unreal.

Al ser recursos gratuïts són limitats però poden ser de molta utilitat ja que aquest programari és complex en un inici i és fàcil perdre's.

...

Per qué Unreal Engine?

Per què Unreal?

És una pregunta difícil de respondre...

Hi ha multitud de solucions i motors gràfics al mercat (Unity 3D, Godot, Game Maker, etc) i tots són bones opcions però no per a qualsevol projecte. Cal pensar en quin joc es vol fer i cercar l'opció que s'adapti millor a les necessitats del projecte que es vol crear. Sigui com sigui cal conèixer cadascuna de les opcions i es fa complicat o impossible poder tenir la certesa que hauràs triat bé.

...