Overview of basic concepts and common blockers when programming for Unreal Engine 4. Presented at East Coast Unreal Engine DevCon 2014 in Montreal and Boston.
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)Gerke Max Preussner
Overview on creating code projects and plug-ins, and introduction on how to add new asset types to UE4 and customize their look & feel via asset actions and custom asset editors. The corresponding source code is available at https://headcrash.industries/vault/presentations/fmx/
Introductory slides for our live coding demonstration at GDC Europe on August 4th, 2015. We are creating a hover component in Blueprint and converting it to a C++ plug-in. The corresponding Visual Studio project files are available at https://headcrash.industries/vault/presentations/gdc-europe/
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)Gerke Max Preussner
Overview on creating code projects and plug-ins, and introduction on how to add new asset types to UE4 and customize their look & feel via asset actions and custom asset editors. The corresponding source code is available at https://headcrash.industries/vault/presentations/fmx/
Introductory slides for our live coding demonstration at GDC Europe on August 4th, 2015. We are creating a hover component in Blueprint and converting it to a C++ plug-in. The corresponding Visual Studio project files are available at https://headcrash.industries/vault/presentations/gdc-europe/
Overview of the basics of modules, plug-ins and projects in UE4, and a deep dive into integrating third-party dependencies. Presented at MIGS 2016 in Montreal.
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionGerke Max Preussner
Overview of the Slate user interface framework and low-level UI capabilities in Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersGerke Max Preussner
Overview of basic concepts and common blockers when programming for Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
A high-level overview of Unreal Engine 4, its game framework, the Slate user interface library, Unreal Motion Graphics, and Editor and Engine extensibility. Presented at GDC Europe in Cologne, Germany.
Also includes bonus slides on concurrency and parallelism features, general tips for programmers and Epic's build and automation infrastructure.
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & InfrastructureGerke Max Preussner
Overview of build tools, build automation, source code management and automated testing infrastructure at Epic Games. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...Gerke Max Preussner
Overview of the Unreal Motion Graphics (UMG) framework in Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
2D Endless Runner in Unity for Mobile - GDG DevFest Istanbul 2014Murat Gürel
This talk will cover technical design choices, tips & tricks for creating an endless runner platformer for Android & iOS in Unity, with real examples from our own game Evliya Celebi: Olumsuzluk Suyu, which include: character controls, animations & state machine, level design & generation, performance optimisations, gui elements, cross-platform design, level editor.
A presentation on the Unreal Engine, a game engine used for developing games for various platforms like PC, PS4, Xbox1, etc.
For more visit: http://paradoxland.com and http://funfactsabout.net
COMP 4026 Advanced HCI lecture 6 on OpenFrameworks and Google's Project Soli. Taught by Mark Billinghurst at the University of South Australia on August 25th 2016.
Overview of the basics of modules, plug-ins and projects in UE4, and a deep dive into integrating third-party dependencies. Presented at MIGS 2016 in Montreal.
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionGerke Max Preussner
Overview of the Slate user interface framework and low-level UI capabilities in Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersGerke Max Preussner
Overview of basic concepts and common blockers when programming for Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
A high-level overview of Unreal Engine 4, its game framework, the Slate user interface library, Unreal Motion Graphics, and Editor and Engine extensibility. Presented at GDC Europe in Cologne, Germany.
Also includes bonus slides on concurrency and parallelism features, general tips for programmers and Epic's build and automation infrastructure.
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & InfrastructureGerke Max Preussner
Overview of build tools, build automation, source code management and automated testing infrastructure at Epic Games. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...Gerke Max Preussner
Overview of the Unreal Motion Graphics (UMG) framework in Unreal Engine 4. Presented at West Coast Unreal Engine DevCon 2014 in San Francisco and Seattle.
2D Endless Runner in Unity for Mobile - GDG DevFest Istanbul 2014Murat Gürel
This talk will cover technical design choices, tips & tricks for creating an endless runner platformer for Android & iOS in Unity, with real examples from our own game Evliya Celebi: Olumsuzluk Suyu, which include: character controls, animations & state machine, level design & generation, performance optimisations, gui elements, cross-platform design, level editor.
A presentation on the Unreal Engine, a game engine used for developing games for various platforms like PC, PS4, Xbox1, etc.
For more visit: http://paradoxland.com and http://funfactsabout.net
COMP 4026 Advanced HCI lecture 6 on OpenFrameworks and Google's Project Soli. Taught by Mark Billinghurst at the University of South Australia on August 25th 2016.
0507 057 01 98 * Adana Çukurova Klima Servisleri, Adana Çukurova Klima Servisi, Adana Çukurova Klima Servisleri, Arçelik Klima Servisi Adana Çukurova, Beko Klima Servisi Adana Çukurova, Demirdöküm Klima Servisi Adana Çukurova, Vestel Klima Servisi Adana Çukurova, Aeg Klima Servisi Adana Çukurova, Bosch Klima Servisi Adana Çukurova, Ariston Klima Servisi Adana Çukurova, Samsung Klima Servisi Adana Çukurova, Siemens Klima Servisi Adana Çukurova, Profilo Klima Servisi Adana Çukurova, Fujitsu Klima Servisi Adana Çukurova, Baymak Klima Servisi Adana Çukurova, Sharp Klima Servisi Adana Çukurova, Mitsubishi Klima Servisi Adana Çukurova, Alaska Klima Servisi Adana Çukurova, Aura Klima Servisi Adana Çukurova, Adana Çukurova Klima Servisleri, Alarko Klima Servisi Adana Çukurova
A broad introduction to Java.
What is Java and where is it used
Programming Languages in the web development
What is Java and where is it used
OOP PRINCIPLES
JAVA SE, JRE, JDK
IDE’s
Where Java used in the “Real World”
A short introduction to the more advanced python and programming in general. Intended for users that has already learned the basic coding skills but want to have a rapid tour of more in-depth capacities offered by Python and some general programming background.
Execrices are available at: https://github.com/chiffa/Intermediate_Python_programming
One Shellcode to Rule Them All: Cross-Platform ExploitationQuinn Wilton
As the internet of things becomes less a buzzword, and more a reality, we're noticing that it's growing increasingly common to see embedded software which runs across different architectures -whether that's the same router firmware running across different models, or the operating system for a smart TV being used by different manufacturers. In a world where even your toaster might have internet access, we suspect that the ability to write cross-platform shellcode is going transition from being a merely neat trick, to a viable tool for attackers.
Writing cross-platform shellcode is tough, but there's a few techniques you can use to simplify the problem. We discuss one such method, which we used to great success during the DEFCON CTF qualifiers this year.
Presented by Tinfoil Security founder Michael Borohovski and engineer Shane Wilton at Secuinside 2014, in Seoul.
https://www.tinfoilsecurity.com/blog/cross-platform-exploitation
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
Understanding Nidhi Software Pricing: A Quick Guide 🌟
Choosing the right software is vital for Nidhi companies to streamline operations. Our latest presentation covers Nidhi software pricing, key factors, costs, and negotiation tips.
📊 What You’ll Learn:
Key factors influencing Nidhi software price
Understanding the true cost beyond the initial price
Tips for negotiating the best deal
Affordable and customizable pricing options with Vector Nidhi Software
🔗 Learn more at: www.vectornidhisoftware.com/software-for-nidhi-company/
#NidhiSoftwarePrice #NidhiSoftware #VectorNidhi
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
1. Programming in UE4
A Quick Orientation for Coders
Gerke Max Preussner
max.preussner@epicgames.com
2. 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
3. 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
4. Programming
Is Awesome
Sucks
But…
Don’t get discouraged!
• If it was easy, a monkey could do it!
• Don’t be afraid of programming languages
• Don’t 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
5. 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. Don’t 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/
6. 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
13. 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!
14. 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
15. Unrealisms
Type Names
UObjects
Basic Types
Strings
Macros
// Example (omitting some more advanced details)
USTRUCT() // magic!
struct FVector2D
{
UPROPERTY() // magic!
float X;
UPROPERTY() // magic!
float Y;
UFUNCTION () // magic!
float GetLength() const;
};
16. Unrealisms
Type Names
UObjects
Basic Types
Strings
Macros
Fundamental Types
• We don’t use C++ integer types (char, short, int, long, etc.)
• Custom typedef’s 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
17. 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…
18. 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
19. 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”);
22. 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
23. 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
24. Questions?
Documentation, Tutorials and Help at:
• AnswerHub:
• Engine Documentation:
• Official Forums:
• Community Wiki:
• YouTube Videos:
• Community IRC:
Unreal Engine 4 Roadmap
• lmgtfy.com/?q=Unreal+engine+Trello+
http://answers.unrealengine.com
http://docs.unrealengine.com
http://forums.unrealengine.com
http://wiki.unrealengine.com
http://www.youtube.com/user/UnrealDevelopmentKit
#unrealengine on FreeNode
Editor's Notes
*** Prepared and presented by Gerke Max Preussner for East Coast MiniDevCon 2014, November 12-13th
Hi, my name is Max. I work as a Sr. Engine Programmer at Epic Games and would like to give you a quick introduction to programming in Unreal Engine 4.
Who in the audience is a programmer?
Who thinks that programming is awesome?
Yes, programming is awesome…
… because it empowers you to create really cool things from the comfort of your armchair, and to make other people’s life better, or at least more entertaining.
Programming also really sucks… because all programmers are crazy!
Who read Peter Welch’s blog post “Programming Sucks”?
It is the most accurate description of what it is like to be a programmer and work in a programming team.
Welch argues that all programming teams are composed by and of crazy people. He also describes how most programmers start writing perfect little snowflakes, and on Friday they are told that six hundred more snowflakes are needed by next Tuesday. And then a lot of sketchy code gets dumped into a pile of snow that quickly melts together, and some of it turns yellow because a cat peed on it.
All large teams end up working this way, and Epic is no exception. We, too, are crazy – perhaps in a good way, or at least with good intentions. We are successful, because we have more snowflakes than others, and the remaining pile is split into manageable parts, and the yellow snow is hidden, because someone leaned a Picasso against it.
Who thinks that C++ is awesome?
C++ also sucks… but so does every other programming language! They all suck, just in different ways. Most of the time it is because we are trying to use them in ways they were not designed for, and there is no language that solves all software engineering problems well.
But do not despair!
I will quickly show you a few things to get up and running with Unreal and make your life easier.
By the way, we have really great documentation on our website for getting you started, so I won’t go into too much detail.
After installing UE4 you can go to GitHub and download the latest source code.
Don’t forget to download and install the required dependencies (ZIP files) as well (instructions are on the GitHub page).
We currently support development on Windows and MacOS, and there is also preliminary support for Linux.
If you work in Visual Studio we highly recommend installing our UnrealVS plug-in.
Now, let’s start with some of the most common blockers for programmers just starting with Unreal Engine.
The first thing that throws off a lot of people is that compilation is not actually performed by Visual Studio or Xcode, but by our Unreal Build Tool.
Visual Studio and XCode solutions are only generated for your convenience. We do this so that we can support different IDEs.
In combination with Unreal Header Tool, it also performs a lot of code pre-processing.
I will talk about this in more detail in another presentation later today.
UBT uses special C# files (*.Build.cs and *.Target.cs) that you create inside your module directories to figure out what it needs to do.
Here you can see the build and target rules files for QAGame, a special game that our QA team uses for internal testing.
Another little known feature of UBT is the ability to generate dependency graph data that can be visualized.
Here is a screenshot of a JavaScript based visualizer that shows a section of our code base.
The full source code for all three tools is included with the Engine.
You can find it in the Engine’s “Programs” directory on GitHub.
Besides UBT and UHT there is also UAT (Unreal Automation Tool), which is used for packaging, launching and deploying your projects.
By now you are probably aware of our generous use of acronyms.
I already mentioned UBT, UHT and UAT, and there are many others.
Don’t worry, you will quickly learn and get used to all of them.
We also use code names for some of our tools, and you may stumble upon them in our documentation.
The names are often chosen by the developers themselves.
For example, Cascade is our particle system editor.
It will soon be replaced with a completely rewritten version that is code named Niagara.
Swarm is a C# program that allows for distributing expensive work to other computers on your network.
It is currently only used by Lightmass and will soon be rewritten C++.
If you have experience writing your own little game from scratch, you may be tempted to locate our Engine’s main entry point in an attempt to learn something about how it all works.
This is the wrong way to get started. You cannot possibly learn anything useful from this, because most of the code you will use on a daily basis is on a much higher conceptual layer… with about two million lines of other stuff in between.
Read and watch our programming tutorials instead!
You will notice that we use prefixes for all our types, and there is no logical explanation for it.
The story goes that Tim Sweeney, when he started working on Unreal Engine in his Garage, added FVector for 3D vectors with floating point components and a U-prefix for Unreal game classes.
When other programmers joined they assumed that these were naming conventions… and that’s how snowflakes turn into yellow snow.
We also use upper-case for all names in C++. It may really upset your OCD, but please don’t try to fight this convention as it will help keeping everything consistent.
It may take a while, but you will get used to it.
C++ is great for a lot of things, but it is also lacking useful features that are present in more modern programming languages, such as Java or C#.
Runtime reflection, garbage collection and automatic serialization are the most important ones.
We would still like to use those features, so we implemented them on top of C++ with the help of macros that will be parsed by Unreal Header Tool.
These special decorators will cause UHT to automatically generate all the glue code that is required to make this work.
Here is an example for how a C++ structure for 3D vectors may be marked up in this way.
From this, Unreal Header Tool will generate all the glue code, and you will most likely never have to see it.
All our fundamental types are declared in the Core module.
We have platform specific type definitions for numeric types and strings.
We don’t actually use the standard numeric types that are part of the C++ standard.
This allows us to hide platform specific behavior of fundamental types.
The Core module also contains many generic container types.
We also have an implementation for various kinds of event delegates…
There is also a library of smart pointer implementations.
The most common ones are shared pointers, which also come with thread-safe variants.
Shared pointers simplify the lifetime management of objects, and we use them often.
String types can be a bit confusing at first, because we distinguish between regular and localized string objects.
They each come with special macros for string literals.
We also have so called FNames, which store string values in a global hash table.
These are very heavily used in the UObject sub-system to identify classes, functions and properties.
Oh, and FNames are case-insensitive.
If you ever wondered why you can’t correct spelling errors in the Editor right now, that is the reason why.
And if you think that’s crazy… well… that’s because it is!
We also use macros for less complicated things, such as logging and assertions.
These are some macros you will likely encounter when working on your project.
We have an internal coding guidelines document that is not yet posted on the Wiki.
Since so many programmers from inside and outside Epic are involved, you will find some inconsistencies in style.
And, of course, choosing good names for modules, classes, functions and variables is by far the most difficult task for programmers, but also one of the most important ones.
We also try follow proper software design principles more often now.
You may already be familiar with some of them, such as KISS and YAGNI.
One of the most important, but less known object-oriented principle is SOLID.
[more details here, if time available]
We also use common patterns from Gang-Of-Four and Enterprise Integration Patterns.
Other methodologies we’re experimenting with are Domain-Driven Design, Test-Driven Development and Aspect Oriented Programming for cross-cutting concerns.
Those are all huge topics in themselves. I will have to talk about them another time.
Make sure to check out our extensive materials on the internet, all of which are available for free – even if you don’t have a subscription yet.
Any questions?