-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.html
1 lines (1 loc) · 7.84 KB
/
index.html
1
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>id Software programming principles by John Romero</title><meta name="description" content="Programming principles used for game development at id Software (by John Romero) - made with ❤ by Tom Lutzenberger"><meta name="robots" content="index,follow,noodp"><meta property="og:url" content="https://tomlutzenberger.github.io/id-software-programming-principles/"><meta property="og:type" content="website"><meta property="og:title" content="id Software programming principles by John Romero"><meta property="og:image" content="https://tomlutzenberger.github.io/id-software-programming-principles/assets/banner.png"><meta property="og:description" content="Programming principles used for game development at id Software (by John Romero) - made with ❤ by Tom Lutzenberger"><meta property="og:site_name" content="id Software programming principles by John Romero"><meta property="og:locale" content="en_US"><link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"><!--link(href='https://fonts.googleapis.com/css?family=Libre+Baskerville' rel='stylesheet')--><noscript><link href="https://use.fontawesome.com/7f6ce9e346.css" rel="stylesheet"></noscript><style>body { background: #000; color: #c02d00; padding-top: 30px; }img { margin-bottom: 30px; }h1, .h1 { margin-bottom: 2rem; }.lead { margin-bottom: 2rem; }hr { margin-bottom: 40px; margin-top: 40px; }.card-primary { background-color: #c02d00; border-color: #c02d00; }blockquote { quotes: "“" "”" "‘" "’"; }blockquote q:before { content: open-quote; }blockquote q:after { content: close-quote; }.video-wrap { margin-top: 2rem; margin-bottom: 2rem; }footer { padding: 10px 0; }.btn-facebook { background: #3b5998; border: 1px solid #3b5998; color: #fff; }.btn-facebook:hover, .btn-facebook:active, .btn-facebook:focus { background: #fff; color: #3b5998; }.btn-twitter { background: #1da1f2; border: 1px solid #1da1f2; color: #fff; }.btn-twitter:hover, .btn-twitter:active, .btn-twitter:focus { background: #fff; color: #1da1f2; }.btn-github { background: #333; border: 1px solid #333; color: #fff; }.btn-github:hover, .btn-github:active, .btn-github:focus { background: #fff; color: #333; }</style></head><body><div class="container" role="main"><div class="row"><div class="col col-12 col-md-8 offset-md-2"><div class="text-center"><img class="img-responsive" src="./logo.png" alt="id Software Logo"><h1>id Software Programming Principles<br><small>by John Romero</small></h1><p class="lead">The following advices were taken from the 2016 GDC Europe talk of id Software co-founder and Doom co-creator John Romero.<br>They might be useful in more fields than just game development.</p></div></div></div><div class="row"><div class="col col-12 col-sm-6 col-md-5 offset-md-1"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>No prototypes. Just make the game. Polish as you go. Don't depend on polish happening later. Always maintain constantly shippable code.</q></blockquote></div></div></div><div class="col col-12 col-sm-6 col-md-5"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>It's incredibly important that your game can always be run by your team. Bulletproof your engine by providing defaults upon load failure.</q></blockquote></div></div></div></div><div class="row"><div class="col col-12 col-sm-6 col-md-5 offset-md-1"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>Keep your code absolutely simple. Keep looking at your functions and figure out how you can simplify further.</q></blockquote></div></div></div><div class="col col-12 col-sm-6 col-md-5"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>Great tools help make great games. Spend as much time on tools as possible.</q></blockquote></div></div></div></div><div class="row"><div class="col col-12 col-sm-6 col-md-5 offset-md-1"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>We are our own best testing team and should never allow anyone else to experience bugs or see the game crash. Don't waste others' time. Test thoroughly before checking in your code.</q></blockquote></div></div></div><div class="col col-12 col-sm-6 col-md-5"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>As soon as you see a bug, you fix it. Do not continue on. If you don't fix your bugs your new code will be built on a buggy codebase and ensure an unstable foundation.</q></blockquote></div></div></div></div><div class="row"><div class="col col-12 col-sm-6 col-md-5 offset-md-1"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>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.</q></blockquote></div></div></div><div class="col col-12 col-sm-6 col-md-5"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>Encapsulate functionality to ensure design consistency. This minimizes mistakes and saves design time.</q></blockquote></div></div></div></div><div class="row"><div class="col col-12 col-sm-6 col-md-5 offset-md-1"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>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.</q></blockquote></div></div></div><div class="col col-12 col-sm-6 col-md-5"><div class="card card-inverse card-primary mb-3 text-center"><div class="card-block"><blockquote class="card-blockquote"><q>Programming is a creative art form based in logic. Every programmer is different and will code differently. It's the output that matters.</q></blockquote></div></div></div></div><div class="row"><div class="col col-12 col-md-10 offset-md-1 text-center video-wrap"><h2>Watch the full video</h2><div class="embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" width="640" height="360" src="https://www.youtube.com/embed/E2MIpi8pIvY" frameborder="0" allowfullscreen></iframe></div></div></div></div><div class="container"><div class="row"><div class="col"><hr><footer class="text-center"><p><a class="btn btn-sm btn-facebook" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ftomlutzenberger.github.io%2Fid-software-programming-principles%2F" target="_blank"><i class="fa fa-fw fa-lg fa-facebook"></i> Share</a> <a class="btn btn-sm btn-twitter" href="https://twitter.com/share?text=id%20Software%20programming%20principles%20by%20@romero&url=https%3A%2F%2Ftomlutzenberger.github.io%2Fid-software-programming-principles%2F&via=t0mlutzenberger&hashtags=programming%2Cprinciples%2Cgamedevelopment" target="_blank"><i class="fa fa-fw fa-lg fa-twitter"></i> Tweet</a> <a class="btn btn-sm btn-github" href="https://github.com/tomlutzenberger/id-software-programming-principles" title="Contribute on GitHub" target="_blank"><i class="fa fa-fw fa-lg fa-github"></i> Contribute</a></p><p>2017 by Tom Lutzenberger</p></footer></div></div></div><script src="https://use.fontawesome.com/7f6ce9e346.js"></script></body></html>