[Game] Programming I Didn t Learn In School

Similar documents
BUILD A STRONG RELATIONSHIP WITH YOUR JOB

IB Interview Guide: How to Walk Through Your Resume or CV as an Undergrad or Recent Grad

Getting Affiliates to Sell Your Stuff: What You Need To Know

CLICK HERE TO SUBSCRIBE

Hello, and welcome to The Global Innovation. Outlook Podcast Series, where IBM demonstrates the

The Senior Portrait Telechart

Mindful Communication In Code Reviews. By Amy Ciavolino, presenter notes are at the bottom.

Putting the Finishing Touches on Your April Round Application

Interviewing Techniques Part Two Program Transcript

HUSTLE YOUR WAY TO THE TOP

CLICK HERE TO SUBSCRIBE

EPISODE #8: GAINING AWARENESS OF YOUR THOUGHTS

CSE 125 Boot Camp. Or: How I Learned to Stop Worrying and Love The Lab

Resolving Managing Customer Complaints by the James Walker

Transcript of Interview with Studio Superstar Phi Nelson

CLASS OF 2012 END OF YEAR SURVEY COMMENTS

Become A Blogger Premium

Awesome Art. Creating a Winning Game Industry Art Portfolio. 1 of 6 1/8/13 12:18 PM. By Brent Fox

ABCD's To Building An Audience and Getting Noticed FAST: RR002

My sims 4 mods folder download

The Open University xto5w_59duu

InternetMarketingWithBarb.com

A GUIDE TO BETTER DRAWING

Dialog on Jargon. Say, Prof, can we bother you for a few minutes to talk about thermo?

Sensible Chuckle SuperTuxKart Concrete Architecture Report

A Conversation with Dr. Sandy Johnson Senior Vice President of Student Affairs Facilitated by Luke Auburn

How Can I Deal With My Anger?

What to Do When They Say, 'Tell Us About Your Research' - Advice - The Chronicle of Higher Education

#1 Sent The Week Before Launch Subject: The Coolest Thing To Happen To The Internet! (Free Video) Hey {!firstname_fix},

Proven Performance Inventory

1

KNOW THE COMPANY, TEAM, AND PRODUCT YOU'RE INTERVIEWING WITH

Class 1 - Introduction

Ep #182: The Truth about Burnout

NOTICE: THIS REPORT IS COPYRIGHT OF ANGELA WILLS & MARKETERS MOJO

Subject: Subject: A PARODY ON HOW WE SAY THE LORD S PRAYER THE LORD'S PRAYER

So, again, that was addressing that main problem of how to attract new members. Even though people in that stage, you know, it's not just about

We're excited to announce that the next JAFX Trading Competition will soon be live!

Life Science Marketing Agencies: The RFP is Dead

While this training is meant for new foster parents, it is also a valuable learning tool for experienced foster parents who want a refresher.

Blogging Goals. Challenge

Results of 1,000 Phone Calls!

2013, All Rights Reserved

Session #1: 2X: The Mindset that Changes Everything


Medieval Wars Alpha Fix - PSP

Editing Your Novel by: Katherine Lato Last Updated: 12/17/14

Today what I'm going to demo is your wire project, and it's called wired. You will find more details on this project on your written handout.

CISC 1600 Introduction to Multi-media Computing

In the last decade public

Phone Interview Tips (Transcript)

/ / H O W T O J U M P S T A R T Y O U R P A S S I O N P R O J E C T I N 3 E A S Y S T E P S E V E N I F T H I N K Y O U D O N ' T H A V E T I M E / /

38. Looking back to now from a year ahead, what will you wish you d have done now? 39. Who are you trying to please? 40. What assumptions or beliefs

Three Interview Superstar Selection Sequence Start building your team of recruitment superstars.

Training and Resources by Awnya B. Paparazzi Accessories Consultant #

Advice for Graduating Coders. October 30, 2017 Arkansas Coding Academy

Ep #23: Cheat Days. Hi! How's it goin'? Great? Good. Then let's jump right into today's topic. Cheat days.

MITOCW watch?v=guny29zpu7g

Assignment 5: Virtual Reality Design

MITOCW watch?v=-qcpo_dwjk4

even describe how I feel about it.

LAURA PENNINGTON. Copyright Laura Pennington 2016

Pangolin: A Look at the Conceptual Architecture of SuperTuxKart. Caleb Aikens Russell Dawes Mohammed Gasmallah Leonard Ha Vincent Hung Joseph Landy

What is Dual Boxing? Why Should I Dual Box? Table of Contents

Work At Home Job Business Ideas For Moms!

Help! My boss wants me to.

Celebration Bar Review, LLC All Rights Reserved

Do Not Quit On YOU. Creating momentum

Feedback Comments For Student Writing

LYRICS METHOD - HOW TO WRITE RAP SONGS BY MIKE MIN DOWNLOAD EBOOK : LYRICS METHOD - HOW TO WRITE RAP SONGS BY MIKE MIN PDF

Listening Comprehension Questions These questions will help you to stay focused and to test your listening skills.

Eight Steps to a Vision of Greatness

1 of 14. Lesson 2 MORE TOOLS, POLYGONS, ROOF. Updated Sept. 15, By Jytte Christrup.

By: The 7 Keys to Financial Success

CSSE220 BomberMan programming assignment Team Project

MITOCW Project: Backgammon tutor MIT Multicore Programming Primer, IAP 2007

Preparing For Your GCSEs

MITOCW watch?v=k79p8qaffb0

"Your Vision And Goals"

Game Architecture And Design: A New Edition Ebooks Free

The right question asked to the right person at the right time starts the process of that person hiring you...

The Emperor's New Repository

Blatchford Solutions Podcast #30 Top Women in Dentistry: Interview with Dr. Davis Only If I Knew Than What I Know Now

COPYWRITER CHECKLIST. Find Out If You ve Got What It Takes to Succeed

COLD CALLING SCRIPTS

Need Help?

PREPARING FOR A JOB INTERVIEW GENERAL INTERVIEW PREP SPECIFIC INTERVIEW PREP

[DOCUMENT TITLE] [Document subtitle] [DATE] GLOBAL CASHFLOW SYSTEMS LLC [Company address]

SAMPLE SCRIPTS FOR INVITING

MITOCW MITCMS_608S14_ses03_2

CLICK HERE TO SUBSCRIBE

School Based Projects

Masterpiece Inked Publications, LLC.

Frequently Asked Questions About the Club

Rolando s Rights. I'm talking about before I was sick. I didn't get paid for two weeks. The owner said he doesn't owe you anything.

Introduce yourself and clearly state that you are writing for information only.

Can You Install Game Data On External Hard Drive Ps3

How to Get Gigs - The Secret Formula Revealed

Games made with Phaser

Dodge Development, Inc. 423 W Wheatland Rd, Ste 102 Duncanville TX or

Transcription:

[Game] Programming I Didn t Learn In School presented by Anton Gerdelan Trinity College Dublin <gerdela@scss.tcd.ie> antongerdelan.net

me computer graphics research, Trinity College Dublin, Ireland lectured graphics course at Trinity College learned shader programming whilst working with Stefan Petersson here lots of coding support for graphics courses

research projects AI behaviour. Steering. Vehicles. Fuzzy/GA WebGL architectural models attempting: realistic human rendering / Unreal engine motion capture. animation models. perceptual experiments

Life Cycle of the Programmer Start with some basic programming; transform X into Y Spend 10 years learning ALL the formalised design methods taking on complexity is almost never discouraged 90% of my time is spent refactoring and structuring yearn for early days At some point forced to make something the simple way again and it s fun and quick to make The unusual commonality of the moment of realisation

(tech. lead Ubisoft Montreal) has a great blog with lots of advice for aspiring game programmers fragmentbuffer.com

There was a time, boy, when I searched for steel, when steel meant more to me than gold or jewels Thulsa Doom, Conan the Barbarian (1982)

Why is complex bad? Takes too long to write (and read) Refactoring and the fallacy of the ducks Does not respect the computer Unhelpful abstraction We get very carried away with notions

Quandary We change our style ideas every year or two I could present my this year ideas Another opinionated rant from an academic about programming games?

Interview Prompts What would you tell yourself about programming if you could go back in time? What advice can you give about keeping code simple or working expediently? What are typical mistakes that new graduates make, that they would benefit from hearing now? Is there one reference/book/person that you recommend students read or follow?

Mini Interview 1 Niklas Lundberg Game engine programmer Avalanche Studios Stockholm

Don t bother with object oriented programming, it's not helpful

Try to keep functions having 1 task, not multiple (depending on extra passed in booleans etc.)

Learn to program a real machine, not a virtual machine. e.g. use C, not java

Don t keep global state. Functions should have all inputs they need

watch all videos in this series: https://handmadehero.org and don't proceed to the next until you understand each episode 100% requires basic C knowledge has a mini course for that too, but you will need some more

Mini Interview 2 John Romero

Keep your code absolutely simple. Keep looking at your functions and figure out how you can simplify further.

Write your code for this game only not for a future game. You re going to be writing new code later because you ll be smarter.

It will take you 10 years of constant programming and pushing yourself before you will be able to do something important. Study coders you respect and see how long they were programming before their big hit. Read Outliers by Malcolm Gladwell. There are no shortcuts.

Try to code transparently. Tell your lead and peers exactly how you are going to solve your current task and get feedback and advice. Do not treat game programming like each coder is a black box. The project could go off the rails and cause delays.

Programming is a creative art form based in logic. Every programmer is different and will code differently. It s the output that matters.

If you re making a game with a small team, don t use GIT use SVN. Try not to branch. Always keep your code current as often as possible. Everyone should be able to make a full build and run the game at any time.

Programmers should code as if the QA team does not exist. When you find a bug, fix it immediately. Do not code further. You risk your codebase depending on that bug. id Software did not have a QA team before I left after Quake 1.

Mini Interview 3 Ivan-Assen Ivanov CTO Haemimont Games Sofia, Bulgaria

There's a saying that making a game is like doing major reconstruction work on your airplane while you're flying it; I heavily recommend having an old airplane needing reconstruction in the first place!

I see some sense in the classical one class per real-world concept OOP design style in the highest levels of gameplay code, e.g. having one object of class "Unit" for each, uhm, unit in the game, and where performance is the least concern.

I see some value in the idea of "design patterns" as a common language; we say let's use the reasons pattern and everyone knows what we're talking about here. I don't get the religious attitude towards the book, and the treating of its list of patterns as end-all, be-all - something I'm sure the authors never intended.

I never got the point of UML. Pick a high-enough level language and you won't need diagrams - you'll fit the "big picture" on a screen, then zoom as appropriate.

A modern game contains many different subsystems, and what is true of code that is executed once per (one of ten thousand) object per frame is not as applicable of code that is executed once in a few seconds per human player. Writing code carefully considering the hardware is very rewarding, and very much necessary in the first case; unfortunately, it's also much harder, and working via abstractions can be forgiven in the second.

The first thing new recruits need to unlearn is the love for their own code. New programmers love nothing more than to produce code - pages and pages of elaborate, complex code. But code is a liability, not an asset. The job of a programmer is to think first, and to solve problems of his customers (e.g. designers and artists in a game team) second. Not to produce code. Programmers need to learn to love deleting code more than they love writing new code. Programmers need to learn to let their code go and mercilessly delete and simplify when a better, or simpler solution presents itself.

I think an important habit to have is to resist the temptation to abstract and create "general solutions" the first time you encounter a problem. It is better to implement simple, concrete solutions to the first and even the second occurrence of a similar problem. Only the third time you know enough about the problem to think of generalising - and even then you can't be sure you've seen it all.

Anyone with a desire to delve in engine code should get a good understanding of C, a decent understanding of C++, and a cursory understanding of the assembly language of the machine they're targeting.

Nowadays it's hard to evade JavaScript - it's not a very good language, but it's ubiquitous in large portions of the IT industry. C# is also a good bet, being embedded in Unity and also potentially useful in the real world, if you decide games aren't for you after all.

I like the Handmade Hero project by Casey Muratori. It's a series of videos showing how a non-trivial game is made from first principles, without using _any_ middleware or "game engines". It's very instructional, and Casey is a gifted comedian just wasting his talent as a programming superstar.

Yes! You know what it is, don't you boy? Shall I tell you? It's the least I can do. Steel isn't strong, boy, flesh is stronger! Thulsa Doom