Oh I definitely agree, It was just more of a hypothetical fun random question. I wasn’t expecting a legitimate prediction of how the landscape of computing will change.
Obviously the biggest thing I’d probably expect to see is higher polygons on the screen and more entities/particles and probably a lot of improved accuracy/resolution of things things like collision detection(pixel perfect?) etc…
Go right on ahead and use whatever you understand or want to understand. Though if you’re a beginner it’s much harder to really understand anything when someone else did the actual understanding for you. I don’t know about any of the other libraries around for Java gaming because I’ve developed my own crappy one over years and years. LWJGL is just glue, by the way; there’s nothing in there much beyond the lowest level for accessing the hardware APIs.
1a. Learn, but that’s just me. In fact, were I to start looking at JavaScript and Canvas today, I’d start implementing my sprite engine and game framework from scratch, just so I got a lot of learning experience. This is however the main reason I haven’t done this yet - no time
Map editor for Droid Assault. Revenge uses procedurally generated levels. The other games didn’t have levels as such; just custom made designs made up of sprites.
I’d keep all adjacent maps in memory (so, say, 9 maps in a small grid). Then as you moved to another map, I’d background load the new adjacent maps, and garbage collect the ones no longer adjacent.
I much prefer games with procedurally generated content because there’s a lot more variety and longevity! The ability to tweak the parameters is good fun too, and something I’d have liked to put in Revenge but we’re just out of time on that game now.
I wouldn’t say serialization is a bad habit… it’s very convenient and pretty fast. I don’t know if I’ve developed too many bad habits, although off the top of my head I’d say that rubbishy commenting would be at the top of the list. I probably tend to optimise a bit too early … but … I also have a very good feel for when something is going to need to be fast in the first place, and so I just design things to be quite optimised from the start. I think about the numbers before I write the code.
I’m an amateur in many areas of programming in reality. What I have done, though, is the same thing, over and over and over again, until I’ve gotten pretty good at it. Don’t ask me to do 3D, because it’ll be rubbishy. And real-time multiplayer - that’ll be rubbishy too. And so on. Everything I do that is “new” is rubbish, until I do it over and over and over and eventually get good at it. It took me about 2-3 years before I considered myself more or less competent at Java.
Yes, it’d make us much lazier in some respects, because we’d probably not need to work quite so hard to get the optimisations we currently have to do to make things run faster. However, I can’t see any technology appearing in my lifetime that’s going to let us get away with it. Besides, most of this extra grunt will go on making things look photorealistic. And that’s really not what many of us want in games. Right now, there is enough horsepower in a desktop computer for me to basically write any game I can without worrying too much. And notice that I say “can” - there are lots of games I want to write but they are beyond my skills, patience, and knowledge. But what I’m doing now is probably going to serve me well for many more years to come. In just a few years the baseline systems out there will be able to throw around as many sprites as I could ever care to use.
I have a theory that the novelty of 3D has almost completely worn off on everyone now. It started in the 90s and everyone was saying, “ooh! 3d! amazing!” and then continued in the 2000s with “ooh! even prettier!” but it’s got to the point now where we can achieve almost photorealistic graphics in realtime… except that the vast number of games out there that are fun are actually 2D designs, and 2D graphics work just as well or even better. We’re beyond 3D. This new craze for 3D screens will hopefully die out when everyone realises it just gives you a headache.
To iterate on this, How would you handle the actual event of moving from 1 level to another.
i.e. center map is 500 pixels wide, if x>450 load map to right
or more like have a rect 300x10 be near the right side of the map so that if x is inside that rect, it loads map to the right
or have some invisible entity there that if your “character” collides with, it loads map to the right.
essentially a trigger layer(bounds)(box) invisible collide entity or absolute locations?
from a technical perspective, your main state that the game is running in, when you go from 1 map to another, do you temporarily pass it off into a secondary loading state(then back again), or do you do it inside your current class and just reallocate positions, timers, entities, map, etc…
scrolling vs locked vs locked-loading(can move around, but no scroll) do you have a preference or is it completely game genre contextual to you(depends on game)
I feel like I can do a lot right now, but I have this huge huge mental block about loading levels/maps (from one to another) every approach I ever do seems to be very messy or that there is a significantly better method of doing it that I just dont know.
edit: thanks again!, and that is all my questions I have.
Maps are generally made up of rather more coarse “tiles”, of say, 16x16 pixels. I’d have a map chunk which was, say, 64x64 tiles; and then I’d have a grid of chunks, 3x3. I’d use the chunk grid for the game logic, and access it via absolute coordinates which it would translate into subcoordinates in each chunk as appropriate.
As soon as the player walked into a particular chunk I’d be making sure that there were adjacent chunks loading in the background, and I’d be nulling out the chunks which were no longer adjacent. I’d use a Thread to load things in the background. If you tried to display a tile from a chunk that had not yet been loaded I’d pause the main loop and put up a “Loading” graphic and wait for the loading thread to tell us it’s been loaded.
Entirely depends on the technical requirements of your game.
Again, totally depends on what I want in the game. Some games are good with “rooms” that you move between without scrolling, some games are best with giant scrolly maps.
1-did you play 16 bits console? Sega or Nintendo?
2-did you play RTS games on the PC?
3-Do you think a 2D online RTS game is possible in Java?
4-How do you debug your code? breakpoints? or sysout or another logger?
5-Do you sleep when you are tired? Do you wake up on demand.
6-What’s so bad about JavaSound? MIDI wierd instruments for sound effects?
7-In the Demo, nice effect when Big titan destroys your base. That was the first time I lost. this is the only mission that stroke a good difficulty balance… I guess it is very difficult to create not too easy, and not too hard levels without being repetitive.
8-in the light of your experience, how do you see the anti piracy battle evolve in the future? Is it worth fighting it? Is the FarmVille model the future?
Since it was in the same question as anti piracy. I’d assume that he means one of the following.
a. micro transactions(free to play model)
b. facebook login required (though any “online only/login based game” should technically be equally deterrent of piracy)
c. negatively reinforced gameplay (it doesn’t so much as reward you for playing, but punishes you for not playing)
In the map chunking system you mentioned, what would be a good way to keep track of entities which are widely dispersed? (eg find all entities owned by a particular player, wherever on the map they may be) It’s a problem; if you just save the entities with their chunk then you have to load all chunks to find all entities, but if you keep a detailed enough list of all entities then you lose the benefits of chunking. What’s the best way to deal with this?
Could you present a scenario when you would need this?
My possible thoughts on this are as follows
how many bad guys are left/alive (use a simple counter)
Location of bad guys(say you have a game you have to track down 10 guys(and 8 of them are off your current map)
You could quite easily have a 2(x/y) or 3(x/y/type) dimensional array of some sort, 1 for enemy type(if you have types) and the other 2 for x & y
alternatively, you could leave the entities in their current position, just disable/freeze their graphics/AI while they are not active, but would still technically be existing.
Nope. Only console I’ve ever owned is a Wii, which was a bit of a short-lived affair with Rayman Rabid Rabbids.
Yes, I had Starcraft and AoE back in the day. Never played or liked anything much since.
It’s already been done! And in 3D. So I should think it’s easily possible
Sysout and breakpoints. I should probably switch to a better logger than sysout.
No, I suffer terrible insomnia. I’m trying to conquer it by stopping work early, and always getting up at the same time every day.
Mostly that I’ve literally never heard anything done in Javasound that was any good. Not that there’s much out there.
It’s a constant tuning exercise, iterating towards a balance where the largest number of players are having fun.
I don’t believe there’s anything we can do about piracy that’s cost effective other than what we are already doing, which is our own flavour of minimal DRM, and conquers every pro-piracy argument against DRM that there is. Except one thing. Which we are doing. We’re moving to online gaming for our next game. There will be a substantial offline part, but the real fun will be had online. We might even just give away the single player aspect of the game and completely forget all about piracy.
I got married and regretted it Then I found an awesome girlfriend, had 2 daugthers, haven’t got married, and am not regretting anything at all 8)
As a .app like we do. Just grab one of ours, replace the jars and edit the plist and so on. I can’t remember who originally gave me a bit of Ant script that does this for us but it’s pretty trivial.
What has the spatial positioning of the entities got to do with who owns them? And indeed, why bother worrying about entities which are not loaded? It depends on what you’re trying to achieve. I’d say that any entity on a chunk that isn’t loaded is … not there any more, so can be safely forgotten about. Or you could stash them in a database and update them all that way whilst they are “unloaded” and read in their stats from the db when you load a chunk in.
Oof, that’s a hard one. Hmm. We’ve not got many data points But I’d say that the main game takes about a third of the time, and the remaining two thirds is attempting to apply perfection to the gameplay. Sometimes that involves totally changing the game
Because we don’t have fixed time periods where we say, “right, now we start polishing” I’m not sure we can even separate polish from the main building blocks. And I have no idea what goes on over in Spain…
Oh, and a throwaway comment: pixel perfect collision sucks! It only exists because of an anachronism in the way sprites were handled on the C64 for example. In modern times, it’s unforgiving, computationally expensive, and a waste of time. I could probably say a similar thing for pixel-perfect raycasting into 3D models for FPS guns. Most people will be happier and enjoy themselves more scoring a hit when things are more or less on target, not perfectly on target.