Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - raft

Pages: 1 ... 127 128 [129] 130 131 ... 133
1921
Projects / Imperio - Galaxy-wide strategy
« on: December 06, 2005, 04:54:12 pm »
hello meinfilter,

you can almost forget about texture based strings, they arent readable. have a look at the screenshots at karga thread

for skybox, instead of using a huge sphere i store a small sphere in a seperate world where the camera is always located at origin. than i simply render both of my worlds (the skybox one and the regular one) to same frame buffer one after another

Code: [Select]
r a f t

1922
Projects / Raven's projects
« on: November 18, 2005, 05:53:12 pm »
Quote from: "Raven"
Due to my state of newbieness to the matter..

nevermind, i'm also a newbie for this kind of projects, or at least i was before karga :wink:
Quote from: "Raven"
if I understand correctly, you're basically normalizing game animations and events by checking how fast the application is running?

yes, exactly. the idea is to increment the game state (animation indices, positions of moving objects etc) as much as the time elapsed since last update

say you have an opening door animation which you want to last for 2 seconds, and your fps is 50 (= 1/50 seconds elapsed) you increase animation index of door by 1 / (50 * 2) each frame

Code: [Select]
r a f t

1923
Projects / Technopolies
« on: November 17, 2005, 10:45:23 pm »
hey rolz, that's a really cool screen  :D

1924
Projects / Raven's projects
« on: November 17, 2005, 10:24:38 pm »
Quote from: "raft"
assuming constant fps it is trivial to decide where that user will be in each frame. with un-constrained fps it's somewhat more complicated


himm, i'm re-thinking now about the subject and, assuming constant fps even in an un-constrained enviroment may be a good assumption. normally fps doesnt change that much if something doesnt change radically (such as world size doubles or user opens another cpu eater application).

so, measuring fps every -say- 5 seconds and assuming it constant may also simplify things. i guess this way fps increases slightly since number of updates decrease. a drawback is, if one moves with key strokes every frame, fps/ups results in a smoother feeling

sorry raven, filling your forum with self thoughts  :oops:

Code: [Select]
r a f t

1925
Projects / Raven's projects
« on: November 17, 2005, 09:53:59 pm »
Quote from: "EgonOlsen"
in theory...it never happened for Paradroidz because collision detection is too fast


certainly it is. in fact everything, even those you mark as expensive in javadocs, is quite fast compared to render time. dont get me wrong, i dont mean rendering is slow :wink:

i choosed this way since i couldnt find effective solutions for some questions, especially in a multi-user enviroment. for instance, if some user moves from point A to B, basicly only these two points are broadcasted to other clients. assuming constant fps it is trivial to decide where that user will be in each frame. with un-constrained fps it's somewhat more complicated

Code: [Select]
r a f t

1926
Projects / Raven's projects
« on: November 17, 2005, 08:46:11 pm »
hello raven,

Quote from: "Raven"

So, to sum up, my question basically is: is this the way to go? Or is there some other method that's better when making 3D games? For example, should I be looking into threading each type of manager so it runs independantly?


as a rule of thumb, you should avoid threading whenever you can. it only complicates things and cost some performance (due to syncronization and context switching overhead). use threading where you have to do so (for example when use blocking i/o)

in karga, to simplify things, i targeted a constant fps. even collision detection and other non-render stuff doesnt cost much compared to rendering, so if i cannot reach targeted fps, i simply skip rendering for some frames and update the game state only. this method depends on measuring render time, something like this:

Code: [Select]

while (running) {
    long startTime = System.nanoTime();
    gameUpdate();
    gameRender();
    long elapsedTime = System.nanoTime() - startTime;

    if (elapsedTime < expectedElapsedTime) {
        // sleep here for some time
    } else {
        // do some gameUpdate without render
    }
}


with this approach, even on a slow machine updates stay closer to high targeted fps (50 for instance) so you can decide animation indexes etc depending on targeted fps

instead of controling animations and other things (movements etc) from a central location i've also defined a FrameListener interface which lots of my 3d objects implement. so they can 'take care of themselves'
Code: [Select]

public interface FrameListener {
    public void timeForNewFrame(/* pass here whatever you want like frame no, world etc*/);
    public void timeForRender(/* same as above */);
}



so what i do in gameUpdate and gameRender is:
Code: [Select]

private void gameUpdate() {
    for (FrameListener l : frameListeners) {
        l.timeForNewFrame(/* some parameters */ );
    }
}
private void gameRender() {
    for (FrameListener l : frameListeners) {
        l.timeForRender(/* some parameters */ );
    }
}


hope this helps :wink:

Code: [Select]
r a f t

1927
Support / Question: Models, lighting, and more.
« on: November 07, 2005, 09:14:02 am »
Quote from: "Raven"
I think you're talking about the same thing that Helge had already already pointed out to me, except that you want me to put it in a seperate file? But wouldn't I then have to align my map.3ds with the lights.3ds after I import them into jPCT?

not exactly, i think we were talking about different things.
i couldnt get what you meant by aligning ? those dummy 'light' objects are already positioned in your world. just export the world to map.3ds and lights to lights.3ds
Code: [Select]
r a f t

1928
Support / Undersampling
« on: November 06, 2005, 01:54:35 pm »
Quote from: "EgonOlsen"
Undersampling simply renders at half the resolution and doubles  the rendered pixels in x- and y-direction. Maybe scaling is faster because it can benefit from hardware support, but i somehow doubt it, because it's a non-accelerated BufferedImage.


on my box (both redhat and win xp), scaling runs almost 10% faster then undersampling. swing uses VolatileImage (accelerated) by default for back buffer, but the result doesnt change even if i disable double buffering. strange :?: (btw, i dont if copying from a non-accelerated image to an accelerated one offers any improvement)

anyway, i preferred the undesampling way since it makes things (like 2d blitting) much easier. and 50% undesampling makes almost a 50% speed impovement so i see no point in using other scaling ratios

Code: [Select]
r a f t

1929
Support / Re: Question: Models, lighting, and more.
« on: November 06, 2005, 01:22:07 pm »
Quote from: "Raven"
I'm wondering what the best way would be for me manage this. There's also the question of object placement: Figuring out where to place objects like "Healthpacks" for example.


possibly not best way, but i find this very handy:
i either:
* place dummy objects to mark those positions and save them in a seperate file (like lights.3ds) and then use the center of those objects to place lights
* again place dummy objects but save thier positions with max script (faster loading time and less space)

Code: [Select]
r a f t

1930
Support / Re: serial version uid
« on: November 03, 2005, 05:56:18 am »
Quote from: "EgonOlsen"
you can't deserialize old stuff with a changed class. So where is the actual difference?

you can, even if you changed the class incompatibly. you can change method names, signatures even add new fields (they are simply set to nulls or zeros during deserialization). i'm not sure what happens if you change field types or remove a field but the others dont break deserialization

Code: [Select]
r a f t

1931
Support / serial version uid
« on: November 02, 2005, 02:00:08 pm »
egon, can u please add a serial version uid to serializable classes ? it becomes incompatible with the previous version and it breaks loading previously serialized objects. sun suggests it too and it wont hurt for sure

Code: [Select]
private static final long serialVersionUID = 999L; // or whatever long

of course you can change it in time when it is necessary (such as when internal fields are not backward compatible)

and when did you update the site, i must have missed it. it looks nice :wink:

Code: [Select]
r a f t

1932
Projects / ┐how much pleople still using jpct?
« on: October 29, 2005, 08:25:12 pm »
+1
although not reading all posts, i'm here too :wink:
Code: [Select]
r a f t

1933
Projects / aptal karga (foolish crow)
« on: October 25, 2005, 12:17:33 pm »
if you say so..  :D

1934
Projects / aptal karga (foolish crow)
« on: October 25, 2005, 04:40:37 am »
if you say so..  :roll:

1935
Projects / aptal karga (foolish crow)
« on: October 24, 2005, 10:53:41 am »
as i know, ack's are only sent in response to other packages, as receipts. if application doesnt send any data, no packages will be transfered. when the socket is closed (either manually or by an application crash) a connection reset or whatever package is sent to notify peer. but i'm not sure, i dont know much about tcp as i said. who cares, as long as java net api's keep this much high level :wink:

Quote from: "rolz"
p.s. nice to see you people back after summer hiatus :)
 thx :D

Code: [Select]
r a f t

Pages: 1 ... 127 128 [129] 130 131 ... 133