• 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
Benjamin Loisch

Gain experience by learning(studying) or by doing?

12 posts in this topic

Is it better to have well structured code that takes 5 hours in time to make, than have spagetti code that takes 30 mins to pump out? Is it better to become well versed in a particular(or broad) area of study, and then go in and tackle a project, or just learn as you go? I'm wondering, what do YOU guys think are the best ways to learn how to code? btw, for me, it's learning Direct3D right now! :D

2

Share this post


Link to post
Share on other sites

Do both...Learn a little then apply a lot... learn a little more then apply more... etc. etc. etc. works for me. 

0

Share this post


Link to post
Share on other sites

I always say the following: Just Code

 

When you're learning just code.  While we all learn different, I feel just coding is the way for most people in programming.  Don't worry too much on if the solution is perfect when working on a project.  Honest truth?  your code will be ugly starting out.  No matter what you do your code will still be ugly.

 

Just Code.  Read and just code.  Have a question on solving a problem?  Take a step or two back.  Write down in plain English how you would solve it in real life.  Every step.  Most of the time if you can figure out how you would solve a problem in plain English and you wrote down every part of the solution then you can find a way to translate it to code.  While you might not know all the tools of the langauge to solve it, that's when researching comes in handy.  Just type into Google that step and most of the time you'll get some ideas on features of the language you need to learn.  Guess what?  Next thing you know you just learned a new feature of the language and solved a problem at the same time!

 

Don't focus too much on code design right now.  Just code.  Get code reviews.  Apply those code reviews, and guess what?  Continue to code.  Next thing you know you will be writing decently designed code by yourself just because it all of a sudden became instinct to you.

 

I feel it is dangerous spending too much time as a beginner worrying about code design.  Why?  I have experience with that.  it seemed no matter what project I started or how simple it was I could program it with not much difficulty but would make the problem so much harder than it was by just worrying about the code design.  It dramatically took away motivation away from me because I would say "This code sucks!  horribly designed!"  Start all over and next thing I know my motivation is destroyed, which in turn is a guaranteed way to kill a project. 

 

So my advice?  Just code, It'll come.  It really will...

0

Share this post


Link to post
Share on other sites

Cowboy programming is very effective for me.  I find it extremely hard to "learn" and "progress" without some satisfaction from seeing results.  I need that gratification or else I think "what's the point of all this".  This is especially true if you program solo.  Without help, coding takes a looooooooong time.  Unfortunately, with spaghetti code, you will hit a fat brick wall from which you will have to refactor before being able to expand and add features to your project.  I think a better question would be at which point do I start refactoring and create a proper architecture.  There must be a balance of agility and planning in your development process.  Agility is great for learning.  It gives you great flexibility to go into things you'd rather learn about. 

 

Of course, studying proper software engineering WILL help you.  Learn about patterns, paradigms, and learn about different software architectures.  Knowledge is power, but you got to apply these things in your projects.  I love software development because you are the creator...  the application's building blocks is supported by your architecture, and seeing your application done as you invisioned it is the ultimate satisfaction.  And for large scale software, proper architecture and clean code is a must to the product's success.

 

At the end of the day, you manage your own time.  Hence, you must figure out when it is necessary to create clean structures to your code as opposed to hacking things up together.  Both have their own advantages....

Edited by french_hustler
0

Share this post


Link to post
Share on other sites

It depends on the learning curve of the subject really.

 

I learn't what I know of Java as I went through it. Suddenly I needed linked lists and I read Oracle's Docs about the Collections framework. Needed to interface with native stuff for a library, went to learn about Buffers and how they work.

 

Thats usually the "simple" stuff. Things that require at most a paragraph to explain. LinkedList is circular? Can I use bitwise operators with any integer type? You can find those easily and code what you want to do with them in 10min.

 

Other things, like design patterns, general object oriented programming concepts or complex libraries, APIs and such, take time to learn and its best if you read about them before trying to code with them.

 

I spent quite a while reading about OpenGL before trying to code up something myself with Java, the linear algebra required to do some stuff took me months to learn (though I didn't knew back then I'd use it for OGL :D), most of the object oriented concepts (classes, access identifiers, information hiding, etc) that I'm using in Java right now I read from C++ based material rather than coding my way through it.

 

There are many many "layers" of understanding.  Some of them you can learn just by practicing (trial-and-error) and some of them you need to read quite a bit before even trying to jump in with the code.

0

Share this post


Link to post
Share on other sites

the way i figure is do it with the knowledge you have and then after you get something working go back and look at your code...once you get something working youll feel like you have accomplished something 

 

then when you go back and look at your code you could learn new ways to optimize your code and/or do it the proper way...by doing stuff this way i have kept myself motivated enough to keep going with my projects and also have learned the correct and more optimized way of writing things...so now when i write to get something going i remember oh i found a better way to write this last time and then i start doing it the correct way the first time

 

either way i wish you the best of luck on everything you do :)

0

Share this post


Link to post
Share on other sites

I generally get bored with examples and small projects for learning, so I will start a large project like a game and implement concepts I learned from my previous projects. I set a goal (finishing the game) and work to that end. It keeps me going and I get satisfaction when I finish a section of it. Most of the time I run into some self-inflicted flaws that might make me quit or start over-- no big deal. I'd say I've started 10 games and only finished 2, but I'm not working for anyone but myself, so whenever I want to start/stop it's my decision. 

 

The point of jumping in with both feet is that you will prod yourself to finish something.

 

Doing small projects that have only one feature won't show you how it will look/interact with other features. This is also a good reason to come up with a large project and push till your fingers bleed.

 

 

 

The fastest code is the code never written.

0

Share this post


Link to post
Share on other sites

Is it better to have well structured code that takes 5 hours in time to make, than have spagetti code that takes 30 mins to pump out?

 

If the project is finished after the 5hr/30min time specified, then it doesn't really matter, and so 30minutes is cost effective.

 

But if the project is not finished after the hurried 30minute spaghetti code, it is much less likely to be finished later on, or ever.

 

Building a birdhouse doesn't require much skill. Building a skyscraper does.

0

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