Serendipity by Design - IxD S. America 13Dave Malouf
I opened up the talks section of this great conference in Recife, BR in 2013.
The talk was talking about how design can use the powerful tools of art and it's close association to non-linear creativity and associative thinking by building the space and culture of the studio environment.
A few weeks ago I had the opportunity to deliver a talk at Shift in Split, Croatia.
Shift is a developer conference, so initially, I thought it would be entertaining to talk about what it’s like to work with an engineer, from a designers perspective. The working title of the talk was Things Engineers Hate About Working With (Me) a Designer.
I was going to share the mistakes I’ve made, and learned from, along the way. A manifesto of what not to do when working with an engineer. However, feedback included phrases like “it’s a bit tongue & cheek” and the best talks are ones that are “raw, honest and vulnerable.”
You don’t write code, but you’ve been successful in spite of it. The lines are blurring between design & engineering. Why not talk about how tools have helped bridge that gap?
There was something more interesting to talk about. I realized that I didn’t write code because I didn’t need to. For years I’d been spoiled, and to some extent enabled, by a handful of incredibly talented iOS engineers. The realization didn’t sit well with me.
I scrapped everything and went back to the drawing board.
Tools were my first introduction to a hobby that turned into a passion that has become an obsession
They have been steadily influencing and shaping me as a designer from the first time I sat in front of a computer in elementary school. I would not realize how much they’d impact my life until much much later.
Tools have had a massive influence on me and my work, but had they on others?
An introductory presentation about the Unity game engine given at GarageGeeks HQ in 2012, meant to bring programmers who have no game development experience up to speed with Unity
Serendipity by Design - IxD S. America 13Dave Malouf
I opened up the talks section of this great conference in Recife, BR in 2013.
The talk was talking about how design can use the powerful tools of art and it's close association to non-linear creativity and associative thinking by building the space and culture of the studio environment.
A few weeks ago I had the opportunity to deliver a talk at Shift in Split, Croatia.
Shift is a developer conference, so initially, I thought it would be entertaining to talk about what it’s like to work with an engineer, from a designers perspective. The working title of the talk was Things Engineers Hate About Working With (Me) a Designer.
I was going to share the mistakes I’ve made, and learned from, along the way. A manifesto of what not to do when working with an engineer. However, feedback included phrases like “it’s a bit tongue & cheek” and the best talks are ones that are “raw, honest and vulnerable.”
You don’t write code, but you’ve been successful in spite of it. The lines are blurring between design & engineering. Why not talk about how tools have helped bridge that gap?
There was something more interesting to talk about. I realized that I didn’t write code because I didn’t need to. For years I’d been spoiled, and to some extent enabled, by a handful of incredibly talented iOS engineers. The realization didn’t sit well with me.
I scrapped everything and went back to the drawing board.
Tools were my first introduction to a hobby that turned into a passion that has become an obsession
They have been steadily influencing and shaping me as a designer from the first time I sat in front of a computer in elementary school. I would not realize how much they’d impact my life until much much later.
Tools have had a massive influence on me and my work, but had they on others?
An introductory presentation about the Unity game engine given at GarageGeeks HQ in 2012, meant to bring programmers who have no game development experience up to speed with Unity
In today’s age, it is important to have a basic understanding of computer programming. Although not everyone will become a computer programmer as a result, it is helpful these days to understand how computers and various software applications run code behind the scenes; plus, troubleshooting esoteric messages becomes much easier with some computer programming essentials under your belt. Without a doubt, it can be difficult to teach coding skills, but if fun and engaging tools are introduced it won’t be too bad. Thinking like a programmer does involve problem solving, but it can enhance creative confidence and inventive learning. In this webinar:
• Learn the basics of some visual programming languages like Scratch, Hopscotch, App Inventor, Raptor and others.
• Understand basic code syntax to gain important mathematical, computational, and creative thinking concepts through playful learning!
• Discover alternative tools and applications to give people practice programming while having fun!
• Gain other programming ideas, computing devices, and apps to help children & young adults thrive in a world based on technology.
Disclaimer: the slide deck does not contain all the content, this was a mostly spoken/hands-on talk.
Code used in the talk: http://github.com/inequation/ggd
Video games are highly complex and indeterministic systems working closely to hardware. This means that sometimes the regular troubleshooting measure of setting up breakpoints just doesn't cut it.
How to filter out noise, when our breakpoint is hit dozens of thousands of times per second? Or if our bug, despite perfect reproduction rate, manifests itself in a different way each time? How to find the culprit overwriting our precious data?
This talk will present some interesting cases from the life of a game programmer along with tips and tricks to have up your sleeve when fighting them.
What does OOP stand for?
When Object Oriented Programming(OOP) is taught so extensively, do computer programmers, specifically within games development, realise what it's possibly doing to productivity and performance? I explain my own view from experience in personal projects and professional work.
This talk was given to the Edinburgh meet of IGDA Scotland, on 2011/07/27.
The Art of the Pitch Deck / Christopher Wulf (Those Awesome Guys) & Alan Dang...DevGAMM Conference
This presentation focuses on the key elements that need to be included if you are sending your pitch deck to a publisher or similar. It touches on the construction, content and more!
LESSON 1: INTRODUCTION TO PYTHON, VARIABLES, DNA CODING, AI
Introduction to Python, how to download (Python 3), Create your own Chat Bot. Introducing variables, sequence, programs, Alan Turing and Artificial Intelligence. Big ideas to discuss: DNA Coding and Intelligent design. Create apps which include the use of random number and item generation. Suggested videos on ‘Introducing Python’ and History of Computing. Learn about Mathematical and comparison operators and the importance of indentation in Python. Includes a suggested videos, ‘Big ideas’ discussion, and HW/research projects section.
Programming the Real World: Javascript for Makerspchristensen
Hardware is becoming easier to design and manufacture, approaching the ease of software. This presentation:
- takes you on a tour of the changes in hardware
- a crash course in building circuits
- teaches the basics of using and programming Arduino
- introduces Javascript libraries for controlling hardware and robots
- how to get involved with hardware projects
If you'd like me to present this or similar content at your event, please contact me: peter at pchristensen dot com
WORKSHOP: Making the World Easier with Interaction DesignCheryl Platz
An updated version of an Intro to Interaction Design workshop I've taught intermittently since 2012. Intended age level is middle to high school age students, but is also appropriate for adults curious about the field.
The first portion (excluding the optional heuristic review) can be taught, though tight, in approximately 90 minutes. With the optional second portion, allocate a minimum of 2 hours. More time allows for better discussion and perhaps expansion of the sketching into some flows. See the back of the deck for additional instructor notes.
Recommended materials:
Printer paper (~5 sheets per student minimum)
Pencils and erasers
I have delivered this workshop to over 500 students:
Amazon GirlsWhoCode Camp - 2015
Microsoft DigiGirlz Camp (Redmond) - 2012, 2013, 2014
UW's Dawgbytes Camp - 2012
For a blog post about the pilot sessions in 2012, as well as some examples from student sketches, see http://blog.cherylplatz.com/?p=181
To inquire about booking me to teach this workshop in your environment, email cheryl@cherylplatz.com.
Put the key stakeholders in the same room with an unlimited modelling surface, and some tricks, and you'll end up not only with a viable model, but also with skeleton for continuous improvement.
Game Republic - Getting the most from GDC and International Games EventsGame Republic
Heading to GDC, Gamescom or an international games event? Game Republic provides a short quick guide to getting the most out of the events, with links to "How To Pitch" to platform-holder Sony PlayStation and publisher Raw Fury.
In today’s age, it is important to have a basic understanding of computer programming. Although not everyone will become a computer programmer as a result, it is helpful these days to understand how computers and various software applications run code behind the scenes; plus, troubleshooting esoteric messages becomes much easier with some computer programming essentials under your belt. Without a doubt, it can be difficult to teach coding skills, but if fun and engaging tools are introduced it won’t be too bad. Thinking like a programmer does involve problem solving, but it can enhance creative confidence and inventive learning. In this webinar:
• Learn the basics of some visual programming languages like Scratch, Hopscotch, App Inventor, Raptor and others.
• Understand basic code syntax to gain important mathematical, computational, and creative thinking concepts through playful learning!
• Discover alternative tools and applications to give people practice programming while having fun!
• Gain other programming ideas, computing devices, and apps to help children & young adults thrive in a world based on technology.
Disclaimer: the slide deck does not contain all the content, this was a mostly spoken/hands-on talk.
Code used in the talk: http://github.com/inequation/ggd
Video games are highly complex and indeterministic systems working closely to hardware. This means that sometimes the regular troubleshooting measure of setting up breakpoints just doesn't cut it.
How to filter out noise, when our breakpoint is hit dozens of thousands of times per second? Or if our bug, despite perfect reproduction rate, manifests itself in a different way each time? How to find the culprit overwriting our precious data?
This talk will present some interesting cases from the life of a game programmer along with tips and tricks to have up your sleeve when fighting them.
What does OOP stand for?
When Object Oriented Programming(OOP) is taught so extensively, do computer programmers, specifically within games development, realise what it's possibly doing to productivity and performance? I explain my own view from experience in personal projects and professional work.
This talk was given to the Edinburgh meet of IGDA Scotland, on 2011/07/27.
The Art of the Pitch Deck / Christopher Wulf (Those Awesome Guys) & Alan Dang...DevGAMM Conference
This presentation focuses on the key elements that need to be included if you are sending your pitch deck to a publisher or similar. It touches on the construction, content and more!
LESSON 1: INTRODUCTION TO PYTHON, VARIABLES, DNA CODING, AI
Introduction to Python, how to download (Python 3), Create your own Chat Bot. Introducing variables, sequence, programs, Alan Turing and Artificial Intelligence. Big ideas to discuss: DNA Coding and Intelligent design. Create apps which include the use of random number and item generation. Suggested videos on ‘Introducing Python’ and History of Computing. Learn about Mathematical and comparison operators and the importance of indentation in Python. Includes a suggested videos, ‘Big ideas’ discussion, and HW/research projects section.
Programming the Real World: Javascript for Makerspchristensen
Hardware is becoming easier to design and manufacture, approaching the ease of software. This presentation:
- takes you on a tour of the changes in hardware
- a crash course in building circuits
- teaches the basics of using and programming Arduino
- introduces Javascript libraries for controlling hardware and robots
- how to get involved with hardware projects
If you'd like me to present this or similar content at your event, please contact me: peter at pchristensen dot com
WORKSHOP: Making the World Easier with Interaction DesignCheryl Platz
An updated version of an Intro to Interaction Design workshop I've taught intermittently since 2012. Intended age level is middle to high school age students, but is also appropriate for adults curious about the field.
The first portion (excluding the optional heuristic review) can be taught, though tight, in approximately 90 minutes. With the optional second portion, allocate a minimum of 2 hours. More time allows for better discussion and perhaps expansion of the sketching into some flows. See the back of the deck for additional instructor notes.
Recommended materials:
Printer paper (~5 sheets per student minimum)
Pencils and erasers
I have delivered this workshop to over 500 students:
Amazon GirlsWhoCode Camp - 2015
Microsoft DigiGirlz Camp (Redmond) - 2012, 2013, 2014
UW's Dawgbytes Camp - 2012
For a blog post about the pilot sessions in 2012, as well as some examples from student sketches, see http://blog.cherylplatz.com/?p=181
To inquire about booking me to teach this workshop in your environment, email cheryl@cherylplatz.com.
Put the key stakeholders in the same room with an unlimited modelling surface, and some tricks, and you'll end up not only with a viable model, but also with skeleton for continuous improvement.
Game Republic - Getting the most from GDC and International Games EventsGame Republic
Heading to GDC, Gamescom or an international games event? Game Republic provides a short quick guide to getting the most out of the events, with links to "How To Pitch" to platform-holder Sony PlayStation and publisher Raw Fury.
Game Republic 29/3/22 - BFI presentation Claiming Video Game Tax ReliefGame Republic
How to claim Video Game Tax Relief in the UK - including detailed info on passing the cultural test. From the Game Republic event held on 29th March 2022 at the National Videogame Museum in Sheffield.
XR Stories is a £15m investment in R&D for the Yorkshire & Humber screen industries cluster - this is a presentation looking at funding for games funding
Game Republic: Square Enix Collective - Pitch TipsGame Republic
After the Game Republic event in Leeds on 30th October 2019, speaker Teressa Wright, Producer at Square Enix Collective kindly gave us her slides afterwards. Great tips on pitching to publishers for game developers.
Creative Europe - Funding for Videogame DevelopmentGame Republic
The presentation from Francesca Walker, Creative Europe at the Game Republic event on 5th November 2014 at Sheffield Hallam University. Information on the €2.5m fund for games from Creative Europe.
Game Republic - Pollen VC 8th October 2014 presentationGame Republic
Côme Tremeau from Pollen VC and a presentation about the company's velocity capital for mobile games developers. From the Game Republic business networking event in Leeds on 8th October 2014.
Marketing for Creators - Fact From Myth (script)Game Republic
Leonie Manshanden, ex-Irrational Games Studio Director discusses the similarities and differences between triple-A and indie games marketing - from the GameHorizon Marketing Summit 2014, 26th September 2014. There are accompanying slides to these notes.
Marketing for Creators - Fact From Myth (slides)Game Republic
Leonie Manshanden, ex-Irrational Games Studio Director, discusses the similarities and differences between triple-A and indie games marketing - from the GameHorizon Marketing Summit 2014, 26th September 2014. There are companion notes to this presentation.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
5. UCLASS()
class COOPVR_API UCoopVr_BPLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
// Helper to get GFramenumber.
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "CoopVr")
static int32 GetGFrameNumber()
{
return GFrameNumber;
}
// Log out in any build - release included
UFUNCTION(BlueprintCallable, Category = "CoopVr")
static void CoopLog(const FString& Message);
};
A small amount of C++ for large benefits…
6. UCLASS()
class COOPVR_API UCoopVr_BPLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
// Helper to get GFramenumber.
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "CoopVr")
static int32 GetGFrameNumber()
{
return GFrameNumber;
}
// Log out in any build - release included
UFUNCTION(BlueprintCallable, Category = "CoopVr")
static void CoopLog(const FString& Message);
};
Always comment everything exposed to Blueprint
7. UCLASS()
class COOPVR_API UCoopVr_BPLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
// Helper to get GFramenumber.
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "CoopVr")
static int32 GetGFrameNumber()
{
return GFrameNumber;
}
// Log out in any build - release included
UFUNCTION(BlueprintCallable, Category = "CoopVr")
static void CoopLog(const FString& Message);
};
The Blueprint view…
8. UCLASS()
class COOPVR_API UCoopVr_BPLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
// Helper to get GFramenumber.
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "CoopVr")
static int32 GetGFrameNumber()
{
return GFrameNumber;
}
// Log out in any build - release included
UFUNCTION(BlueprintCallable, Category = "CoopVr")
static void CoopLog(const FString& Message);
};
Why expose these two functions?
9. UCLASS()
class COOPVR_API UCoopVr_BPLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
// Helper to get GFramenumber.
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "CoopVr")
static int32 GetGFrameNumber()
{
return GFrameNumber;
}
What about GetGFrameNumber?
[2023.02.27-08.53.42:724][178]LogToursCharacter: Verbose: Server_SetAvatarData BP_ToursVrCharacter_C_0 ->
[2023.02.27-08.53.42:894][184]CoopPlayfabAccountLog: OnGetPlayerStatisticsSuccess: Statistics retrieved.
20. Delay nodes are often a band-aid
When you feel the need for one….
Communicate! Comment, log…
For your future self and the team
21. Argh! It is lagging!
G O O D C O M M U N I C AT I O N R E Q U I R E S E V E RY O N E …
22. “The whole game lagged…”
“The avatar animation lagged, then restarted…”
“A snowball that was missing hit me…”
“That snowball I threw should have hit lagged…”
“The fireworks started and everything lagged...”
“I was waiting in the lobby for ages…”
“When we world hopped, it was laggy”
24. What does speaking producer mean?
Trying to communicate in a way that works
for the team as much as you can.
That often means the why of something
rather than the how.
26. Unreal Editor is the Ultimate Tool because..
• It is the shared starting where people work together.
• It gives a starting vocabulary for everyone to build from.
• But YOU all are the important part. People make games and make the tools.
• Communication is key.
• Communication is hard and something everyone has to keep working on. Always.
• Small, simple changes can add up to a big difference.
• Try to work keeping in mind others around the team and how they see your work.
• Things do not need to be perfect. But communicate, so the team knows if something is good
enough.
• Try out other areas. A little awareness of other disciplines goes a long way.
• Try to speak producer.
• Try not to be a gatekeeper.
I was tempted to make a bingo card…What we consider the ultimate tool isn’t on the slide. There is one feature on the slide that is key to the ultimate tool… but it isn’t the tool.
You.More specifically all the human beings that form your team.Unreal doesn’t make games or experiences.People do.
What Unreal does is provide a starting framework for people to work together.
Unreal, it’s editor and features can only go so far though. After that it is down to the people to create and maintain a shared understanding… which is what empowers everyone’s creativity
Here is a very small amount of C++.It is a blueprint function library with just two functions.Those two functions allow me to show how C++ programmers can be helpful to blueprinters… which then allows the blueprinters to be more helpful to the programmers.
There are 2 functions exposed to blueprint here.GetGFrameNumber and CoopLog.The C++ comment above each UFUNCTION is picked up by Unreal Header Tool to make the tooltip.
Here are some screen snips from Unreal editor overlaid.Note how CoopLog finds two functions, with different categories.It is easy to create nested catageories, but focus on always having that initial comment.There is a phrase the perfect is the enemy of the good.You don’t need perfect comments or names as long as you have somethingHaving something means the blueprinters on the team have something that can ask about.So long as there is some shared information that gives a foothold for conversations… where for example you can figure out better descriptions or names.
So I’ll tackle the second one first. CoopLogUnreal has Print Text node built in.In can print to the screen, or to the log (or both.).It includes colour and time options.It includes support lots of text formatting….But it doesn’t include an option to log out in a release build.So CoopLog fills that gap.For a very small amount of C++ work, it allows anyone to log out in a release build from anywhere in Blueprint
GFrameNumber is a core engine concept.It is a global counter that increases for every complete frame.Frames exist for the game thread… but also the render thread.It is used a lot C++ side for debugging issues between the game and other threads (mostly renderthread).In editor, Unreal does not display GFrameNumber. But in the text log file, it is show after the date/time, 3 digits wrapping at 999.A handful of lines of C++ code exposes it so Blueprint can log it out.
We’ve seen a couple of easy things for C++ to expose over to blueprint. Now we’re going to look from the blueprint side using a common problem – delay nodes.Delay nodes appear very handy. But the built in Unreal version has one limitation that can catch you out… plus two common use cases where they’re not always ideal.
If execution tries to start a delay while that delay node is already counting down… it just resets. The first call won’t continue execution past the delay node at all.Instead, you get one call after the delay time from the second call has run.
It is easy to add a version that logs out a warning if triggered again while it is counting down.I’ll not show the code, if you’re interested contact me later.Note how the delay node in the picture has a good comment. It’s good because it says why it is there, rather than just what.It’s not so good as it is a normal Unreal delay node… it’s a bug in Curatours.
Delay of 0.0 is commonly used, with the intent being next time this blueprint is run. The comment on the Coop Delay Frames is likely too small to read. It’s just clarifying the difference between frame and tick.Again the comment on the delay node saying WHY it is delaying, rather than saying “delay”.
Here I’m using both CoopLog and Get GFrameNumber that you saw earlier.After the delay runs it will log out that is has run, plus the frame number. That log will also be in shipping builds.So while first authoring the feature, it may be enough information for the person writing the blueprint to debug any issues.If they need help from a programmer though, there are two things that help out here.The Format in the format text node is explicit. That means copying it from a log into “Find in blueprints” is likely to find this spot.Then when they arrive… there is the clear why comment on the delay node.So it is about giving each other the best information you can to work together.Final quick note. This also shows some limitations….CoopLog doesn’t handle formatting itself, which means more complex blueprints.You need to unhook the execution when done with it. No verbosity
So the last common case is dealing with the Unreal Gameplay Framework.The Gameplay frame in Unreal does not guarantee what order things happen in.
So in BeginPlay for a Pawn for example, sometimes the PlayerState will be available, sometimes not.Casts are quite expensive, so while keeping references can cause it’s own issues it is often a good idea.But… you may need to retry in the future to allow for example, network replication to have come through.It isn’t just networked cases where things will be ready out of order. Pixel streaming for instance.This example isn’t perfect. It does work well enough and is using a Delay Node to retry, so is a decent real example.A few possible improvements would be….Comment the delay node as to why 0.2 seconds was picked.If the case fails, CoopLog an error instead. Going to the delay is just going to keep looping.
Here is an alternative that is often better.Using timers.Now this is real blueprint, so it is somewhat messy. I wanted to just find real, shipped examples for everything.Lets unpick it a little.
It logs out, then retries.The log is explicit enough that Find in Blueprints will find it. It also is clear that it is retrying, rather than everything being broken.
When it passes it logs out.The log will show if it retries and how many times.Then it will show it is ready, which can be seen in the log relative to other events.The time for the timer could be tuned by checking the logs to balance between retries and everything being ready.
The retry has used Set Timer by Event, which is about as compact as using a Delay node.You can get a time handle from that, which lets you track what is going on.Here, Timeout Set Avatar and Role is a longer running timer. 10 seconds as it happens.Internally, Unreal uses the LatentActionManager to make the Blueprint Delay node.Creating your own Delay / Retry effect using timers is very similar, but gives you more control in Blueprint if you need it.
So back to the meme.Delay nodes are often band aids.Put in and tweaked until things seem to work.On that machine.For that build.In that configuration, but maybe not when shipped.…and engine version.Timers can offer some more control, which becomes more helpful as things grow more complex.But the important part is the communication. Both to yourself and to the team.You’ve seen how programmers can document and expose some things to blueprint easily.You’ve seen how using those small extra capabilities can improve the communication, so a Blueprinter may find it easier to fix bugs in shipping builds... And if/when a programmer may help, the logs are more likely to have the information to help them get started, find where things happen in the blueprint etc.The examples are all from successfully shipped projects. Imperfections and all.
Bonus, skip if low on time, audience are asleep or have pitchforks ready.A phenomenon in video games where the game slows down.Lag is the term for when a perceived delay occurs between a player’s input and the reaction in-game. But ‘lag’ tends to be used as a cover-all term for a plethora of issues, like low frame rate, slow internet speeds or network problems.
What matters is communicating the issue so that there is shared understanding.It can be useful to setup a glossary for a project. That tends to help more for things that are specific concepts for a project.When anyone on the team reports something, try take the time to figure out it is. It may be obviously one thing to you, but that doesn’t mean everyone will understand a problem as that.You can and will be wrong too, assuming it is something else.If you search the internet for definitions of lag or lagging… a lot are network related, but you’ll also see framerate and other things.Perhaps the best definition for lagging is along the lines something felt off. Which is really valuable information.Things like recording video can help… being able to watch back what the other person experienced can help.Last point. This is not about building a perfect set of terms. Human beings are pattern matchers by nature. So once something has happened and been identified – “ah, the character rubber banded as the network was busy syncing after the world hop”Next time something similar happens, you may find things ignored assuming it must be the same thing. “ah, that must be the network is busy after the world hop”.The takeaway is that you will never have perfect communication and glossary across the team and that is okay. Try to foster listening to each other so that you catch all these cases where something felt off… rather than complaining because something wasn’t reported as exactly what you think it is….
There isn’t an exact definition for a producer. Or a programmer, or a blueprint designer.By speaking producer I simply mean trying to describe things in a way that is going to be understood across the whole team.“I’m adjusting the low and high tightness thresholds for velocity on the CoopNetTrans component on the snowball, though really CoopProjectileComponent would have been better”“Adjusting the snowball so it doesn’t wibble as much in flight, like we saw in the test yesterday”Communication is hard.Naming things is hard.That example hopefully shows which is going to make more sense around the team. But it is still a bit much for a task title.Try to have both these open, accessible descriptions with the technical specifics still captured, but there more for when people need them.
A lot of you may recognise this image.It is from Fallout 3: Broken Steel.The train was animated using a NPC wearing it as a hat.That simply meant that existing systems were able to create the train.A creative solution, using what was available.This kind of solution can often be perfectly fine. But it is the kind of thing that might cause performance issues if used on a larger scale.So it is a good example.Enough things were exposed to allow a creative solution. That is great.… just communicate it out, just in case there are other implications.That may mean another solution is needed later on, but it’ll be fine to prototype.You want to foster that will to experiment and allow happy accidents as Bob Ross put it…But you want to be a little careful to avoid dumping things on others. Everyone is in the project as a team… until people decide otherwise…