Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon


23. November 2016

 

A conversation just happened on /r/gamedev with the confusing title “What don't new game developers know that they don't know?”.  Essentially it was a question asking what important advice new developers don’t know (for lack of experience) but should.  My answer seems to have been extremely well received and the question is quite good, so I figure I would replicate the answer here for those of you that don’t frequent reddit.

So essentially what follows is my advice I would give my beginner self if I owned a time machine. 

  • most people fail and fail hard. Perseverance is probably the most underrated but required skill of a successful game developer.

  • learning tasks in parallel is rarely productive. While I know you want to learn everything now... don't. Learn one task/language/skill to a base level of competency before moving on to the next. It's hard because everything is shiny and new, but it's critical. Trying to learn too many things at once results in learning nothing at all.

  • when you are 90% done, you're actually 50% done. Maybe... if you are lucky.

  • there is no ego in programming, or at least there shouldn't be. A plumber or carpenter come into a job with a toolbox full of tools, and don't limit themselves to a number three hex drive because "it's cool". They use the best tool for the job and sometimes that tool is a horrific hack and that's ok too. Programmers... have often failed to learn this lesson. People invest themselves in "their language" and this frankly, is stupid. Working in C++, Java, Haskell, F#, Go, Rust or whatever other language doesn't make you cool, just as working in GameMaker, Lua, JavaScript doesn't make you uncool. Only exception, PHP. %#@k PHP. Moral of the story... use the right language or tool for the job. Sometimes that means performance, sometimes that means maintainability, sometimes that means quickness, sometimes that means designer friendly and sometimes it means using the tool the rest of your team is using. Be pragmatic, always be pragmatic. I personally would never hire a programmer who claimed there was a "best" language. If you have been programming for several years and don't have several languages in your arsenal, you are probably doing it wrong.

  • if it feels wrong, it probably is. If you encounter such a code smell, even if you can't fix it, comment on it and move on.

  • even if you work alone, comments are good. But comments for the sake of comments is worse than no comments at all. Take the time to write legible code, take the time to smartly comment what you've written. Six months or six years down the road, you will thank yourself.

  • version control or at least automatic backups. Do it. Now.

  • premature ejac.... er, optimization is the root of all evil. Yes, you need to be mindful of performance on a macro level, but don't sweat the micro level until you have to. If you are just starting out, but your primary concern is performance, you are doing it wrong.

  • learn how to use a debugger. Early. It will be an invaluable skill and will help you understand how your code works better than any other single task you can perform. Also learn how to use a profiler and code linter, these will give you great insights into your code as well, but you can do this later. If you have learned the basics of a programming language but haven't groked debugging yet, stop everything and dedicate yourself to that task. For a somewhat generic debugging tutorial start here. Seriously, learn it, now.

  • if you have access to a peer, TAKE IT. Peer reviewed coding, while at first annoying, is invaluable. Even if there is a large skill mismatch between the two people. Even just having someone go through your code and ask "why did you do this?" forces you to explain it... and often you realize... hey... why did I do that? Many programmers are solitary creatures, so the idea of peer code reviews or paired programming is anathema. Or people can be very shy about showing their code... it's worth it to get over it. Of course not everyone has access to another programmer to use as a sounding board and not being in person makes it a lot harder and a lot less useful.

  • books are great, as is a gigantic collection of links to great articles on the web. That said unfortunately, you can't just buy a book and learn via osmosis... you actually have to read the thing. More to the point, if you are following a tutorial or video, DO THE WORK. You will learn it a great deal more, develop muscle memory of sorts, if you actually do it. This means typing out the code and getting it to run, instead of just loading the project and pressing play. Trust me, you learn a lot more actually recreating the project.

 

There you go, 11 hard earned pieces of wisdom for new developers, hope you find them useful.  Anything you you would add or anything you disagree with?  Let me know in the comments below!

Programming

blog comments powered by Disqus

Month List

Popular Comments

Getting started with PlayN
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon


13. October 2011

 

*EDIT: 11/06/2011 I wrote an installer that automates this entire process, I recommend checking it out.  Of course, the manual process below will still work.

 

Before you can use PlayN, you need to download and configure it, which is not a completely trivial task. 

 

First of all, you are going to need GIT.  Git is a version control system and if you are working on Windows there are a few ways to go about it.  First is to install Cygwin which is a Linux like environment for Windows.  The other ( and easier ) option is to download it here. ( I used this one ).  Run through the setup, the only option to be aware of is this one:

*EDIT: It was pointed out other Git options such as the EGit plugin for Eclipse exist.

 

image

 

This is the option I used and will assume you will use going forward.  Also I chose windows style line breaks on checkout. Now that Git is installed, its now a matter of downloading the most recent source code from Google.  I assume you have an internet connection, now open a command prompt and change to the directory you want to install PlayN in.  Git will automatically create a “playn” folder, so in my case I used c:\ as the install path.

 

Now type “git clone http://code.google.com/p/playn” and it should look like this:

 

image

 

And after running, it should create a directory called playn whose contents look just like this:

 

image

 

 

If you haven’t already got a Java JDK installed, go get one now.  I started this tutorial off using 7, but truth is Java 6 seems to work better.  So if you don’t already have it, go get it now.

 

Now you need some kind of an IDE.  In this example I am going to use Eclipse, as it seems to be the one that Google most supports.  If you don’t already have Eclipse installed, head on over to Eclipse.org's download section and pick out a version.  In my case I went with Eclipse 3.7.1 Classic x64.  Simple open up the zip file and extract the eclipse folder wherever you want your install to run from.  Run Eclipse.exe and select where ever you want your project files to exist.

 

Now you need to add a couple plugins. 

 

First we need to install the M2E ( Maven ) plugin.  You need to do this inside Eclipse.  In Eclipse, select the Help menu, then Install New Software…

 

In the dialog that pops up pull down the “Works with” box and select “http://download.eclipse.org/releases/indigo/201109230900”.  In a few seconds it will populate a list of options, you want to expand Collaboration and select “m2e – Maven Integration for Eclipse” then click Next, like this:

 

image 

 

Click Next again then agree to the terms and conditions and it will go out, download and configure the Maven integration.  After it is complete it will ask you to restart Eclipse, allow it to.

 

Now we need to add the two Google specific libraries, the Google Eclipse Plugin and the Android Eclipse Plugin.  Both are installed in a very similar manner, just using a different repository.  In Eclipse, select Help->Install New Software.  This time click the “Add…” button and in the “Add Repository” dialog, enter dl.google.com/eclipse/plugin/3.7 like this:

 

image

 

Now click OK and it will again populate the list of selections available.  We need to add another repository for the Android Plugin as well, this repository is located at http://dl-ssl.google.com/android/eclipse/ like such:

 

image

 

Alright, now that those are both added, back in the Install New Software screen, in Works With select our newly created Android repository and select either Android Developer Tools or optionally just select Developer Tools to install everything, which is what I am going to do.  So your screen should look like this:

 

image

 

Finally click Next, Next again, agree to license terms, then Finish.  It will proceed installing the Android tools, you may receive the following warning:

 

image

 

Simply click OK.  Once completed it will ask you to Restart again, choose “Restart Now”.  Now all we need to do is configure the Google Plugin.  Follow the exact same process, Help->Install New Software… and this time in Work With select the Google repository.  I am not specifically sure exactly which plugins and SDKs are required by PlayN, so I simply clicked Select All… disk space is cheap these days right? Smile

 

image

 

Click Next, Next, accept the licensing terms and click Finish.  Now Eclipse is going to do it’s thing… taking a fair bit longer than before.  You may once again receive an “unsigned content” warning, simply click OK again.  And, I bet you saw this one coming… one last request to restart Eclipse.  The last time, I swear!

 

Now that all the tools are created, we need to configure our project.  This is where the m2e plugin we installed earlier comes in.  In Eclipse, in the File Menu select Import.  You should see a list like the following, if the Maven option isn’t there, your m2e install didn’t work properly and try again.  ( Or possibly you didn’t reboot Eclipse earlier? )

 

image

 

You want to select Maven->Existing Maven Projects.  Now for Root Directory you want to navigate to the place Git installed PlayN, in my case c:\playn.  Stupidly you can’t just type the path, you have to hit the Browse button or it won’t well… do whatever it does. Speaking of which, whatever exactly it is doing takes a few minutes.  Many moons later it should look like this:

 

image

 

Click Next, then Finish.  It will in a rage inspiring way that only Java seems capable of, it will appear to reinstall all of the things we just installed then make me a bit of a liar as it asks you to restart Eclipse one more time.  ARGH.  Alright, last time I double promise.

 

Now you have to run the Maven install for playn-archetype.  To do so, switch to the Java Perspective using the Window Menu->Open Perspective->Java Browsing.  On the left hand side should be your Package Explorer with a list of maven projects.  Right click playn-archetype and select Run As –> Maven Install, like this:

 

image

 

 

One the bright side, Eclipse is now fully configured and ready to go.  Now we just create our project!

 

In Eclipse, select File->New->Other...

Now scroll down and select Maven->Maven Project, like this:

 

image

 

 

Click Next, choose your location, I clicked Browse and navigated to my default workspace under my user profile and clicked Next again. In the next screen, check the “Include snapshot archetypes” box, under Filter type “play” then click “com.googlecode.playn”  like such:

 

 

image

 

 

Now click Next.

 

This next screen is again typical Java of making things look way more complex than they really are.  Now you need to provide a groupID and a artifactID, which are bizarro over engineered ways of saying your domain name and game name.  For group id put your domain name ( even a made up one is fine ) in reverse order, for example com.gamefromscratch is what I am using.  Then in ArtifactID put your games name, for example playndemo.  Finally in the properties section gameName will have automatically been created, in the value enter your game name again, like this:

 

 

image

 

Obviously you will want to use different values.  You will see that the packagename is auto-generated based on the values you chose.  Now click Finish.  Not there is a little glitch in Eclipse in that after filling in the value for gameName, you need to click somewhere else on the dialog window to get the Finish button to be enabled.

 

 

Now your Project is created.  If you look in Package Explorer you will now see it ( all 5 of them ).  Here is mine:

 

 

image

 

 

Now it’s a matter of getting things to actually run.  Since we are working on a desktop, lets start with the core ( Java Desktop ) application.  Right click on playndemo-core ( obviously your name will be different ) and choose Run As->Java Application.

 

 

image

 

After selecting Java Application a window will pop up asking you to Select your Java Application.  Scroll down till you find your project it will be named [yourprojname]Java.java like such:

 

 

image

 

 

 

Click it and press OK, and finally the fruit of all our labours!  Our game.

 

 

image

 

 

 

I have to say, that process has to be made MUUUUUUUUUUCCCCCCCHHHHHH simpler if they expect PlayN to catch on.  I mean compared to XNA’s equivalent of downloading and double clicking an EXE, this is simply brutal. Google has a Getting started guide but frankly it assumes a hell of a lot of knowledge of Eclipse, Maven, Git, etc… and still is wrong in some places ( like the Git address ).  Otherwise there is a horrid lack of documentation at this point.

 

 

Well that’s about it, hopefully this guide helped you and if I made a mistake, let me know!

Programming

blog comments powered by Disqus

Month List

Popular Comments