My First Application!

Hello There!

I’ve just created my first application and I’d like to share it with you guys. It’s a simple game where you just avoid hitting the walls that randomly generate.

It is 100% ready for android thanks to help from the forums. Thanks to everyone who helped me do this.

It’s not perfect as there are some crashy issues, but I’ve learned a lot here. This is only my second real java project and it went really well, as I am new to both programming and game design

Here are some screenshots.

There are two modes, here is the classic style Arcade Mode.

And for a more modern 3d experience, this is chase mode.

The only difference in the two modes is the camera angle but it provides a different type of experience.

I’d like to start making some applications for google play, but am wondering the rules about doing this. I have no idea about licensing issues or whether or not I can publish this. As you can see I used the models provided by jme.

Anyone who knows might be able to enlighten me.

If you’d like to check it out I have the whole source here on my github.

Thanks for reading!

6 Likes

Oops I forgot to link to my github!

Here you go

Congrats man! Kudos to you for starting small; a lot of people can’t resist the temptation of jumping straight on to their dream project :wink:

I’m curious:

  1. What was your first real Java project?
  2. In your opinion, what are the most important things for a beginner programmer to learn before trying to make a game with jME3?
1 Like

Hi there,

My first real project was this one.

It’s much more advanced than this game, and was my first real java project. What I mean by real was I had no goal in prior projects, other than to learn the basic uses of java by testing different things.

My process in programming was, learn basics such as System.out.println() and using multiple classes. I had made a very simple minecraft plugin, which gave me a way to actually implement the simple things I learned. I had no true concept of objects or java before heading into jmonkey. I did your tutorial set “Hello Whatever” which was fantastic and taught me a lot.

I then proceeded to import models into the game, and made my own scene in the sdk, using the tutorial examples, and essentially replacing the models and some things here in there but relying mostly on copied and pasted code.

Once I had a good idea on what things were doing what, after adjusting all the values etc. I started on my start to finish fps.

Which was my first “real” java project.

Here is the related post

http://hub.jmonkeyengine.org/forum/topic/my-first-game/#post-262219

Here is the github

The game is more complicated and less well written as the game I just wrote. I have a good idea of java now, and would call myself a beginner in knowledge, currently my knowledge of implementing, extending, anonymous and abstract things, is pretty much 0. But has not really limited me in my quest to game. I have some experience in extending but do not know the true implications of what exactly I’m doing.

My next project I set out to make the dynamics of the game simple, and I got exactly what I wanted in the production of the game. But what I wanted to learn was how to put it onto android, as that is my end goal in learning java, is to learn to make games for android.

I spent about 2 days making the dynamics of the game itself, and about 3-4 just trying to get it onto android (I can do it much faster now I’m sure)

But my goal is complete, and I have learned a lot and am happy with the result.

As for what beginning learners need to know in jme. There is a slightly hostile environment aimed at the very inexperienced which can scare some people away, and would keep me from the forums until I had exhausted all efforts and often time leading to a waste of time in over doing it.

While I understand that one should not post on the forums until attempting all solutions, in some cases, what is obvious to me now, could pose a major problem to a beginner, and rather seeing them as someone asking for help on a simple issue. In their mind this could be a very complicated procedure and after a few helps on simple issues, the rest of the engine begins to come together.

Other things is I used the #jme channel in the freenode irc. This is not an official chatroom but has some very knowledgeable people who can help in live chat and there is usually a least one or two people in their. Perhaps making this an official channel might be able to get more beginners to hold an interest in the engine rather than slowly getting answers on the forums, especially to those beginner questions.

As for engine specific knowledge, the beginner tutorials are fantastic, and I’m sure if my knowledge of java were better it would have made my experience smoother when I first went through.

I would suggest a walking character picking tutorial. To actually get collision results from the player walking into items and not just the picking with raycasting, as it did take me a while to find out how to collide my players model with a specific node and this concept is a factor in a lot of games.

The android stuff isn’t very well documented or the documentation isn’t very easy to find, as I had to post a few threads to find answers to questions such as setting the Icon on the device and naming the application on the device.

Also, the fact that someone like me can actually write a mobile app for android should be a centerpiece for this engine. I am only 2-3 months into programming and have actually made one.

If that’s not a good enough reason to get beginners here I don’t know what is.

That’s all I can think of right now.

1 Like

Oh yeah, I remember seeing that other game now. Thank you very much for this comprehensive feedback. Gives me a lot to ponder.

I’m sorry to hear the forums came off as a bit intimidating. I like to think as long as you ask good questions, we don’t get snappy, but it’s been too long since I was on the receiving end of this that your opinion weighs much more heavily than mine in this matter. We’ll try a little bit harder :stuck_out_tongue_winking_eye:

Great feedback about the docs as well. I made sure @zathras is aware of it.

As for the IRC channel, it’s been on my mind lately. The main reason we don’t make a big fuss about it is that we want as much information as possible out in the open on this forum, searchable for the entire world wide web to find. Maybe if we could kick off a “TIL (on the chat)” sharing culture of sorts then an active community chat might be more sustainable.

Just got published on the google play store

@erlend_sh As for the IRC channel, it's been on my mind lately. The main reason we don't make a big fuss about it is that we want as much information as possible out in the open on this forum, searchable for the entire world wide web to find. Maybe if we could kick off a "TIL (on the chat)" sharing culture of sorts then an active community chat might be more sustainable.

Well, the IRC has two sides, most of the discussions over there are not really worth a forum thread. There are some of very interesting tech talks going on, but some of the stuff is quickhelp/small talk. As it turns out, there are still lots of people who are more active on IRC then here in the forums. Still, you should try to get the ownership of the channel before advertising it… once published some moderation might be required to keep the spammers away

Nice game! Maybe the next flappy hit =D

I tried the desktop version. Still wondering why I can’t get jME apps running on Genymotion except my own ones :-?

Thanks for sharing.

I want to post this under one of your threads so you could track it easier than having to do a forum search…

ASUS Transformer (4.2.2)

Stuntman: AssetNotFoundException (Interface/Default.fnt I believe)
GoblinRun: Seemed to run fine. Started running and after it a bit it closed with no visible exception
** Second attempt ran just fine… Fun game! I probably didn’t do so well… but will keep playing it :wink:
TankRush: Same issue on first run after install
** worked great on the second launch.
** Crashes on lose focus/regain focus
** Ads at the bottom cover some of the buttons
Coin Toss: Worked without a hitch
Bird Simulator: Worked without a hitch
Rolling Stone 3D: Worked without a hitch

It seems all games have the same issue with losing focus then gaining it again though. (I think this is a known JME issue)

Will try them on my HannsPad in just a bit here. I would expect the same results as above though as it is the same OS version and I’ve never had an app act any differently, just run a bit slower.

@t0neg0d

Hi there!

I have found a solution to the default fonts, but it is quite hacky and just involves essentially crashing the application onStop() or onDestroy()

But there Ive just found my crashing issue and I’m sure you can help me out!

When my applications are opened in portrait mode, they crash!

I’m wondering if you would know how to properly make this applications transition to landscape when opened in portrait mode

EDIT: Also, the game stroople is based completely on the GUI Node, and for some reason… the screen stops taking clicks after a certain period of time and the buttons dont even receive the click.

You’ll see the issue if you download it

thanks for testing so far!

If you could take a look,

@BigBob said: @t0neg0d

Hi there!

I have found a solution to the default fonts, but it is quite hacky and just involves essentially crashing the application onStop() or onDestroy()

But there Ive just found my crashing issue and I’m sure you can help me out!

When my applications are opened in portrait mode, they crash!

I’m wondering if you would know how to properly make this applications transition to landscape when opened in portrait mode

EDIT: Also, the game stroople is based completely on the GUI Node, and for some reason… the screen stops taking clicks after a certain period of time and the buttons dont even receive the click.

You’ll see the issue if you download it

thanks for testing so far!

If you could take a look,

I’ve seen the first problem you mention as well, but haven’t found a fix for it yet. The good news is, this is likely why the app stopped after install, as I was holding the tablet in portrait orientation when I opened them.

Let me try out the other and see if I can figure it out.

@BigBob said: @t0neg0d EDIT: Also, the game stroople is based completely on the GUI Node, and for some reason.... the screen stops taking clicks after a certain period of time and the buttons dont even receive the click.

As a first thing to try, since the app doesn’t require the z-order to be changed at all, set everything to:

[java]
Element.setEffectZOrder(false);
[/java]

And let’s see if the problem is related to the something being pulled up over the buttons.

EDIT: This game needs instructions! I can’t figure it out>.< My poor feeble brain is trying… but smoke is coming out of my ears and I’m not getting it =)

Ok… figure out Stopper! Trying out the others now.

EDIT 2: Alternatively, if you zip up the project I’ll take a look at how the events are being set up and see if I can figure out why it is happening for you. Just let me know what works best for you.

@t0neg0d

here is the entire project folder for the game Stroople

Go ahead and take a look.

Basicall I just remove and add elements to the screen based on the situation

Ok… after creating each of the buttons, just add: (So far, I’ve only glanced through the code directly in dropbox)

[java]
buttonOne.setEffectZOrder(false);
// etc
[/java]

This should stop the issue from happening for the time being.

After dinner, I’ll grab the project and run it locally so I can see if it is the z-order being set wrong or if another object in the way. I’m thinking it is the second, because each button becomes un-clickable in order (left to right).

Oh!!! Totally random thought here. You may want to replace removeElement calls with hide(). This removes the element from the scene without removing the reference (or changing the current z-order) of the element.

So, in the contructor of the appstate that creates the buttons, add them to the screen using the alternate addElement(Element element, boolean hide); option.

Then in initialize call Element.show();

And in cleanup call Element.hide();

This will have the same effect (i.e. limiting the rendered screen) but will keep the screen from having to rebuild it’s list of elements over and over, as well as not change the existing z-order.

hi men your proyect is amazing i am making the same proyect you can help me pls or can pass the code thx =D
greetings from colombia