Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (581)
games submitted by our members
Games in WIP (500)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1] 2 3 ... 11
1  Games Center / WIP games, tools & toy projects / Re: Android : Jumpy Hoppy on: 2014-04-19 22:46:00
I like your apartment clipart background.  I used the same image on my house-warming invitation last autumn!
2  Game Development / Shared Code / Re: My entity properties... a bad idea? on: 2014-04-16 00:28:21
> There will be thousands of entities so I want to multithread processing of the entities.

Premature optimization.  Also thousands of entities isn't even a blink in the eye of today's CPUs.

Getters/setters are overrated in my opinion.  Start with an immutable class (hey no threading problems) and then expose things as you need them.
3  Games Center / WIP games, tools & toy projects / Re: SCREENSHAKE: SixtyGig - Open World Retro RPG. on: 2014-04-14 15:53:36
Those pool balls must be stuck to the table.   Wink
4  Discussions / Miscellaneous Topics / Re: What are Anti-Virus Developers Protecting us From? on: 2014-04-14 15:51:03
I agree that MSSE is all that you need.  That being said, I would caution against claiming any kind of moral superiority on never getting a virus.

I've only gotten one once (that I know of).  It was some vulnerability about 7-10 years ago where just even viewing a malicious image in the browser would be enough to get infected.

If something that serious comes along again, there's not much that can be done to stop it and you'll be hoping that MSSE is doing its job.
5  Java Game APIs & Engines / OpenGL Development / Re: FloatBuffer and Batching on: 2014-04-08 05:16:40
What are your metrics like without iterating over every quad and calling Random?

Even on my system, if I iterate over every one of the 160000 quads and change the vertices using Random, it's quite slow... i.e. +15 msec per render frame where without the iteration+Random it's 1.5 msec/frame using VBO+glBufferSubData.  This is not something I would even consider as there shouldn't be any need to visit every single quad every single frame in this manner for a normal game.

Once you take this iteration out of the picture and the calls to Random you should be able to get better metrics of the throughput of memory to the video card.  Have you tried modifying just a small subset of the quads just so that you can verify that your render loop is picking up changes?
6  Java Game APIs & Engines / OpenGL Development / Re: FloatBuffer and Batching on: 2014-04-07 17:09:52
I've been exploring VBOs recently but on the desktop.  java.nio.FloatBuffers for vertices and textures + ByteBuffers for colors gives pretty good performance.  glBufferData/glBufferSubData is giving 1.5 msec render time for 160000 quads.  Note that I'm not put'ing every vertex every frame though.

No idea about ES and your platform though but have you confirmed that desktop performance is adequate?
7  Discussions / Miscellaneous Topics / Re: new computer purchase advice on: 2014-03-31 23:04:29
After using an SSD machine I don't think I can go back.  Sub 15-sec boot times and apps opening up pretty much instantly is pretty sweet.

And I've always been wary of what I allow to run on start-up + occasional re-installs to keep things speedy.
8  Game Development / Newbie & Debugging Questions / Re: Shaders not working on mac on: 2014-03-30 20:43:09
Maybe try glGetShaderInfoLog to get error messages?

1  
2  
3  
4  
5  
glCompileShader(fragmentShader)
if (glGetShaderi(fragmentShader, GL_COMPILE_STATUS) == GL_FALSE) {
  log.error("Unable to compile fragment shader")
  log.error(glGetShaderInfoLog(fragmentShader, 1024))
}

9  Java Game APIs & Engines / Engines, Libraries and Tools / Re: modify the contents of VBO on: 2014-03-29 01:51:07
Thanks SHC for the tip.  Using glBufferSubData reduced render from around 2.3 msec down to 1.6 msec.  Approximately 25% less time!

OP, did you manage to get your code working?
10  Java Game APIs & Engines / Engines, Libraries and Tools / Re: modify the contents of VBO on: 2014-03-28 18:36:04
Good to know.  I'll give glBufferSubData a try and report back.
11  Java Game APIs & Engines / Engines, Libraries and Tools / Re: modify the contents of VBO on: 2014-03-28 17:26:39
This is what I discovered last night.  The following are scala snippets but should be easy to follow.

My original vertex data are stored in java.nio buffers:

1  
2  
3  
private val vertices: java.nio.FloatBuffer
private val textures: java.nio.FloatBuffer
private val colors: java.nio.ByteBuffer


Assuming you have somewhere to store the int handles to your VBOs (I have 3, one for vertices, textures, and colors):

1  
2  
3  
private var vHandle: Int = -1
private var tHandle: Int = -1
private var cHandle: Int = -1


Create your buffers just once and upload your data to the graphics card.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
val ib: IntBuffer = BufferUtils.createIntBuffer(3)  // 3 buffers needed

glGenBuffers(ib)
vHandle = ib.get(0)
tHandle = ib.get(1)
cHandle = ib.get(2)
 
glBindBuffer(GL_ARRAY_BUFFER, vHandle)
glBufferData(GL_ARRAY_BUFFER, vertices, GL_STATIC_DRAW)

glBindBuffer(GL_ARRAY_BUFFER, tHandle)
glBufferData(GL_ARRAY_BUFFER, textures, GL_STATIC_DRAW)

glBindBuffer(GL_ARRAY_BUFFER, cHandle)
glBufferData(GL_ARRAY_BUFFER, colors, GL_DYNAMIC_DRAW)  // dynamic as this could change

glBindBuffer(GL_ARRAY_BUFFER, 0)  // unbind


Now in your draw method you can paint statically which is the fastest:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
glBindBuffer(GL_ARRAY_BUFFER, vHandle)
glVertexPointer(3, GL_FLOAT, 0, 0)

glBindBuffer(GL_ARRAY_BUFFER, tHandle)
glTexCoordPointer(2, GL_FLOAT, 0, 0)

glBindBuffer(GL_ARRAY_BUFFER, cHandle)
glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0)

glDrawArrays(GL_QUADS, 0, 4 * capacity)  // 4 vertices per quad

glBindBuffer(GL_ARRAY_BUFFER, 0)


But if values change, i.e. you've directly modified the values in vertices, textures, and colors, you can intentionally do an upload.  Here's an example of me uploading the colors also during the draw/render phase:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
glBindBuffer(GL_ARRAY_BUFFER, vHandle)
glVertexPointer(3, GL_FLOAT, 0, 0)

glBindBuffer(GL_ARRAY_BUFFER, tHandle)
glTexCoordPointer(2, GL_FLOAT, 0, 0)

glBindBuffer(GL_ARRAY_BUFFER, cHandle)
glBufferSubData(GL_ARRAY_BUFFER, 0, colors)  // upload colors
glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0)

glDrawArrays(GL_QUADS, 0, 4 * capacity)

glBindBuffer(GL_ARRAY_BUFFER, 0)


At some point in time you need to free the VBOs but that is only when you're done with them and not necessarily every frame.

1  
2  
3  
4  
5  
6  
7  
val ib: IntBuffer = BufferUtils.createIntBuffer(3)

ib.put(0, vHandle)
ib.put(1, tHandle)
ib.put(2, cHandle)

glDeleteBuffers(ib)


On my system, I can render a frame in about 1.5 msec with pure static VBOs.  If I need to upload the colors on 160000 quads, the render jumps up to around 2.0 msec.  Yes technically, I am not modifying the VBO purely in video memory and instead I'm uploading an entire data set.  However, the performance hit appears negligible and note that depending on how I manage things, I may not need to upload data every frame.

[edit] use glBufferSubData instead of glBufferData on upload
12  Java Game APIs & Engines / Engines, Libraries and Tools / Re: modify the contents of VBO on: 2014-03-27 21:20:13
I'm looking for an answer to this too.  My vertices and textures are fixed and I have VBOs bound for them.  However, the colors change possibly every frame.

How does glBufferSubData compare to glMapBuffer?
13  Discussions / General Discussions / Re: Programming Careers and Life Lessons... on: 2014-03-27 15:56:22
Do you guys regret or are depressed for being programmers in a company?

it seems like it.

Not I.  It's been a good career so far and solving problems while programming brings me quite a bit of satisfaction.

Luckily it can be quite well compensated too.  The only thing I would have done differently is something I would tell my younger self: "Congratulations on graduating!  Work hard and enjoy the ride but also save a lot of dough to ensure you have options when you turn 40 because it won't be as exciting then".
14  Discussions / General Discussions / Re: Fewer end users? on: 2014-03-27 02:11:47
I'm all for an embedded JRE.

Pretty much boils down to if your game requires more than a single download and a double-click it isn't packaged right.
15  Discussions / General Discussions / Re: Programming Careers and Life Lessons... on: 2014-03-26 17:40:30
One paradox I face ended up being a battle between my day job and programming games for fun.

When you're working for the man in a typical development job, it can be hard to find the time and more importantly the energy to work on your game.

Now I'm doing professional services--less programming and more training, installation, and troubleshooting and lots of face time with the customer.  It's boring because it's the same thing over and over again and most of my value is knowledge in a niche product.  However because I travel a lot (getting really annoying now) and don't have a social life I've had more free time to pursue game development.

I've made more progress in the last few years than I did 15 years prior to this job but now I'm dissatisfied with my day job and am mostly here for the money.  Cas' path speaks to me as I'm deciding between points 1-4 now.
16  Game Development / Performance Tuning / Re: clearing or make new array? on: 2014-03-24 18:50:44
Even something as simple as new MyClass(), while traditionally allocating object on the heap, might have the JVM put it on the stack instead (determined via escape analysis).

An interesting link:

Java theory and practice: Urban performance legends, revisited
http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html
17  Game Development / Newbie & Debugging Questions / Re: Done with "core" Java , but now... on: 2014-03-17 20:52:38
Thanks again : really nice people here around !  Smiley
I will start to learn the basics of  Eclipse.

A reasonable start.  Once you are comfortable with Eclipse I highly recommend learning how to craft and build a simple project on the command-line using ant.  ant is pretty much Java's version of C/C++ make.

It's good to know what's going on under the hood and if you ever want to distribute your project and/or share code with other developers you'll have to know how to package it up so that someone else can consume it.
18  Discussions / General Discussions / Re: I just found out that a few letters of recommendation may be written by you on: 2014-03-17 20:48:32
Sadly enough, this is very common.  People are busy and one can save time by drafting a letter for them to sign.

That being said, if the school in question doesn't follow up with a phone call to the professor and just accepts the letter on its own then they deserve what they get.
19  Games Center / WIP games, tools & toy projects / Re: "NXBG" Hexagon-Multiplayer-Tactic-Game on: 2014-03-17 08:58:57
Thanks for the response, I love talking hexes!

Quote
another problem is the performance when more than 1000 dynamic objects are at one map at the same time... like you figured out too.

The hover hexes can be static.  What I did is that I stored the center point of each hover hex.  Then I constructed an oct-tree in normal 3D space.  From here a hit test occurs if the ray is within a certain distance of the point.  Of course this isn't pixel exact (testing a circle rather than a hex) but in my experience it's close enough.

Quote
but because of my failure, that the hexagons are too big (this time), the difference between radius 1 and 2 is much too hard.

Hrmm... can't you just move the camera farther away?   Grin  There might have to be larger differences in height to compensate.

As for radius 1 (1 hex), 2 (7 hexes), 3 (19 hexes) it definitely is an interesting problem coming up with a good AoE gradient.

I'll fire off an email to you.  Definitely interested in testing your game.
20  Games Center / WIP games, tools & toy projects / Re: "NXBG" Hexagon-Multiplayer-Tactic-Game on: 2014-03-16 20:26:16
there are two types of render-objects:
- fixed objects (only terrain, with precalculated shadows using vertex-coloring the faces), this is merged as one big object to improve performance.
- dynamic objects (player, portal-objects, obstacles like barricades), these are all separately added to the scene.
- a mixture of both for the "hover-hexa", the hexagon-texture (6 faces) on the top of every hexa-column. this is the important object to get the position for all actions.

i check all the intersected objects by using a raycast from mouse-pos to the 3D-scene, after i converted this to 2D.
so i know at which dynamic object my mouse-cursor points.
if it points on an "hover-hexa" i can get the x/y pos of the 2D hovered position in the 3D world.
(i assigned names "xPos/yPos" to every hover-hexa when i first render the map).

Interesting.  I followed a similar path as well: separating the terrain features from more dynamic features.  How do you efficiently hit-test the hover-hexas though?  In my implementation (400x400 hexes) I used an oct-tree with axis-aligned bounding boxes for the fixed terrain.  I then ray-cast as you do.  As for the dynamic entities I still iterate over each and every one but I figure that I won't have more than a couple hundred on screen max.  I thought about your tip of tying a dynamic entity to a hover-hexa but it doesn't account for smooth animation transition and/or flying.

Quote
all positive actions (healing, speedup, stealth, strengthUp, ...) and negative actions (poison, slowDown, fireCondition, ...) are actions only on the hover-hexas.
so the players "throw" fields with actions on the hover-hexas.
every player who is in this action-field is affected by it...

ever action has values for duration, intensity,... so players can stack this actions at one field.

Do you apply radius as well e.g. an AoE could affect 1 tile (radius 1) or 7 tiles (radius 2)?

Quote
second question (hex-coordinates):
on my first attempts i used axial-coordinates. but after many hours/days of testing different situations i decided to use offset-coordinates.
its much easier to store (not that huge array-overhead), and the little workarounds (usually mod-functions) are good to handle.
btw: this site ist great when using hexagons: http://www.redblobgames.com/grids/hexagons/

Interesting, I'm using his axial-coordinates (see code comment below).  Calculating distance is really straight-forward.  Can you expand a little more why you found it troublesome?  I had no trouble with distance, hit-testing, and A* path finding.  Was wondering about storage though because the diagonal offset is awkward for rectangular maps.

Thank for pointing to Amit's site.  He's really improved it since I looked at it a few years ago.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
A hexagonal tile grid is actually a projection of cubes onto the plane where
x+y+z=1.  Representing a coordinate in 3-axis (each 120 degrees apart) has a
few benefits.  For example distance calculations are much simpler.

I choose to orientate the hexes with a vertex on top.  If I wanted to display
an English word using tiles then it would be horizontal.

Absolute hex coordinate: i,j,k



               / \     / \     / \     / \
k axis        /   \   /   \   /   \   /   \         i axis
             /     \ /     \ /     \ /     \
    \       |       |       |       |       |        /
      \     | 0,-2,2| 1,-2,1| 2,-2,0|3,-2,-1|      /
        \   |       |       |       |       |    /
           / \     / \     / \     / \     / \
          /   \   /   \   /   \   /   \   /   \
         /     \ /     \ /     \ /     \ /     \
        |       |       |       |       |       |
        |-1,-1,2| 0,-1,1| 1,-1,0|2,-1,-1|3,-1,-2|
        |       |       |       |       |       |
       / \     / \     / \     / \     / \     / \
      /   \   /   \   /   \   /   \   /   \   /   \
     /     \ /     \ /     \ /     \ /     \ /     \
    |       |       |       |       |       |       |
    |-2,0,2 |-1,0,1 | 0,0,0 | 1,0,-1| 2,0,-2| 3,0,-3|
    |       |       |       |       |       |       |
     \     / \     / \     / \     / \     / \     /
      \   /   \   /   \   /   \   /   \   /   \   /
       \ /     \ /     \ /     \ /     \ /     \ /
        |       |       |       |       |       |
        |-2,1,1 |-1,1,0 | 0,1,-1| 1,1,-2| 2,1,-3|
        |       |       |       |       |       |
       / \     / \     / \     / \     / \     / \
      /   \   /   \   /   \   /   \   /   \   /   \
           \ /     \ /     \ /     \ /     \ /     \
            |       |       |       |       |       |
            |-2,2,0 |-1,2,-1| 0,2,-2| 1,2,-3| 2,2,-4|
            |       |       |       |       |       |


                        |
                        |
                        |

                      j axis



Note that the i and j axis mimic screen coordinates.

For painting purposes doubles may be used to interpolate between tiles and
in these circumstances, the coordinates are fi,fj.

Distances or relative positions on the horizontal plane are denoted by
di,dj,dk.

To convert to/from cartesian coordinates (see Displayed.java):
x = w * sqrt(3) * (i + j/2)    (note x can also be calculated from k)
y = w * (3/2) * j

where w = length of hex edge
21  Game Development / Newbie & Debugging Questions / Re: Time to multithread? on: 2014-03-15 18:43:26
Ok regarding how it is allocated, unless my game is taking up several gigs of ram while running, it should be ok right?

What I am saying is that having dynamically allocated memory (new) and manipulating dynamic collections (e.g. Lists) comes with a performance cost.  For example, removing a shrapnel piece from a basic list can be on the order of O(n).  That's a price you won't want to be paying every frame.


Currently as it stands, upon creation of a grenade, as in if one is lying on the ground ready to be picked up, in the inventory of an entity or whatever...each grenade object has an array that holds all it's shrapnel (this makes sense, since this is technically what grenades do). So upon explosion I simply loop through this array, toss every piece of shrapnel out and remove each peice from that array and hand it to the factory to update and process/remove them from the world.

Others may disagree but I don't believe that classic OOP should used to the same extent in games.  Before OOP imagine writing a game where performance and memory usage was a huge concern.  Most games can be written to manipulate a fixed set of data.  Think data-driven instead of OO.

Take for example grenades and shrapnel.  Let's put a reasonable limit... no more than 200 grenades on screen at once.

The grenade structure looks like this:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
class Shrapnel {
  boolean visible;
  int x;
  int y;
}

class Grenade {
  boolean visible;
  int x;
  int y;
  Shrapnel[45] shrapnel;
}


Now allocate it all just once at the start of the game:

1  
Grenade[200] grenades = new ...


During your game loop you can iterate over the grenades array updating data as needed.  No allocation is happening, no list insertion, no list deletion, no GC worries.

22  Game Development / Newbie & Debugging Questions / Re: Time to multithread? on: 2014-03-15 18:10:37
You're having performance problems with 45 entities?

As Cas said, if you think multithreading is the right direction, it's not.  I won't deny that you might alleviate the initial performance issue while going down this route but you really haven't solved your problem.  You now have multithreading (adding huge complexity) while the underlying root problem (why 45 entities cannot be processed in one frame) is still not solved.

> should I multithread in order to prevent lockups?

No.  Chances are you'll introduce new lockups (deadlocks) and erroneous behavior that's going to be a bitch to debug because of the multiple threads.

After looking at your code, allocating each shrapnel object on the heap is not going to scale properly.  A grenade is going to explode anyway right?  It's going to have shrapnel?  Why not when creating the grenade ensure that its data includes its shrapnel.

After going down this route, ask yourself, should each individual grenade be allocated on the heap too?
23  Games Center / WIP games, tools & toy projects / Re: "NXBG" Hexagon-Multiplayer-Tactic-Game on: 2014-03-13 02:12:21
Good looking stuff.  I like using hex-tiles too.

Couple of questions:
  • How are you doing your hit-testing?
  • What scheme are you using for your hex-coordinates?
24  Game Development / Game Mechanics / Simulations vs Emergent Behavior on: 2014-01-07 08:48:35
Hi everyone,

I'm at the point in my game development where I want to implement some high-level behaviors.  The game is a single-player trading game on a large overhead world.  Imagine that you control only a single caravan out of many, each belonging to a cartel, that travel from city to city buying and selling and occasionally skirmishing with each other.

Some of the behavior I would like the player to see while traveling about the game world:
  • Caravans traveling from city to city occasionally staying parked in a city
  • Monthly changing supply/demand prices of commodities
  • Cartels either peaceful, hostile, or at war with each other

Now the tricky thing is that I can see many ways of approaching this task but possible approaches appear to be at polar opposites from each other.  For example:
  • Completely random prices versus simulated supply/demand based on past amounts.
  • Highly tuned caravan AI versus simple global rules and emergent behavior.
  • Build the entities from the ground up and then place simulation rules on top versus starting from a coherent system e.g. Conrad's game of life.

Has anyone developed such a system i.e. simulating a highly active world with behavior continuity?  Looking for some general pointers as well as pitfalls to avoid.
25  Discussions / General Discussions / Re: SteamOS, SteamMachines, Steam Controller on: 2013-12-15 06:15:42
Hi guys,

Curious about your thoughts in light of SteamOS being released and Steamboxes being available.

From what I can tell, SteamOS is basically a modified Debian Linux, optimized for gaming, that boots directly into the Steam client full-screen mode.  It caters specifically to running games/apps on your TV and controlled with a gamepad.

Now I don't really see anything ground-breaking with regards to the hardware or OS itself.  I think the big game changer is the platform (think app-store for games).  They provide a good platform for games, port it to all the major OS's, then hope that game makers target SteamOS.  I think they have enough momentum to really take this somewhere.

Given all this, where does Java fit into the picture?  Sure we can run Java on Linux, use OpenGL via LWJGL, and design games for full-screen mode.  Is there other pieces of the puzzle missing here?

In the long run I want to target games that can run on multiple platforms and be experienced by a wide variety of players without too much fuss.  Targeting Java has been a good solution up to date but if this SteamOS really takes off, then targeting it instead would make sense.
26  Game Development / Game Play & Game Design / Re: Handling RPG Inventory on: 2013-10-20 05:54:08
The Item itself is pretty straight forward.  Yes I think you've made the correct decision by having a single class because generally items don't have different behavior.  Instead they usually differ by type and stats.  Item stats can be as simple as a Map of Stat -> Int (e.g. STR -> 5)

Regarding inventory is where it gets a bit more complicated.  Items can be carried, equipped, put in bags, can be a bag, and exist independently e.g. they're lying on the ground.

Inventory itself can be as simple as a list.  However, if you have an interactive GUI like Diablo then you'll need to deal with inventory slots and items occupying them.

Equipment is by its nature a bit more complicated.  Items can be equipped in certain slots e.g. worn on head, around wrists, carried, wielded by one or two hands.  To do this I used a map of Slot -> List[Item].
27  Discussions / General Discussions / Re: Making a Static Free Engine on: 2013-08-06 01:42:19
Sometimes I lose a day of programming joy to a long day of frustration while first having to find the cause and second having to adjust a hundred or so objects after finding the bug.  In every case so far, these bugs, these horrid bugs that set me back and make me do a huge rewrite, have been static.   In every case so far, when I have created the same bug without static being involved, Eclipse has caught the error for me.   I don't know much about other SDKs.  Eclipse does not seem to error check static as well as it does Enum (which is a type of static, but I love me some Enum's.)

One of the reasons why Eclipse (and any other IDE/engine) is lousy at tracking static variables is because doing so is a problem whose complexity grows exponentially.  I work for a static analysis company (not to be confused with static variables) and if you think about it, Eclipse is compiling the method behind the scene and then running through hypothetical execution scenarios to determine possible problems e.g. null pointer dereferences.

Static source-code analysis can easily track local variables because what can access that instance is limited to the current execution thread.  Static global variables, on the other hand, can be written to by any thread at any time!  Hence no assumptions can be made about what value it contains at anytime.
28  Game Development / Performance Tuning / Re: What makes Java2D slow and LWJGL fast? on: 2013-07-22 05:25:04
In order to abstract the nature of drawing graphics the Java2D API hides all the guts of OpenGL and the graphics pipeline.  So instead of working with vertex arrays, VBOs, textures, etc. you can happily work with lines, pixels, strings, and images.

Java2D will attempt to optimize things at first (e.g. images will be managed initially i.e. stored in the graphics card's memory).  But you can't have endless arbitrary images and perform pixel manipulations via a high level API before one hits the limits of what a graphics card can handle. Once you do then it's slows-ville (primarily because you're now transferring data between main memory and the graphics card for each frame).  It would be impossible to recover from this without exposing the nuts and bolts of the graphics pipeline which an API can't do without losing its integrity.
29  Games Center / WIP games, tools & toy projects / Re: T.H.A.D. on: 2013-07-06 16:52:58
I like how you did the shadows.  It appears that shadow tiles are calculated on the grid but you transition from one set to another smoothly.  Can you explain more about what you did?

It appears you can move and face diagonally but is there an explicit diagonal key?  I don't have a numpad on my laptop.

The inventory confused me a bit since at first I assumed drag&drop but instead it was click.  Also the the stairs to descend could use a more obvious icon.

The smoothness of the game but maintaining turn-based control is pretty cool.

I have a big interest in roguelikes so keep us posted!
30  Game Development / Game Play & Game Design / Re: Intuitive Interface Design on: 2013-06-25 14:21:24
One question to ask is why is your inventory screen on all the time?  Is it because you can only carry a handful of items i.e. < 7?

Otherwise, there's no need for it to be constantly taking up real-estate and thus it should be at least dismissible or movable.  Something that is temporary normally appears closer to the center of the screen rather than on the edge hence design A is my choice.
Pages: [1] 2 3 ... 11
 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (53 views)
2014-04-15 18:08:23

BurntPizza (51 views)
2014-04-15 03:46:01

UprightPath (65 views)
2014-04-14 17:39:50

UprightPath (48 views)
2014-04-14 17:35:47

Porlus (65 views)
2014-04-14 15:48:38

tom_mai78101 (89 views)
2014-04-10 04:04:31

BurntPizza (149 views)
2014-04-08 23:06:04

tom_mai78101 (245 views)
2014-04-05 13:34:39

trollwarrior1 (203 views)
2014-04-04 12:06:45

CJLetsGame (210 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
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
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!