First time poster here. I've cross-posted this in gamedev.net but I've yet to receive a response there.

When I first visited gamedev I found a thread/how-to/something-or-other about how to start writing games. The author suggested starting off by doing Tetris, and not just getting it working but polishing it right off to the point of being a properly completed product. Well after several false starts over the years I have finally have a fully playable game - Bomb Blocks - a tetris clone with bombs written in Java. I still need to complete the website, documentation, installer, and add a few little touches. But I feel really good having made it this far, especially after all the failures.

Now as I'm going over the code I'm looking at it thinking 'god there is some ugly stuff in there!'. The project suffered from virtually no initial design; it grew organically and has probably suffered for it to some extent. I've ended up redesigning classes, refactoring a heap of code, throwing bits out and writing new bits, but throughout the process - as well as reading books, websites, etc, I feel I've learnt some fundamental things about the process of designing and writing a game, and that the next game will be better planned and written. Hopefully one day I can create something that might earn a few dollars too. It seems there is just so much to learn and I'm really eager to keep on learning.

So over to you. If you have ever completed and released a game what was your experience of doing your first? What successes and failures did you have? What did you learn? What would you have done (maybe subsequently did) better? What did you get out of it? Did you get discouraged to do more or vitalised to build something better?

I've finished one game proper. It's called Arithbequick and it's a maths game. I've kind of released it. Well I've put it in the showcase section and stuck it on a website. Here is what I have learned.

Oh and when I say "you" in the following post, I really just mean me, I really don't know enough to give other people advice.

1. Don't make a game about maths and expect many people to actually want to play it. "It's like homework" said one of my friends.

2. When you are nearly finished and just have some tyding up to do. Do it straight away. There are still some essential things that I have to do, (like make it save high scores) but I've put it off and now I've lost all passion for the game.

3. Java applets aren't great. Even though I had java installed, most browsers I downloaded made me download it again. Most browsers seem to block it and ask the user's permission. I'm now learning web languages and plan to learn to make games in javascript. Apparently that and html5 are the future.

4. Playing your own game gets you really good at it, and fast. So when people say a game is too hard, even if it feels really easy, make it easier. I started as a maths dunce but I could add up like a calculator after 50 or so goes on my own game. I have seen others make the same mistake with their own games.

5. Most people aren't that impressed by the fact that you can make a game. People are so used to computers they take everything for granted. So don't expect people to be blown away.

6. The average person will judge your programming skills on your ability to create images. They don't give two shits about how you have organised your code, so as long it makes sense to you, who gives a crap.

7. Oh and the most important thing I have learned. People do NOT read instructions. Seriously! Nearly every person who played my game on this forum, I had to reply to individually telling them how to play because they thought the game was impossible because they didn't read the sentence in massive letters saying you could move the number tiles. They will take the time to write to you, going into great detail how mathmatically it is impossible, but they won't just say to themselves, "mmmh, maybe I'll just glance over the instructions to see if I'm missing something".

Admittedly point two is difficult atm. There's just those dregs that need to be done and they've become a big of drag. Still I'm making progress on most days.

Interesting how you mention about permissions with Java applets. I haven't run into that. Did you have any of your testers hit that issue?

Instructions is something I've been wondering what to do about. For tetris it's almost universally understood what the controls are, and I'm wondering whether to bother with them. However you've got me thinking that a trainer tutorial might be the way to go to get users to grasp the essential controls required to play the game.

Interesting how you mention about permissions with Java applets. I haven't run into that. Did you have any of your testers hit that issue?

Just pretend Applets dont exist :/

Hmmm, suggesting that if one is to develop a Java game it should be standalone?

Absolutely. Just like when you would write a game using C++ or something.Java lets you deploy on Android and thanks to libgdx there may be soon viable ways to port to HTML5 and ios.If want to make a PC game, just release it like any AAA standalone game - it works and people are familiar with this.

Thanks for the tip Cero. I was wondering whether my next game should be an applet and/or standalone. I'll likely go with the standalone option. I'd love to do something in Android but I'll try that some time down the track.

Thanks for the tip Cero. I was wondering whether my next game should be an applet and/or standalone. I'll likely go with the standalone option. I'd love to do something in Android but I'll try that some time down the track.

doesnt hurt to ALSO do an applet if it only takes a few hours, but not exclusively.

number 7 was so damn funny because it is so damn true. I know I am one of those people who does not read instructions so when ever I am designing controls and what not, I try to make it so intuitive that people will natural go to what they think the controls are.

(platformer uses arrows and maybe a few other keys most people know that)

Sadly, it still does not work.

and about the whole people judge you on your images....it is also so true. Its all about the stupid cute little sprites that people see. Not the well organized and well optimized code.

1. Don't make a game about maths and expect many people to actually want to play it.

I suspect it's more general than that. Don't expect many people to play your first game, whatever it is. Or your second, third, fourth, etc. Get used to the idea that making games that people actually want to play is harder than just making games.

1. Don't make a game about maths and expect many people to actually want to play it.

I suspect it's more general than that. Don't expect many people to play your first game, whatever it is. Or your second, third, fourth, etc. Get used to the idea that making games that people actually want to play is harder than just making games.

(Or maybe I'm just feeling cynical this morning...)

Yes you are right. It's easy to forget that making games is more than just learning to program. It's like, just because one can learn guitar and to sing doesn't mean they can write a hit song.

I also have to make the decision, do I make games that I want to play, or what others might want to play. Although it would be great to make a game that people loved, I think I'm just gonna make what I find interesting. I just love the freedom that programming has given me. Just to be able to make whatever I like. Lucky for me I like really simple games!

ps I tried to play one of your games, the applet wouldn't load. Applets randomly seem to do that sometimes. I'll try again later with a different browser.

*LOL* I only ever mastered one song on guitar. I've tried to write a few songs but aside from one helluva catchy chorus I didn't get far. Kinda feels like where I am with game programming atm: I've written a few nice bits of code and done a couple of things that I thought "oh wow" about, but in reality I've barely set foot on the base of Everest. But I'm enjoying it, and I guess that's the most important thing of all for a hobbyist (maybe indie developer one day).

It's starting to sound like the trials and tribulations of releasing games is a universal truth. I'm on the cusp of dropping the thin veil of Beta from Island Forge. I've written several little snippets of game mechanics, but this is my first properly completed product (as brionnach requested).

In retrospect, my initial concept for the game was way too fuzzy. I eventually realized I had to concentrate more on mechanics rather than environment.

My approach to writing the software was too general, as well. As much as I like implementing well-designed, general-purpose utilities (application server framework, client-server protocols, persistence model, etc.), above sentiments are correct - no one cares. That said, there is no excuse for sloppy code/design, especially when maintaining 100k SLOC.

I've always been very open to community input, which is helpful, because it's difficult to experience your own game from the point-of-view of a new player (as mentioned by Dream of Sleeping). Then again, many players just want everything to be easier. Balance is tricky (a universal truth, to be sure).

Regarding game design, I tried too hard to break the mold. I'm pleased with the unique qualities of Island Forge, but I have newfound respect for the art of game design (of which I am not yet a master). Not counting direct clones, I shall not descry a game design just because it's yet another in some genre.

Beyond designing and implementing the game itself, actually releasing a product involves just as much work. I'd recommend against starting out with an MMO, which requires server hosting (100% uptime), user registration, subscription management, ongoing upkeep and support, etc, etc. Start with a single-player game (or session-based multiplayer, like an RTS).

Regarding deployment strategy, I say that Java is a platform by developers and for developers with lots of pitfalls for end-users. Nonetheless, I wouldn't recommend any other language! Although I've seen some great examples of applet-based games, I agree with Cero (above) and provide downloads for Win exe (built with launch4j), Mac dmg (built with jarbundler), as well as a Jar. Sadly, the Jar is the worst option, because I need to increase RAM allocation with a command-line flag. I haven't found a way to make a self-executing Linux file from a Jar.

When you download Island Forge, you're downloading a bootstrap executable, which then downloads the rest of the game runtime and content (and updates itself when needed). By the way, Three Rings (Puzzle Pirates) provide a tool called getdown, but I rolled my own similar system. This bootstrap approach makes the initial download quicker for users, and they don't have to return to the site when there's a game update. However, this is one of those things that I've probably gone overboard to develop myself.

In addition to creating the game and releasing it, I wanted to learn the process of starting a business (forming and registering, proper accounting/taxes, trademarks, legal agreements, etc.). This is the way I wanted to go, and I'm glad I have, but just be aware that it takes a lot of time and effort (away from creating the game itself).

On top of all that, you need to find people who want to play your game. Island Forge caters to a niche audience (indie, player-created content, old-school-ish). Then again, a general-interest game can get more easily lost in the crowd. I recommend being unique, even though it's the more difficult path, and it remains to be seen whether the gaming community is really ready to embrace new concepts.

My next big learning curve is marketing. I've tinkered with advertising, but I'm starting by focusing on social marketing. I've been on many community forums and game listing sites (such as mmorpg.com). Island Forge has a WordPress-based site, Twitter account, Facebook page, and YouTube channel. Similar to my experience with setting up a business, all this social and marketing stuff has been a major learning experience requiring lots of time and effort.

My dream has been to develop and operate an MMORPG, and I'm excited to be at the stage I'm at now. Even so, I wouldn't really recommend my approach. A more modest/realistic goal would be to develop a game (not necessarily the game), such that you can then develop another (and repeat).

Thanks for providing this topic. I apologize for the length of this post. There was just more and more to add (and I haven't even commented on graphics and rendering). I'm not sure I've said anything novel or wholly enlightening (everyone seems to have similar experiences), but I hope this provides some interest and insight for the (Java) game development community. I look forward to hearing other's stories!

Thanks for providing this topic. I apologize for the length of this post. There was just more and more to add (and I haven't even commented on graphics and rendering).

No need to apologize I love such posts, and I really appreciate, that you take your time and write your experience down. That helps many people.You said, that you haven't even commented on graphics and rendering? I don't want to take your time away, but if you have got time, could you continue in that points? I think these points are really intresting.

Thanks for your comments, brionnach & matheus23. Feel free to ask anything, brionnach. At the moment, I'm crunched for time, but here's a brief look at my experience with rendering:

I decided (as with most things) that I had to start from scratch and do everything myself. I even shunned traditional isometric tiles for a custom hex (with rectangular overlay) approach. This was fitting with my desire to learn all aspects of game development, as well as create a unique original look for Island Forge. I'm not using any external libraries or hardware acceleration (just Swing+Java2D), but animation, see-through scenery, and sprite effects work well (but there's definitely room for future improvement).

For future projects, I'll definitely have a look at Slick2D (which I learned about here at JGO), but I am glad I learned how to drive the rendering in Swing. I wrote elsewhere (not sure where at the moment) about the rendering thread/timing design, but briefly, it separates all data and update operations from the Swing/AWT thread, then prompts Swing to repaint on demand. It was very important to specify very tight repaint bounds (clipping region), and write all my painting code to adhere to the current clip region. This is more complicated than the traditional repaint-the-entire-screen-on-every-frame approach.

I must have done OK, because I can maximize the Island Forge window, zoom the world view way out, and still get decent frame rates. There's more I could write about how I actually render the world view, but that's just getting into technical aspects, rather than overall project experiences. Must go now, but thanks for reading.

The very first game I released was a tetris clone. I was reading this java game programming framework book and encountered a tetris-like game sample. It quite lacks some things from tetris, but the program implements the basic idea. This book demonstrates samples using the framework the author wrote. I loved his sprite class and I altered it to suit my needs. Since then, I have been using this sprite in my games. It helped me to build my basic game framework package. I decided to use this tetris-like sample as reference when I need and make a complete tetris with basic functionality.

Anyways, aside from tetris drops, I implemented hard drop, next block view, and some simple animation. I was satisfied at the moment, but I would never want to look at that code anymore lol Also, I did not write this game with 100% of my own strength. Like I said above, I used the sample from book as a reference.

Up to now, I have created 4 original games excluding this tetris clone. After my tetris clone, I participated in a game programming competition between my friends who do broadcasting. It was between about 4 or 5 of us. We took about a couple months to come up with our own games written in java. After 2 months, we held a week to take votes and comments from the visitors on the broadcasting. This was an amazing experience. Receiving votes and comments was incredibly awesome and fun. It made me happy and motivated to learn more.

I am confident I learned some valuable lessons and improved my skill. Visiting this forum and asking questions also helped me a lot as part of it. Throughout the process, I have built my own rule for coding a game. With lots of pain, I learned how planning is important. It's logical, but you do have to know and identify what you are making. It is sometimes hard to determine the separating line between what you think you can do and not. In those cases, I recommend trying to implement it on a sample if possible. Another lesson is, "don't plan a game you can't make". It will give you stomachache if you don't have the capacity Though I do believe you will learn something from it. Just slowly and surely make a progress.

There is a recent simple game I made within 5 days. I had intended to submit this to a tv show from Japan that introduces creators in this internet culture. They are very friendly and always introduce pictures and works from viewers. The problem was that I only had about 6 days til next episode when I had decided to make this game. So I took 3 days to plan the game and program structure with only the implementations I was confident with(no totally new things). I spent 2 days to write the game without sleeping on the second night. I barely made it on time. The progress went smoother than ever because I knew what I was making and how to make it.

So they did introduce my game on the show and so amazing that it surpassed my expectation far away. 2 people from the guest on the tv show played my game and these 2 people are pretty famous and well known. I received some compliments and comments through twitter. This experience was just awesome like one of my best experiences. Lacks of some user friendliness such as colors hard to differentiate and not explaining the rule enough were pointed out, but I definitely agreed on that. I spent another 3 weeks to update this game integrating high score system and fixing/changing things around to make it better.

Sorry for the long post. What I want to say is that, you should have fun with game programming!

This tv show talks about the creators who share their works over internet such as music, graphic, game, crafts, or any original works. They do the recording on a broadcasting website and airs on tv several days later. There was nothing superior in my game except that I believe I was the second person at the moment to submit a game. People usually submit drawings.

@ReBirthIt's really a simple game. It's in Japanese, so it might be hard to understand. Basically, you catch the acorns that fall from above within 30 sec. If you touch the fairy, you get stuck for a bit. You only use up, right, and left arrow keys to control. The character and the idea in the game come from this tv show, so it might not make sense to people who don't know this show. http://bit.ly/OGs5au It's the game at the top. You can click on the title to download.

I'm now learning web languages and plan to learn to make games in javascript. Apparently that and html5 are the future.

The future, lol, you will have to be very patient because even Runfield runs slowly with an Nvidia Quadro 5000. I advise you to go on using Java until Javascript, HTML5 and WebGL will become fast enough even for very simple games.

I agree with you about programming skills. People are often unable to understand that a computer programmer is not a computer artist.

I tested under GNU Linux with Firefox 10 ,12, 14b7 and Chrome 19, lots of frames were skipped, driving the game totally unplayable. One of my colleagues didn't reproduce this problem on his laptop under Windows. I still say that the performance is not consistent across different platforms.

... People are often unable to understand that a computer programmer is not a computer artist.

This is essentially why I stopped reading Game Developer Magazine; it really should have been called 3D Artist Magazine, because that's almost all they talked about.

I tested Runfield in Firefox 13.0.1 in Ubuntu 10.04 with an ATI Radeon HD 4200 (on the motherboard), but without OpenCL (etc) drivers. Pretty weak, I know, (that's how much I'm into hardware acceleration). The game was playable, but inconsistently jittery.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org