• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
NightCreature83

Unmaintainable code

59 posts in this topic

I refuse to believe this is how it was programmed.

 

He's got to be screwing with us. Obfuscation, perhaps?

Ohhh that would be quite the entertaining possibility :D

2

Share this post


Link to post
Share on other sites

When I opened that link, for some reason it dropped me 2/3 of the way down the page. There was code on the far right side of my screen... none of it looked remotely intelligible...

I scrolled up a few lines, and noticed there were comments that were equally unintelligible...

I thought to myself, "I bet they have a whole bunch of uncommented global variables with less-than-perfectly descriptive names." I wasn't disappointed. Then I realized I was, in fact, *very* disappointed.

 

At least comparing my code to theirs makes me feel a little better about myself as a programmer.

1

Share this post


Link to post
Share on other sites

According to the copyright he worked on this for 7 years.

How do you…

 

 

Words fail.

 

 

L. Spiro

mouhouhaha, I love.

1

Share this post


Link to post
Share on other sites

Wow theres one hell of an if statement in there:

 

if(((((findLengthfast(&rotatetarget)>150&&(i!=0&&k!=0))||(findLengthfast(&rotatetarget)>50&&player[0].rabbitkickragdoll/*currentanimation==rabbitkickanim*/&&(i==0||k==0)))&&normaldotproduct(rotatetarget,player[k].coords-player[i].coords)>0)&&((i==0||k==0)||((player[i].skeleton.oldfree==1&&k!=0&&animation[player[k].currentanimation].attack==neutral)||(player[k].skeleton.oldfree==1&&i!=0&&animation[player[i].currentanimation].attack==neutral)||(player[i].isFlip()&&!player[i].skeleton.oldfree&&(i==0||k==0))||(player[k].isFlip()&&!player[k].skeleton.oldfree&&(i==0||k==0))||(i==0||k==0))))||((player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip())&&(player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim||player[k].isFlip())&&(i==0||k==0)&&(!player[i].skeleton.oldfree&&!player[k].skeleton.oldfree)))
1

Share this post


Link to post
Share on other sites
Wow theres one hell of an if statement in there:

You can see a lot of hard coded value in this hell too, this file is a joke from A to Z.

Imagine the scene : "We have to change the jump height value"
Programmer of this file : "WHAT ?!"

Edited by Alundra
2

Share this post


Link to post
Share on other sites
<!-- Build website. -->
<exec dir="${src-dir}"
 executable="make"
 failonerror="true"
 searchpath="true"
>
    <arg value="html-no-deps"/>
</exec>

Like using xml to write a "make html-no-deps" command-line?

 

Oh no, that's normal practice.

1

Share this post


Link to post
Share on other sites

My favourite line (7201): http://hg.icculus.org/icculus/lugaru/file/97b303e79826/Source/GameTick.cpp#l7201

 																										if(((((findLengthfast(&rotatetarget)>150&&(i!=0&&k!=0))||(findLengthfast(&rotatetarget)>50&&player[0].rabbitkickragdoll/*currentanimation==rabbitkickanim*/&&(i==0||k==0)))&&normaldotproduct(rotatetarget,player[k].coords-player[i].coords)>0)&&((i==0||k==0)||((player[i].skeleton.oldfree==1&&k!=0&&animation[player[k].currentanimation].attack==neutral)||(player[k].skeleton.oldfree==1&&i!=0&&animation[player[i].currentanimation].attack==neutral)||(player[i].isFlip()&&!player[i].skeleton.oldfree&&(i==0||k==0))||(player[k].isFlip()&&!player[k].skeleton.oldfree&&(i==0||k==0))||(i==0||k==0))))||((player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip())&&(player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim||player[k].isFlip())&&(i==0||k==0)&&(!player[i].skeleton.oldfree&&!player[k].skeleton.oldfree))){
Edited by Alessio1989
1

Share this post


Link to post
Share on other sites

At first I thought my computer was being so slow it wasn't loading at all... then after a minute or so I decided to scroll for some reason. Oh god, what's with all that indentation O_O

I can't believe I just fell for it again

 

(waiting for the code in that post to load... then I remembered it shouldn't take even a second and then what software this was from)

1

Share this post


Link to post
Share on other sites

 

On the other hand, it shipped as part of a pretty damn successful indie title. On that score, not bad?

 

On that score even worse, I'd say, as it might give out the idea that this is the way to write successful titles.  Sure, you can't argue with the success, but the ends don't justify the means.

 

I note from their blog post announcing it's release: "The coding style is what you might expect from a self-taught high school student, so it could be a challenge to understand" so at least the author(s) acknowledge it's dreadfulness (if in a somewhat understated way), and I've also found that some poor fool has (or had) a fork of the code with the intention of cleaning it up.  That's ... brave.

 

There's probably a moral to this story, something about not letting the endless quest for perfect code get in the way of actually getting stuff done, but this really does lie at one extreme whereas the ideal place to be would be somewhere in the middle.

 

As a self-taught high school student, YE GODS NO JESUS CHRIST PLEASE DON'T PLACE ME IN THE SAME CATEGORY AS THIS

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0