Engine Marketing Plan Template

Engine Marketing Plan Template

Programming in UE4 A Quick Orientation for Coders Gerke Max Preussner [email protected] Programming Is Awesome Sucks But Because you can: Create something from nothing Bring dead matter to life Improve the human condition

Impress your girl/boyfriend/cat Make a good living in the process Programming Is Awesome Sucks But Because: Programmers are crazy Programming languages & tools suck All code is bad and buggy There is never enough time to do it right You are always behind the curve

Peter Welch: http:// stilldrinking.org/programming-sucks Programming Is Awesome Sucks But Dont get discouraged! If it was easy, a monkey could do it! Dont be afraid of programming languages Dont get discouraged by complex code bases There are ways to make your life easier

Know your tools and keep learning Software Design and Architectural Patterns Coding Guidelines & Best Practices Transfer knowledge with your peers Getting Started Get All The Things! 1. Download and install Unreal Engine 4 2. Sync the latest code from GitHub (either Release or Master branch) 3. Dont forget to download & install the required dependencies! Tools: Windows: Visual Studio, UnrealVS, Visual Assist X (recommended) MacOS: Xcode Linux: Check the Wiki for latest instructions!

For everything else see: https://docs.unrealengine.com/latest/INT/Programming/QuickStart/ Common Blockers Compiling Acronyms Entry Point Compiling is handled through Unreal Build Tool (UBT) Solution/Projects in Visual Studio & Xcode are a lie! Pre-processes header files (UHT) Generates magic glue code

Invokes platform specific compilers Supports remote compiling, too Also generates IDE project files Build Rules Dependency Graph UBT, UHT, UAT Projects Common Blockers Compiling Acronyms Entry Point

Acronym Soup UBT Unreal Build Tool UHT Unreal Header Tool UAT Unreal Automation Tool UFE Unreal Frontend BP Blueprint CDO Class Default Object INI Text Based Configuration File etc. Common Blockers Compiling Acronyms

Entry Point and Code Names, too! Cascade Particle System Editing Tool

Cooking Process of optimizing game content Lightmass Pre-computed Global Illuminaton Matinee In-game Cinematics Tool Persona Animation Editing Tool PhAT Physics Asset Tool Swarm Distributed Computing Client etc. Common Blockers Compiling Acronyms Entry Point Where Is the Main Loop?

LaunchEngineLoop.cpp Its really complicated (and everybody hates it) Please dont bother with this start with our tutorials! Unrealisms Type Names UObjects Basic Types Strings Macros We Use Prefixes for All Types U UObject derrived class, i.e. UTexture

A AActor derrived class, i.e. AGameMode F All other classes and structs, i.e. FName, FVector T Template, i.e. TArray, TMap, TQueue I Interface class, i.e. ITransaction E Enumeration type, i.e. ESelectionMode b Boolean value, i.e. bEnabled Everything in Unreal is Pascal Case (Upper Camel Case) Function names and function parameters, too Even local and loop variables! Unrealisms Type Names UObjects Basic Types

Strings Macros UObjects Work Around Limitations in C++ Run-time reflection of class properties and functions Serialization from/to disk and over the network Garbage collection Meta data Also: Blueprint integration Decorate regular C++ Classes with Magic Macros UCLASS for class types USTRUCT for struct types UFUNCTION for class and struct member functions UPROPERTY for class and struct variables

Unrealisms Type Names UObjects Basic Types Strings Macros // Example (omitting some more advanced details) USTRUCT() // magic! struct FVector2D { UPROPERTY() // magic!

float X; UPROPERTY() float Y; // magic! UFUNCTION () // magic! float GetLength() const; }; Unrealisms Type Names UObjects Basic Types

Strings Macros Fundamental Types We dont use C++ integer types (char, short, int, long, etc.) Custom typedefs for ints & strings in GenericPlatform.h (int32, uint32, uint64, TCHAR, ANSICHAR etc.) Numeric type traits in NumericLimits.h Common Structures FBox, FColor, FGuid, FVariant, FVector, TBigInt, TRange And many more in Core module Unrealisms

Type Names UObjects Basic Types Strings Macros Containers TArray, TSparseArray Dynamic arrays TLinkedList, TDoubleLinkedList TMap Key-value hash table TQueue Lock free FIFO TSet Unordered set (without duplicates) And many more in Core module Delegates

Unicast and multicast delegates Also thread-safe variants Unrealisms Type Names UObjects Basic Types Strings Macros Smart Pointers TSharedPtr, TSharedRef for regular C++ objects TWeakPtr for regular C++ objects TWeakObjPtr for UObjects

TAutoPtr, TScopedPtr TUniquePtr Similar to boost:: & std:: implementations Also thread-safe variants Unrealisms Type Names UObjects Basic Types Strings Macros String Types FString Regular string

FText Localized string, used heavily in Slate UI FName String hash, used heavily in UObjects String Literals TEXT() Creates a regular string TEXT(Hello); LOCTEXT() Creates a localized string LOCTEXT(Namespace, Name, Hello); NSLOCTEXT() LOCTEXT with scoped namespace NSLOCTEXT(Name, Hello); Unrealisms Type Names UObjects Basic Types

Strings Macros FNames are case-insensitive! Cant rename misspelled names in the Editor (FIXED!) Cant name a C++ property Blast if one bLast exists Unrealisms Type Names UObjects Basic Types Strings Macros

Logging UE_LOG, also GLog->Logf() Assertions check(), checkSlow(), ensure() Localization LOCTEXT_NAMESPACE, LOCTEXT, etc. Slate (UI Framework) SLATE_BEGIN_ARGS, SLATE_ATTRIBUTE, etc. Best Practices Guidelines Principles Coding Guidelines

Posted on http://docs.unrealengine.com There are some inconsistencies in the code base If in doubt, follow existing style in current code file Naming Conventions Choose descriptive names that are as short as possible Also for local and loop variables! Avoid your own acronyms Best Practices Guidelines Principles General Principles

KISS, YAGNI Composition vs. inheritance Avoid tight coupling of code and modules Many trivial instead of few complicated components Design Patterns SOLID (especially S, O, L and I; DI is not elegant in C++) Hollywood Principle (especially for Slate & game code) GOF, EIP Methodologies DDD, TDD (we support unit tests), AOP Questions? Documentation, Tutorials and Help at: AnswerHub:

http://answers.unrealengine.com Engine Documentation: http://docs.unrealengine.com Official Forums: http://forums.unrealengine.com Community Wiki: http://wiki.unrealengine.com YouTube Videos: http://www.youtube.com/user/UnrealDevelopmentKit Community IRC: #unrealengine on FreeNode Unreal Engine 4 Roadmap lmgtfy.com/?q=Unreal+engine+Trello+

Recently Viewed Presentations

  • 1. What is Auditing?

    1. What is Auditing?

    Chapter 1. 1. Introduction - What is Auditing? Misunderstandings. Overview of auditing. Ultimate purpose of audit. To issue an opinion on the fairness of financial statements (and in some cases, on the client's internal control structure)
  • Management of Acute Overdose

    Management of Acute Overdose

    Ability to adsorb substances due to its high surface area. Offending agent(s) become trapped by the charcoal and are excreted in the feces ... Nomogram. Matthew-RumackNomogram ... allows for drug to be fully absorpbed and distributed throughout the body. Have...
  • Practical Skills and Techniques for the Transition to

    Practical Skills and Techniques for the Transition to

    EEO, ESAP, NGER. Energetics had a considerable influence on energy efficienct , particularly on management and communications issues. ... Company does encourage personal stands. acting as environmental advocate, balancing against cost.
  • FPGA Power Reduction Using Configurable Dual-Vdd

    FPGA Power Reduction Using Configurable Dual-Vdd

    Symbolic model order reduction is proposed accordingly [Shi:tcad'06] Prior Art The idea of symbolic model order reduction (SMOR) was first introduced in [Shi:tcad'06], which contains three different methods Symbolic isolation It first removes all the symbols from the circuits, and...
  • Navigating the Dialogue in 1 Corinthians 14:34-35

    Navigating the Dialogue in 1 Corinthians 14:34-35

    1 Corinthians 7:1-2 Now concerning the things about which you wrote, it is good for a man not to touch a woman. But because of immoralities, each man is to have his own wife, and each woman is to have...
  • 6. Light Scattering, Reflection, and Refraction

    6. Light Scattering, Reflection, and Refraction

    Obserwujemy kolor l dla konstruktywnej interferencji, gdy: L= m /2 Praktycznie m=1, gdyż dla wyższych wielokrotności rozdzielczość oka jest byt mała (bańki mydlane, warstwy oleju czy benzyny na kałużach.
  • Shakespeare's Comedies

    Shakespeare's Comedies

    Sir Andrew Aguecheek, Sir Toby Belch. Bottom is a clown in . Midsummer Night's Dream. Fools VS Clowns. Comedy And Elizabethan Society. Comedy is serious business, and does important work in a culture. Laughter is a way of coping with...
  • The Small Charity Sector Duncan Shrubsole, Director of

    The Small Charity Sector Duncan Shrubsole, Director of

    "The [commissioner] decided on "TUPE plus" for any staff transferring with the daycentres. Essentially this meant increasing salaries and benefits for staff in line with Council increases. They also wanted a no redundancy guarantee. They also wanted savings."