• Like
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Steampunk League dal concept al gioco by Siro Toracchio
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Steampunk League dal concept al gioco by Siro Toracchio

  • 403 views
Published

Il talk porrà una riflessione su pregi e difetti di uno dei motori di gioco più potenti al mondo, attraverso la testimonianza dello sviluppo del platform/shooter Steampunk League. Mentre verrà …

Il talk porrà una riflessione su pregi e difetti di uno dei motori di gioco più potenti al mondo, attraverso la testimonianza dello sviluppo del platform/shooter Steampunk League. Mentre verrà mostrato un riepilogo delle varie fasi di sviluppo del gioco, saranno messi in luce punti di forza e punti deboli del motore in questione, con commenti a codice specifico o questioni tecniche quali implementazioni di modelli, animazioni e packaging.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
403
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
6
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
  • 2. PROGRAMMAZIONE CON UDKTools:• UDK Editor• Unrealscript IDE• UnCodeXRequisiti:• Skills OOP• Tanto tempo!Responsabilità:• Creare classi di supporto per i GameDesigner• Risolvere problemi non risolvibilidall’Editor• Non solo scrivere codice, ma conosceretutte le principali funzionalitàdell’Engine• Comunicare con gli altri membri delTeam
  • 3. UNREALSCRIPTPregi:• Sintassi semplice eintuitiva• Potenza di un linguaggioad oggetti di altolivello• Peculiarità di linguaggicome C#, Java• Flessibilità nellaprogrammazione delGameplay• Supporto per gli stati• Fornisce un alto livellodi astrazioneDifetti:• UDK non offrestrumenti di sviluppoa cui unprogrammatore aoggetti è abituato• Scomodo per ilDebug• Poco conosciuto• Scarsadocumentazione• Script lenti rispettoal codice nativo
  • 4. PROGRAMMATORE VS ENGINE• Un’installazione completa di UDK fornisceun’elevatissima quantità di classi e API già pronte aessere utilizzate• Possibilità di utilizzare il codice sorgente e lerisorse di Unreal TournamentPer lo sviluppo del Gameplay bisogna avere le idee benchiare.Al programmatore sono aperte due strade:1 Riscrivere da capo solo il codice necessario permette di avere codice pulito ed efficiente, mapuò richiedere moltissimo tempo2 Estendere le proprie classi da quelle preesistentie aggiungere solo funzionalità specifiche  metodopiù rapido, ma necessita di una buona comprensionedel funzionamento delle classi dell’Engine.Moltissime funzionalità sono giàimplementate!!!
  • 5. CLASSI IN UNREAL ENGINE• Classi Object:• AnimNode• Component• GFxObject• SequenceObject• SoundCue• DamageType• Classi Actor:• Camera• Controller• Emitter• HUD• Inventory• Pawn• TriggerLe classi in UnrealScript interagiscono tramiteriferimenti (quello che accade in Java)Due categorie di classi differenti, che comportanodue Workflow diversi
  • 6. PROGRAMMAZIONE DEL GAMEPLAY• Progettazione diregole e meccanismidi Gameplay• Implementazione diun’IntelligenzaArtificialefunzionale• Gerarchie di classiper i contenuti:oggetti trigger, NPC,armi, classi disupporto, ecc.• Interazione tra iparticellari e iPawn
  • 7. PROGRAMMAZIONE DEL GAMEPLAY• Algoritmi di posizionamento e rotazione dellaTelecamera• Generazione di feedback per l’Utente finale(HUD)• Inventario e sistema di upgrade degli oggetti
  • 8. SUPPORTO ALLA PRODUZIONE DI ASSET• Unrealscript permette la creazione di variabili e proprietàmodificabili da Editor• Spesso si implementano funzionalità senza avere le risorse finali neipackage Necessità di utilizzo di placeholder per finalità di testing del codiceclass z_LeverTrigger extends Trigger;//Trigger event boolvar bool used;var bool bActive;//promptvar() const string Prompt;//skeletal componentvar(Lever) SkeletalMeshComponent LeverMesh;var(Lever) DynamicLightEnvironmentComponent LightEnvironment;var STPOutlineComponent OverlayComponent; //Glowing overlaycomponent• I level designer non vogliono saperecosa fa funzionare tutto, ma sonointeressati ad avere classi ecomponenti “out of the box” a cuiattaccare skin e materiali• E’ importante utilizzare un altolivello di astrazione, e affidarsi adelle classi “Template”  Si offreagli altri reparti di produzione altaflessibilità con modifiche minime alivello Software
  • 9. UNREALSCRIPT & PROPERTIESclass STP_Lovecraft extends STPPlayer;//Subclass specific functions…defaultproperties{//Lovecraft Specific PropertiesPortraitMaterial=MaterialSTP_Interface.HUD.Materials.Character_Default_PrtEnergy=150.0EnergyMax=150.0Health=150.0HealthMax=150.0EnergyRegenerationRatio=2.0 //Each secondHealthRegenerationRatio=1.0 //Each 0.5 seconds//Lovecraft Character Mesh and CollisionBegin Object Name=WPawnSkeletalMeshComponentSkeletalMesh=SkeletalMeshSTP_Char.Main.Lovecraft.Skel.Lovecraft_SkeletalAnimSets(0)=AnimSetSTP_Char.Main.Lovecraft.Logic.Lovecraft_AnimSet’AnimTreeTemplate=AnimTreeSTP_Char.Main.Lovecraft.Logic.Lovecraft_AnimTree’PhysicsAsset=PhysicsAssetSTP_Char.Main.Lovecraft.Logic.Lovecraft_Skeletal_Physicsscale = 0.7bEnableFullAnimWeightBodies = falseEnd ObjectMesh=WPawnSkeletalMeshComponentComponents.Add(WPawnSkeletalMeshComponent)Begin Object Name=CollisionCylinderCollisionRadius=+0020.000000CollisionHeight=+0060.000000End ObjectCylinderComponent=CollisionCylinder}
  • 10. FLOW DEL GIOCOCaricamento della mappa e impostazioni della tipologia di gioco.Vengono caricate le classi HelperGenerazione di tutti gli Actor di gioco e collocazione sulla mappaCreazione del Giocatore e del Controller di giocoSpawn del Giocatore e inizio del MatchGestione eventi generatilocalmente o da NPCGame FlowElaborazione degliInput del giocatoreRendering HUD Controllo NPC tramite IAGestione eventi temporali
  • 11. UNREAL KISMET• Permette la gestione di funzionalità specifiche diun livello di gioco• Eventi Cinematic• Eventi generati da trigger (e.g. Apertura porte)• I level designer non devono toccare il codice! Vengono loro forniti i mezzi per gestire eventidi gioco dall’Editor• E’ possibile la creazione di nodi Custom specificiper ogni necessità• I nodi custom vengono automaticamentericonosciuti da UDK (sottoclassi diSequenceObject)• Si possono far interagire nodi Kismet contutte le altre classi e funzioni già definite• Nodi collegabilitra loro:• Nodo evento• Nodo variabile• Nodo azione
  • 12. UNREAL KISMETclass HUDKismetSeqAct_MessageBox extends SeqAct_Latent;event Activated(){// Collega questo elemento allHUDlocal PlayerController c;c = GetWorldInfo().Game.GetALocalPlayerController();if(c != none){STPHud(c.MyHUD).Kismet_MessageBox = self;STPHud(c.MyHUD).Kismet_MessageBox.ForceClose =false;startTimer = GetWorldInfo().TimeDilation;}}
  • 13. FISICA E SIMULAZIONEPHYSICS ASSETSCLOTH SYSTEMFRACTURED MESHNvidia Apex TechnologyGenerata con PhysLabSemplicePossibilità di usare unatexture per definire ipunti di cedimento dellameshNvidia ApexTechnology/PhysX ClothingSystemSupporta Self collisionApex: setup in Maya/3dsApex: permette collisionetra cloth e rigid bodies delcharacterNvidia Apex TechnologyGenerata con PhysLabSemplicePossibilità di usare unatexture per definire i puntidi cedimento della mesh
  • 14. ESPORTAZIONE DEL GIOCODefault EngineDefault Game
  • 15. UNREAL FRONTEND
  • 16. CONTATTIhttp://www.steampunkleague.nethttp://www.dixidiasoft.com@dixidiasoft - @steampunkleagueMail: info@dixidiasoft.com