Thoughts of an Professional Programmer and New Indie Developer

So lets set the stage a bit… I’m old… not grandpa old… but coding is not new to me.
At 38 I’ve been a professional java developer / designer for 15+ years. I’m a lifestyle techie, I don’t just work on code as a job. I do it cause i really like it.
I’ve been a gamer since I was 8 and thus I’ve harboured a child hood dream of making my own games for a long long time.

So about a year ago I started. Now I knew i was picking a bit of a learning curve cause i made the conscious decision to build my own game engine. I wanted full control and understanding about every aspect of what i was going to build / leverage.

Since i’ve started I’ve been reading this board every few days. Its interesting seeing the comments by people who work on Minecraft and PuppyGames (kudos to you all for your amazing accomplishments!) and others who are at the other side of the spectrum just picking up java at the same time as learning to code.

Some realizations I have come to thus far:

-Game coding has many interesting challenges that you will no typically run into in any other style of coding. Do not fret. Break them down into small challenges and solve each as you encounter them.

-Sometimes you have to reflect and decide that the lessons you’ve learned merit a re-working / re-writing of a utility or approach. This is ok!!!

-Ignore the hate. There are a lot of negative posts out there. Not everyone is going to like your idea… worse some people will make negative comments for no other reason then to do so.

-Everyone has an opinion. Use LWJGL/ use LIBGDX, use pure java.io.serversockets/ use KryoNet. Here is the the truth. Use what works well for you and your game! No one will know or care what tool you used as long as your game runs well and you can maintain the code when your done.

Being an indie game developer will likely not make you rich. Its a passion of love more than profit. But it can definitely be a rewarding pastime.

I hope to make more posts as my game matures… and eventually share the first timers experience.

j.

[edited to correct a typo]

Use LWJGL.

But seriously some good points. Maybe we should add a couple of these to the read before posting.

Also to add to this, never think you are too old for anything, or your age has any major bearing on anything whatsoever.

http://kzhu.net/does-life-end-at-35.html

“You know, my career only really took off after I turned 58”

There is often a misconception on many thing. If you enjoy something, just pursue it. Its that simple.

You might find that it is hard to stick with a project from beginning to end.
Thats been an issue with me

Good luck, and when you start a game, start a thread on here for it!

Great points, a good start.
Im curious about the game however, there is already some great stuff on JGO, expectations are high :D.

I have a small list of game ideas… All things i wish had been built as a game but have never seen… so heres hoping i can live up to JGO expectations :stuck_out_tongue:

j.

If you are a pro coder, you should be able to make a game in a month or two, not using a year for it. Don’t make engines, make games. I started making games a couple of months ago but in the end of October I found onegameamonth.com and decided to join in and make a game when only one week left. I did it. That game’s not a pretty or awesome, but it’s a game and I have done it and released. There’s a lot of work even with the smallest games, so it’s a good idea to make all major mistakes with them and then gradually work with better and bigger games.

And yeah I’m 30 but age is only numbers. I could have started earlier but I can’t regret anything because it doesn’t help anything.

“If somebody has an opinion that can be easily challenged by logical arguments - his opinion is also useless.”

What are you talking about? I’m sorry, but challenging arguments with logic can harden an argument just as easily as it can weaken it. An essay can be phrased as questions against one’s own thoughts or opinions to strengthen your argument.

wow… ok last few posts Im feeling are starting to take away from the intent of the original direction of this thread.

To answer one poster… why i have a spent a year working on my own game engine…
-1 to learn… Building a game is not like building aviation or business software… (which is what i do)… there was some unknowns for me.
-yes i could have skipped this and just jumped to using an existing framework but I wanted the deep knowledge that I find only comes from actually doing it your self and enduring the lessons of finding out what works and doesnt.
-My engine has matured a lot over the year and im now at a stage where im building my first game that I intend to sell when im done.

to the other poster about my logic of ignoring opinions… The problem with them is that everyone has one. So there comes a point where after doing your research and trying things out; you have to make a stance and just choose to use the tools that work for you. And this might be very different for each developer.

Its also important to note that not everything needs to be perfect. You may choose that using one network library of another works best for you. But the lib you choose isnt as efficient as the more complex one you disregarded. Ok… but is it good enough? does it impact your game? If it works and doesnt need to be improved than for you its probably the right choice.

Thats where i was coming from :slight_smile:

I really approve of this topic because unlike a lot of other fields of study, Computer Science still leaves plenty to explore and discover without having to dig too deep into the surface.

I know from my experience, building your own engine is never a bad thing. It is just something that is discouraged because you are essentially wasting time when these tools have been written better, faster, and a lot more efficient than your tools. I completely understand why people tell you to write games, because you’d get a lot of projects done that you wouldn’t if you started writing an engine.

It is a great opinion. However, it is also the weakness of our current generation. We are very much absorbed in the concept of “instant gratification.”

The sad realization is that games are extremely easy to find. There are a lot of web pages where you can just go and pull up simple flash games. When it comes to technology, there are a lot of programs that quickly allow you to bypass the boilerplate and just create games. But, as I have come to realize with a lot of the games out there, out of every good game I find, there are about 1000 average to horrible ones.

Building a game takes a lot more than just raw programming skill. You can be one of the best programmers in the world, and can’t write a top-selling game to save your life. Most of the projects that are popular now were created by accident, made by a successful company, or were emulated off existing success.

I think as Java programmers, we can revel a bit to look beneath the surface. Instead of just seeing the tip of the icebergs, we can take the plunge to look deeper into what programmers are actually getting from writing an engine. Games, sadly, are just the tip of the ice berg. The reason we build games is to solve the problems that lay deep within the framework of Java, and to challenge the fact of “there is only one tried and true way.”

In terms of quality of the Java gaming projects, I am actually proud to say that we do not have as much gaming fodder as other frameworks have. Of course, the base reasoning is that Java isn’t as popular as the other frameworks. But, I think that Java is also attracting some of the most talented programmers out there. But, we have to also realize that programming talent =/= great games. Many of the great things programmers do is completely ignored by the users who play the game. All users usually care about is if a game is running fast or slow. They don’t involve themselves in the ideology of what is better, Java2D or LWJGL. Users care about if a GUI can get them into the game. They can care less if you have 1500 different skins, if they can’t navigate the interface.

It is apples to oranges.

As programmers, we have a natural instinct to improve the structure of our framework. We are like architects. Users will always think that 2 bridges crossing a lake is the same thing. We are the fanatics that can tell you exactly what makes one bridge better than the other. However, do the users care… the bridges both perform the intended function of moving a car from one side of the river to the other.

We, as Java programmers, have to stop blindsiding ourselves. In other words, we have to stop preventing Java from improving. Each programmer has the given instinct to build a structure better, faster, and stronger. It is what makes us programmers… it is why we want to run our own tools. We love creating tech demos of what we can do in the technology, and creating the small parts that may be used for a larger whole…

The funny part is, that users just want something that works. Period. They don’t care about our wars, they don’t care about the technologies used, and they don’t care about how quickly we can deploy a project. (Well, they do if we leave deadlines…) All users want is reasonably fast performance, a good GUI interface design, and a game they can absorb themselves in without major bugs.

Programmers must see this in order to start producing games. It is a process that we have to learn… so, why take it away from us just to add some more fodder games to the list. Our game interior will always be superior to every other project when they are created. If we are really serious about turning this into a gaming community, we really have to start attracting the other facets of a good game. Specifically, graphic artists, writers, and musicians.

To close, great programmers are only a small piece of what makes a good game. So, let programmers be programmers and tinker away.