So with video games, you're going to want to go with Libgdx. Libgdx is a fantastic game library (and honestly the standard for Java game libraries at this point).
It uses LWJGL, which is an OpenGL wrapper for Java.
Both of which allow you to use OpenGL with Java, but Libgdx adds some extra functionality if you're looking to build things a little quicker.
Sure, Java sometimes gets a bad rep, but as long as you know what you're doing, any performance differences would be trivial compared to alternatives. The JVMs have come a long way and are very well optimized these days. And if you're looking to release on Android, then Java would be the recommended choice. You can also even deploy native executables on Windows, Linux and OS X with software like Excelsior JET. Either way, your end user likely won't care or understand what programming language you're using anyway.
Also look into LibGDX, which is a popular Java game development framework.
Anyone who has written a fully-featured, free and open sourced android(+) game library (libgdx) is certainly afforded a bit of leeway for self-promotion.
Is the game creation in the book based on libgdx?
*ps, don't forget to crosspost to r/gamedev
Do you want to write a game or an engine? If you want to write a game, using an established, well tested framework or engine is your best bet. Internet is filled with stories of endless engine development, and they, in most cases, never get finished. So for a 2D game on Android and using Java, I would recommend libgdx.
If you really want to start from scratch, you can either draw on Android views (through Canvas I believe) or go directly to OpenGL. I don't think anyone really writes games using normal Views, it's all about OpenGL due to performance. Googling something like "android canvas game loop" or "android opengl game loop" will get you started. Game loop is essential to game development and one of the starting concepts so you should find some basic tutorials.
I can't recommend anything, because I've always used a framework myself. I can recommend /r/gamedev though, lots of resources there and it's focused on game development while /r/androiddev focuses more on apps I believe.
You guys shouldn't create day old shill accounts to post and comment. I think your product can stand on its own without such bs. Shill accounts to post content is one thing and already problematic. Shill accounts to comment on content to increase "interest" and pretending to be a user is a bit weird.
Why not have u/vprise post and comment? He has cred and is the guy behind Codename One.
As the creator, i find it super easy to work with, YMMV :) Judging by the number of folks using it, it can't be to terrible. I never used Slick2d. From what i know it's more like Java2D when it comes to drawing things, so initially probably easier to grasp. Start here: http://libgdx.badlogicgames.com/documentation.html
If you use the libgdx library, I know you can output to HTML5 - I assume that means just HTML5 code, without applet. Check out libgdx, it seems pretty great - I've been investigating it the last couple days.
LibGDX would probably be the way to go if you want cross platform 2D using a language you're familiar with.
HaxeFlixel doesn't use any of the languages you mentioned, but you'd be able to pick it up very easily, and it's probably what I'd recommend.
If you're really gung-ho about Python, Unity has the option of Boo, which is at least heavily inspired by Python, although it's pretty poorly supported compared to C# and UnityScript and you won't likely find many people able to help with it specifically. Of course, you'd probably do just fine with C# in Unity, since it's so similar to Java, and most people will tell you that's your best option.
You can also take a look at the java project libgdx, not because it's a library you may want to use, but because they provide a very helpful way to develop a single java application on multiple platforms. "Write it once run it on all the things" kind of sort of like that.
You might be interested in jMonkeyEngine. A game engine written in Java with support for Windows, OSX, Linux, and Android (iOS is coming soon too). If you want to develop 2D games, ~~Slick2D~~ libGDX is probably what you're looking for.
I don't know specifically whether Pewpew uses this - but certainly consider developing with a library such as libgdx. Libgdx is a well used library that will contain a lot of well optimized boiler plate sprite code that would fit perfectly for such a game. Bonus, you can first test on your development machine (easier than an emulator or a development phone) and iPhone porting is being worked on.
If you use libgdx, you can write your game in Java and have it run in the browser as HTML5, an Applet, on each desktop platform, on Android and optionally (with a monogame licence) on iOS.
Alongside Unity that has been mentioned already, I'd also recommend trying out libGDX.
It's more of a framework than an engine, so it would be more code-based, but it's very powerful and has a lot of good tutorials out there, like:
Whatever you choose, best of luck!
> PS. I used a throwaway just incase I get downvoted.
Good thinking. I don't know how you'd recover from that one.
The issue isn't that you can't write Objective-C without a Mac; Objective-C can be written and compiled with any modern OS. The issue also isn't that you need Objective-C; you could write your app in Java with LibGDX, for example, and compile it for iOS.
The issue is that Apple will not let you compile iOS apps without a Mac. You will need access to OS X in some form, be it a on a physical Mac, Hackintosh, VM, or remote machine you're renting. There is no way around this. (While we're at it, you'll also need an iOS Developer Program account to publish your app, which costs $99/year)
Minecraft wasn't Notch's first game... so you should definitely start simpler. He already had background knowledge/experience.
Yeah he used eclipse to edit code, but the 3D graphics library he used was lwjgl for access to OpenGL. Again, not really something for beginners... but beginners could start by looking at the sidebar of /r/opengl if really motivated to reinvent the wheel. If not reinventing, using something like Unity3D (which you already are) seems sound for actually knocking out prototypes of games rather than learning graphics programming.
Like you suggest in your post, doing a few simple 2D games is probably wise. If you still wanted to stick with Java, check out libgdx:
http://libgdx.badlogicgames.com - If you follow the getting started tutorial/guide there should be minimal hiccups.
Having some experience in phonegap I have to say it's all right, but has a really confusing setup if you never made iOS or Android applications before and certainly has some compatibility issues (which usually have to be fixed yourself or require alternative plugins).
I'd personally say making applications for iOS and Android natively is the best way to go to ensure compatibility, however there are quite some neat frameworks as well.
The one that I've been trying out was libgdx which looks pretty neat, but the language used is java.
In conclusion, I would personally advice you to: First, make some native iOS/Android applications - especially since you have to get a good idea of how these work and how the frameworks work - after you managed that, try to use a framework to keep a single source for all platforms.
Also, a little remark on your edit: > To make my question a bit clearer, I guess i'm asking if my end goal is to be making apps for android and IOS, and I love Incrementals can i spend the time to make it on that ? or do they just not work very well in java?
Note: Java != JavaScript!! Many peopel tend to make this mistake and they are two completely different things! Java is an object oriented/high level language, while JavaScript is a dynamic programming language mainly used for front-end web development.
Android applications are natively writted in Java in combination with the Android SDK. While iOS applications are writted in Objective-C, or possible Apple's own development langauge Swift (build on Objective-C aswell).
Note though: If you want though, you can always keep your application a web based applications and simply deploy native applications which only load a webpage. Just keep into account that you should have a responsive design for your webpage in that case!
>What exactly is LibGDX?
A good start would be a visit to the libgdx website. http://libgdx.badlogicgames.com/ The landing page should answer this question.
>How would it help me in developing a game?
A mind-blowing amount of work is already done for you. http://libgdx.badlogicgames.com/features.html
>Are there alternatives that are more suitable for beginners?
If you are familiar with Java, libgdx is easy to pickup!
This sounds like game programming; I recommend /r/gamedev
If you're just trying to make something for the sake of learning, you'll want to look into the Java 2D API.
Otherwise, I recommend a framework like libgdx (spiritual successor to Slick2D). These frameworks handle a lot of the things you describe (like handling spritesheets, drawing images on the screen, mouse events, etc).
Fellow gamedev here. I am not targeting OUYA, though I do own one, as one of my platforms though. I will answer you questions in the order you asked then add some more to the end.
1) It is very easy to make games for the OUYA. I have a tutorial up on github, until I can move it to my website, on how to start making a game for OUYA using LibGdx. Porting all depends upon how large your game is and what language is is written in, also if you are using DirectX you are going to have to change a lot more than if you were porting a game that is using OpenGL.
2) Since I haven't actually released a game for OUYA I can not say much about the money part but the whole reason I bought it was so I could play games without paying money. Also the OUYA has a very small amount of customers compared to other gaming markets. It also has a large amount of games for the amount of customers it has. About (and I'm just guessing because I can't find the number of OUYA's sold) 1 game for every 30 units.
3) If you don't already own an OUYA (and people in this sub are going to hate me for this) the I suggest you stay out of the market for it.
Also search through /r/GameDev for topics on the OUYA, I am sure there are some out there.
LibGDX is somewhat comparable to MonoGame/XNA, including running on mobile platforms. It also has a web deployment option, so you might want to check it out.
You're right, you'll find from perusing Feedback Friday threads on /r/gamedev or looking at entries from Ludum Dares that plenty of games are written in Java today, and a fair bit of them aren't web-based or on Android.
Desktop Java games are made with either LWJGL or LibGDX, these are games libraries that include handling of audio, graphics, input, etc. LWJGL is better for 3D stuff, and LibGDX is better for 2D. LibGDX is cross-platform, meaning you can move your project to Android relatively easily.
Don't necessarily post there, but search /r/gamedev for ideas on how to get started with basic algorithms, such as your main game loop. I recommend you start with LibGDX, there's a lot of documentation for it and the developer is a redditor who offers a lot of feedback.
Lastly, avoid Slick2D. It's a decent 2D library built on LWJGL. It's good for making games still, but their isn't much support for it anymore. The developer, Kevin Glass, has stopped development on it (and I believe moved to making his games in LibGDX).
edit: It looks like /u/thepheonic already steered you in the right direction
You should try out libgdx which if I remember correctly Andengine is actually based on. You develop the games while working on desktop versions and the only thing you have to do to make them mobile apps is create a new wrapper application that calls the original one with some different settings. Mario, the maker of libgdx is a redditor and he's even written a book on Android game development that walks you through creating your own version of libgdx.
Yes, you can run it without gradle. You need to add the relevant jar-files. Download the latest nightly build and add the corresponding jar-files to your project: http://libgdx.badlogicgames.com/nightlies/
I think those 4 should do the trick.
C++ and GDScript because I use Godot nowadays. I prefer coding in Java the most though, because my favourite framework is libGDX which is awesome and there's IntellJ IDEA. And I also love using Artemis-odb together with libGDX. I use C# in Unity occasionally to learn some algorithms and/or study other dev's work from game jams.
The chronological progression goes AWT -> Swing -> JavaFX. Each one contains a number of elements from the former. JavaFX is supposed to be the future of GUI programming in Java, but there is still a lot of Swing code out there. Plus, many of the GUI designers are still geared towards Swing. JavaFX is a lot better for developing web-type applications, including animations and video.
Basically, either Swing or JavaFX will do fine. There are also some third-party GUI libraries out there, like IBM's SWT (which is what Eclipse uses), and libGDX which is geared more towards game programming and graphics intensive applications.
Parsing XML is relatively slow, but there shouldn't be that much data (at most a few kilobytes) so it shouldn't matter.
Now, rendering, I think you've got no excuses :P Are you using OpenGL?
Also, if you're using Java, why not libgdx?
Squidlib if I want to go ascii, Libgdx if I am feeling tiles or mobile.
For common things like pathing I have extracted out most of my algorithms into a separate library that I can just throw in Gradle.
Might I suggest LibGDX? http://libgdx.badlogicgames.com/
These tutorials will get you started. But don't skimp on the basics (unless you already know them) starting with the core of java would be my best advice then move on to programming games.
Not sure I understand you question. If you create a new music, set it to looping and play it you don't have to worry about any audio backend stuff. Example:
song = Gdx.audio.newMusic(...); song.setLooping(true); song.play();
Edit: As for having a intro to the loop just play a different Music variable and give it an onCompleteListener.
PS: Use OGG, MP3 isn't suited for looping.
You don't need an outside program, but it helps.
There are a number of them. Because you mentioned flappy bird, here is a nice tutorial walking through making a flappy bird clone the using LibGDX framework (http://libgdx.badlogicgames.com/).
http://www.kilobolt.com/zombie-bird-tutorial-flappy-bird-remake.html
The engine currently runs on Windows and Linux. It should work on Mac too, but I haven't tested it.
The underlying engine, libgdx supports Android/BlackBerry/iOS/HTML5 as well, so it shouldn't be extremely hard to support those too.
I plan to make it eventually support more resolutions. I currently have it set to 640x480.
The battle system: I guess everyone has their own preference, but it's not necessarily an issue to support multiple battle layouts.
If you're interested in helping advance the project, PM me.
If you are into java, LibGDX is a pretty good idea. It supports developing for Desktop, Android, iOS, and even the web by compiling to JavaScript! The development cycle is really nice with LibGDX, and it just hit 1.0
The IRC channel is really friendly and awesome, so I highly recommend it :)
It's pretty easy I'd say. I'm a noob to be honest, yet I had no problem getting a project running. Just check out the tutorials of BadLogicGames themselves to get everything set up. And here are some links for game development with LibGDX: Game from scratch and Java Code Geeks.
The hardware acceleration is OpenGL. So just use OpenGL. You are basically reimplementing a small subset of OpenGL with worse performance. The shader to do this would give you very good framerates, with very little CPU usage.
There is OpenGL support on all the devices you mentioned. I actually like the libGDX approach the best. The only thing that I have had portability problems with are shaders, mostly desktop->mobile. But they were easy to fix.
I can't speak to how well it ports to mobile devices, but I'm using LibGDX for my desktop PC game, and while it has a few shortcomings (I'm looking at you, sound system) it generally has everything I've wanted from it. It's written in java, and at least setting up a simple demo to play on my android device was very easy. In the end I decided to forgo the mobile platforms, so I don't know how it holds up to a full game.
Unless you want to get to know a little bit about NDK usage, it's probably not worth it for you buying the new version.
Agreed on the Euler integration, should have introduced Verlet. But as you said, for the games developed in the book it's good enough, and i wanted to keep the math as simple as possible.
Not sure when you last checked the docs, but we did quite a bit in that area over the last few months. Check http://libgdx.badlogicgames.com/documentation.html and make sure to follow the links to the Wiki and Javadocs :)
I guess looking through the code of open sourced games can help. We have a couple that are a tiny bit more advanced, linked to on the page above.
Quite worth mentioning if you're doing game dev - <strong>try libgdx</strong>, you can compile the same codebase for either android or desktop (java), makes for a much faster develop/test cycle.
Yes, this. If you need to learn java, go do this course on Stanfords website. Then head over to libgdx.badlogicgames.com and read through some of the examples, the wiki, and the documentation. And pick up the book jc4p mentioned, I bought it and it really is fantastic.
Using Java? Look no further, libGDX is the best way to go. Deploys to desktop and mobile (even iOS), is constantly updated and maintained, and performs extremely well on mobile. Take a look at their demo games as a starting point, and modify them to your liking.
Hi and sorry for my english
Check the docs for the Pixmap class
Basically, create a pixmap of the desired size then update the pixmap using drawPixel(int x, int y) method using the x and y coordinates from the touch and finally render the pixmap to the screen.
Good luck!
It's not a dead end. Check out libgdx for an example of a great framework in active development. One of the top 5 best-selling games of all-time is written in Java. There are even popular games made using stuff like GameMaker, e.g. Hotline Miami, Risk of Rain... The player doesn't care which language or tools you used. It's far more important that you gain more general gamedev experience than it is to worry about which language you're using.
You should pre-process your spritesheet to remove background. If there's too many images for manual processing, you should automate the process using ImageMagick or similar tool.
First reason is that doing it in game will increase start-up time and waste battery (if on mobile device). The second reason is that if image is not pure pixel art (if it uses anti-aliasing on edges), the results will have ugly whitish edge which can only be removed in good image editor. The third reason is if your spreadsheet uses white as normal color (not only as background color), removing the background will require human judgement.
If for some reason you still want to do it in game, you have two options. You can write your own shader that will skip over white pixels, or you can modify your bitmaps before you convert them to textures.
Basically you load image from disk into Pixmap object, then use getPixel and drawPixel methods to control value of each pixel.
Oh, I forgot to give you a list of libraries. For Java I use http://slick.ninjacave.com/ and sometimes http://libgdx.badlogicgames.com/ for LUA I use https://www.love2d.org/ and I haven't really had time to work with Python, but I know people who have recommended it.
It's moving to a new site:
http://slick2d.org/
See here for details.
LibGDX is also a great Java game dev platform.
You don't need to know OpenGL ES in order to use Libgdx. I'd suggest checking out the documentation page. The community is very active and we also have an IRC channel you might get some help from. I'd highly recommend checking out the beginner tutorials on the wiki as well. The Wiki is still under construction, we are currently working on a complete dev guide. I'm aware that it's still lacking but please cut us some slack, we do this in our spare time :) We have full Javadocs as well of course.
Runs great, so long as you are using WKWebview and iOS 8. The UIWebView is terrible. Android runs flawlessly, honestly you can't notice the difference between a Native or Web app in Android. I don't use Canvas, so I can't say anything on that.
If you are looking for a good xplat game solution, I would suggest LibGDX. I think it would really be your best solution. I have used it several times and I highly recommend it.
I use LibGDX, so I tend to recommend it for games that don't require the power of Unity. Also, if you're asking if you need to know loops and arrays, you're probably not ready to make any kind of game.
If you want it to be cross-platform without any risk I'd use their REST-API and use the built in LibGDX networking API. Your other option is use one of the Java API implementations but there's no guarantee that it'll work across all platform if you use this code in your core. The third option is to use platform specific code (via callbacks) and implement the most fitting API per platform, this however is the most amount of work.
If I were you I'd go with the REST approach.
The featurelist on their webpage is a good place to start: http://libgdx.badlogicgames.com/features.html
The engine can do pretty much anything you need it to, I think part of your problem may be not knowing where to look for documentation on features.
API docs are essential for this kind of stuff: http://libgdx.badlogicgames.com/nightlies/docs/api/
Scene2D is a perfect way of handling things. If you haven't already seen it, I would point you towards this tutorial which does a pretty good job of explaining how libGDX's DragAndDrop functionality works. Other helpful resources include an example from libGDX and the actual set of classes in the API here. If you need further help with setting up DragAndDrop or have any other questions I'd gladly help. I've successfully implemented libgGDX's DragAndDrop into my game so I have a pretty good understanding of how the thing works.
Hope this helps!
Probably the most straight forward, at least for basic text. Create a BitmatFont object, and between your SpriteBatch .begin and .end calls draw on the BitmapFont object
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/BitmapFont.html
Check out http://libgdx.badlogicgames.com/ - 2D and 3D to some extent, excellent performance, all in Java, open source, great community.
Cons: a little bit low level (compared to say... Unity) - this can be good or bad - depends on your preferences
Hi /r/programming ! Ive recently released my first game for Android and I would love you to check it out. Its written in Java and uses libGDX as its main framework. Spine2d is used for various animations. Collisions use Box2d and the lights are created with Box2dLights. My inspiration should be obvious. You can check out my horrible code on github!
Thanks for your time!
I'll also add libGDX onto that. It's a Java game engine that outputs your game to work in Android, HTML5, Desktop, iOS, and I think they're working on more. Easy to set up and light enough where if you don't want to use certain features you don't have to.
>I've been looking into Kivy, but it's my understanding that Android uses CPython, and Java is the native environment? Is it tricky to get Python code up and running on Android?
You don't have to worry about that a lot with kivy, you'll get .apk that you can install. But under the hood it's much trickier to get python running, especially when it comes to gui stuff, on android - and it comes with some limitations, most of which won't concern you when you're developing games but for apps I'd recommend to use native java instead.
Also check out libgdx for great cross platform (Desktop/Android/BlackBerry/iOS/HTML5) game dev framework that uses java. Honestly that might be the easier option in some cases than python+kivy.
Yes, this is actually the default behaviour of LibGDX's DragAndDrop class. It's called "drag time" and can be configured (to 0) via http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragAndDrop.html#setDragTime%28int%29
The sane thing to do is learn libgdx (If you just have to stick with Java), or Haxe + OpenFL (Haxe is my personal favorite. It's close to Java, but friendlier.).
It sounds like you're pretty new to programming though, you might not be wanting to learn a whole new way of programming when you could just be making the stuff you want to make, am I right?
I like to think that someone with enough dedication can make something awesome, even if they're using the "wrong tool".
So, I couldn't find any tutorials for this, but one thing you could do is have each "scene" in the game be a different activity (or fragment, if you have learned those yet). Your characters and objects are images, which you animate around the screen. For instance, the player sees a scene with a house and a road and there's a tree in the distance. The road is a series of buttons(they don't look like buttons, they look like a solid road since they're right next to each other) so when you touch part of the road, that fires a listener that moves the main character to that piece of road. Same thing with the house, and the tree. You can also have a fragment up in the corner that serves as the inventory.
You will definitely run into tons of weird issues if you do if this way but, I never said this was a sane answer! Just a fun one, possibly, and one you can just start hacking away on right now with a basic Android knowledge.
Have fun.
I have only used it in 2d and "3d" tilemap + sprite games, but the framework is built on the Lightweight Java Game Library, which is mostly a wrapper for OpenGL. Check the docs to see if there are enough of the 3d tools builtin for what you need.
Besides MathUtils, there is also GeometryUtils and Intersector.
I see you mentioning creating your own JFrames, that's not bad, but if you want to great bigger games I highly suggest you look into libraries for developing games.
A couple of examples:
Slick2D
lwjgl
LibGDX
Creating games with these libraries should be a whole different experience from creating your own JFrames and such, you'll have to worry about being able to draw stuff on a window.
There are built in repositories that come with java that you can use for both 2D and 3D. They are pretty good (not great).
See:
Specifically:
Those classes would be a good place to start if you are using these libraries.
I would also highly recommend using the libgdx library which you can find here
i'm into game design as well and i'd say if you're familiar with java then have a look at libgdx. you can write your code once and then compile it for all the major platforms, mac, linux, android, html 5..
C# is very similar to Java, you probably wouldn't have too much trouble learning it.
I don't think there's anything exactly like Unity which uses Java, but if you insist on sticking with that language there's Processing and libgdx.
There isn't actually a lot of Android specific code in PocketBandit. I used libGDX as the underlying framework. It abstracts most of the platform specific stuff and allows you to develop on your PC without having to use an emulator (that was the selling point for me).
Unity and Flash are the two essential engines you should be comfortable with if you plan to get into the game dev industry.
If you are interested in programming graphics (as opposed to just gameplay, or AI, or what have you), I'd strongly recommend learning GLSL and OpenGL. It will give you a better understanding of the graphics pipeline, make you a more versatile and sought-after game programmer, and give you insight into various optimization techniques.
Even if you are working with a relatively high-level OpenGL wrapper, like LibGDX, you will learn more about graphics programming and how the pipeline works than if you were to use Unity or Unreal to do all the heavy lifting for you.
This doesn't mean you need to devote years to creating your own 3D engine; in fact, making a simple shader-based 2D game that uses various 3D-related concepts is a very good way of getting started with GLSL. I recently started writing a series which may be of interest to you, and although it targets Java/LWJGL/LibGDX developers, the concepts could be applied to any language. See here.
LibGDX is a good library for this. It allows you to get down to the nitty gritty (GL calls), but also has a lot of utilities built atop it like 2D sprite batching, 3D model loading, VBO/mesh abstraction, texture decoding, 3D perspective camera, etc.
Hey, you should check out libgdx if you want to jump into Android + Desktop + HTML5 with Java. It requires a bit of a hands on approach to learning/exploring the library since it moves so fast and is quite expansive. It's designed to integrate with Eclipse (comes with a gui for starting new multiplatform projects) etc. Drop by the #libgdx channel on irc.freenode.net if you need a hand.
Oh goody lots of questions...ok here we go.
My engine will be open to other people to make games after I finished mine.
There will be a tool to add pokemon and attacks, but I don't think I should stray away from the 17 original types.
I won't be adding shadow pokemon or snagging since I never played the GC games. Once it becomes open source I'm sure someone can make it thought.
Yes there will be double/triple/rotation battles.
Yes as I've mentioned it will be open source.
Glad to help inspire you! Programming is really fun to learn and I don't regret it.
I'm coding in Java, which is NOT the best language for games. But I'm using LIBGDX which is a graphics library that allows Java to access OpenGL. In normal talk, that means that the graphics will be drawn with the computer's video card, which makes for much faster rendering and makes Gaming with Java not suck.
You may want to check out libgx. It's a game development library for Java that also works with Android. You can do 2d and 3d game programming with it.
EDIT: I noticed that you said you're new to Java. Go here, and do this intro to Java course from Stanford. You'll even build a simple game (breakout) as one of the assignments. Once you've finished, then head over to the libgdx page, and start reading.
I'm wondering whether you should mention game engines. There's a few of them out there ([Andengine](www.andengine.org/) and libgdx come to mind) that make game development quite a bit easier, with the downside of having to learn the engine particularities.
If you're going barebones, it might be better to just start with some canvas drawing, and then going over to opengl (or leave that for an advanced class).
Certainly keep an eye out for second hand devices that might lower your barrier to entry. I had completely forgotten about this, but take a look at libgdx. It's a framework for writing OpenGL apps/games in Java that can run on PC and Android. I never managed to get it building properly on my machine but I know that many people swear by it.
It basically means that you can build your app/game entirely on your desktop machine where things are nice and fast, and when you're ready you can build for Android with only very minimal changes (something like 2-5 lines of code).
This sounds perfect for your situation :)
Another great thing about this is that if you ever get an Android device, you can even set the device up to send input events to your app/game running on the desktop while developing, useful for if you want to incorporate gyros/compass etc.
Glad to be of assistance. If you decide to not go with Unity due to the price tag (Unity Pro with Android Pro, 1 year student subscription is $199), you could also take a look at Libgdx. It's currently a lot lower-level 3D game framework than Unity, but I have heard a lot of people say good things about it.
If you want to make a videogame, you could use what you know from Java and make a game with libGDX, or join the Game Developers Club and work on a team to make a game. Games are good projects to show to possible employers.
A lot of internships at small local companies wont have super crazy tech interviews, but I would suggest getting Cracking the Coding Interview if you want to see some example questions to prepare.
Also, I have never put my GPA on my resume, and I have done pretty well for myself. If your GPA drops under 3, just drop it from your resume and only give it if a possible employer asks.
Thanks!
LibGDX is my go-to framework for java gamedev. The process was a bit edgy: Greenlight took about 3 months (but I was not cheating). Going to game convention and getting votes from there really helped.
Once you get greenlit - Steam just sends you a contract / SDK and it's up to you to implement it. Let me know if you need any other details.
I would strongly suggest looking in to libgdx.
It's a great library for a beginner, and has plenty of room in which to grow, up to and including making commercial games.
Yup, Java Gaming is still popular. :)
I use LibGDX (http://libgdx.badlogicgames.com/) for java 2d game dev. The library is really convenient to use and there are plenty of projects/tutorials online. +Good Multi-platform Support is also nice.
Yeah definitely - Thug Racer utilizes webgl so it does get a boost there.
Although Thug Racer is actually Java, using GWT convert to JS - Check out libGDX
So I started off pulling that JS stuff apart and porting it over to Java, then went from there with it.
For centering you need to get the width of the text. For that you can use GlyphLayout.
Then you add that to the width calculation.
layout.setText(menuFont, "Play"); menuFont.draw(batch, "Play", Gdx.graphics.getWidth() / 2 - (layout.width / 2), Gdx.graphics.getHeight() - 300);
Hey!
Firstly are you using the Project Setup tool? And are you hooking up everything with Gradle?
If not, I suggest you download -http://libgdx.badlogicgames.com/download.html - the setup and then use the wiki to build and run the HTML5/Javascript component - https://github.com/libgdx/libgdx/wiki/Gradle-on-the-Commandline
This will hopefully restore some faith in the HTML export.
Next I would gradually implement the parts, say the inputprocessor, into this test setup. So this is more of a debugging exercise. Finally I usually find I get an undefined error when I am trying to access an asset through the AssetManager class which hasn't been loaded.
I am more and happy to take a look at your code, if you wish to share?
Cheers.
The best would probably to look through the demos:
https://github.com/libgdx/libgdx/wiki/Running-Demos
The entire "getting started" section can be found here: http://libgdx.badlogicgames.com/documentation.html and is probably your best bet to getting used to libgdx
Swing components are really meant to be put into a container with a layout manager and the layout manager takes care of sizing and positioning. What you are wanting to achieve is probably doable if you use a null layout and also have a good understanding of Swing painting and the Event Dispatch Thread.
However, you will probably be better off using active rendering and have your enemies and bullets be objects that are keeping track of their own location and then draw them at that location. The book Killer Game Programming in Java is a good resource, you can find a PDF of a draft chapter for an Animation Framework which will serve your needs at the bottom of this link:
http://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html
There is also the libgdx java game library which has great getting started documentation:
A lot of information about font refactoring is available at http://www.badlogicgames.com/wordpress/?p=3658 . This article also contains hints on how to port application code.
Have you tried (table! your-table :hit x y)? It returns the actor at the specified point, see the LibGDX docs.
It is useful to refer to the LibGDX documentation sometimes as it is more elaborate, then you can check the play-clj docs to find the wrapper function.
Although there are lots of great options for engines out there, if you like to work closer to the code then I would recommend LibGDX.
It's written in Java and allows you to compile for iOS, HTML5 (with some limitations), Android and Desktop (because it's Java, this means Linux, Mac and Windows).
I've been using lots Phaser over the last several months for my game projects. It's fairly performant, has a very usable API, tons of examples and documentation, and a very active community.
If I want something closer to native I'll use libgdx with Java. Further down the native rabbit hole? Allegro with C++.
Finally, I've been looking at Go lately, which seems like an interesting language. The gamedev scene for it seems very young though, and there aren't any clear winners yet for higher level game engines and libraries.
Thanks :)
No I'm doing it in Java with Libgdx (http://libgdx.badlogicgames.com/)
It's really a nice library with lots of support, but it's not as easy as Unity (as it's a framework not a game engine), especially when it comes to 3d.
If you slice it up into the tiles, and append each tile filename with _# so something like tileMap_00.png..tileMap_99.png it will index them in the atlas. That combined with using the AtlasTmxMapLoader should let you use the atlas. You will need to add a property at the map level with the key being 'atlas' and the value being the location of the atlas to use relative to the path of the tmx.
It's not rocket science. :) Basically, you need to know your way around programming, be it Java, C++, C#, Python or any other language. Next, start small: write a text adventure or an idle clicker game. After that, a pong clone. Maybe an Arkanoid clone after that. By then, you probably already know a lot more stuff than you did before you started!
For example, creating a text adventure teaches you the basic logic and control structures, and the cycle between getting input from the user and manipulating the state of your game based on that. A pong clone takes it a step further as you do a real-time game with movement and simple collision detection.
And if you're interested, the game I'm making here is done using libgdx which is a game framework / library written in Java. You can write your game once and distribute it on Android, iOS, browser and desktop platforms. It's not the only one to support that kind of stuff, though; the most popular engine / toolset is Unity3D, which supports even more platforms.
Hai there. Don't feel too discouraged falling behind your peers, everyones brain's operate differently and grasps the concept at variable speeds. Practice is definitely important, so be sure you challenge yourself as much as possible. As Tom Watson(Founder of IBM) said, "If you want to succeed, double your failure rate."
Once you pick up Java, learning any other OOP language should be a smooth transition(Based on my experience). Be sure you understand conceptually what's going on before you worry about the syntax.
Since you are learning Java, I recommend taking a look at either Slick(http://slick.ninjacave.com/) or libGDX(http://libgdx.badlogicgames.com/) for building your first games.
Hope this helps you out.
I use Eclipse.
I use a Desktop/Android/BlackBerry/iOS/HTML5 Java game development framework called Libgdx: http://libgdx.badlogicgames.com/
I frequently chat with people on the irc channel #libgdx for questions about the framework. They have been very helpful.
You got it. There is also a debug renderer that lets you see the bodies. This can be very helpful, because the one confusing part about Box2d is that their world is going to be on a different scale from your game world. You will need to convert between the two different scales, and a lot of times to get this right it really helps to be able to see where your bodies are being drawn. If you're not converting right, then you'll notice all of your bodies are tiny and drawn in the lower left hand of the screen, instead of overlapping with the world the way they should be. The conversion is explained here, if you get lost.
The framework looks awesome and I really want to learn it. The website (http://libgdx.badlogicgames.com/) has a link to buy a few books about it. Which one do I need to learn libGDX? I'm pretty comfortable with Android and Java but I know nothing about libGDX. Does one of those books go over EVERYTHING in creating a simple game?
Thanks a lot!
I'll join that google group, I've started learning programming myself (and am also a 28 year old guy), though I have a background in law and biotechnology I'm more interested now in skills I can use a bit more independently and creatively. I started with a bit of python and then switched to java for android. I wrote one useful app for determining the cheapest way to get pissed and one non useful app taking the piss out of virgin galactic's plane crashing.
I'm currently working on a game and am hoping to have a proof of concept demo done in the not too distant future. I'm using libgdx which is a bunch of java tools that will compile your program for desktop, android, ios and if you're game, html.
I can totally relate to your problem - was the same for me some years ago.
Try every framework and/or engine that you think suits your style and needs. Just try to get familiar with it and get some small things or prototypes done. You'll notice if you feel comfortable with it or if you need something else. I don't think I can give you more advice there. In the end it's all a question of personal preferences.
I also want to recommend LibGDX if you enjoy coding in Java :) No fancy editors and stuff. Just a framework to get you started.
Gracias por el feedback. Ya varios me dicen lo del control, creo que si haremos algo con eso. Utilizamos libgdx, es un framework de java que encapsula opengl y te genera launchers para Android, iOS y HTML5, checa http://libgdx.badlogicgames.com/
Since TiledMapTile is an interface, you just need to use a class that implements it, which means either a StaticTiledMapTile or an AnimatedTiledMapTile. You can just use Java interop to do this. For example:
(-> (tiled-map-layer screen "walls") (tiled-map-cell 0 19) (tiled-map-cell! :set-tile (StaticTiledMapTile. (:object (texture "image.png")))))