
I think I'll ask my bro if he wants to draw something. 64x64 pix is just too huge for me, I think...
What's the style you want? Modern (like Verdana, Arial), Old (like Times, Courier), Cartoonish (like Comic Sans), Silly (like... well... hmm...)?
Pioneer law - If you consider 64x64 too big, make smaller, if you see Times fitting - use time - you decide. I code.Purno wrote:64x64 pix? OMFG... that's... huge...![]()
I think I'll ask my bro if he wants to draw something. 64x64 pix is just too huge for me, I think...
What's the style you want? Modern (like Verdana, Arial), Old (like Times, Courier), Cartoonish (like Comic Sans), Silly (like... well... hmm...)?
Then don't take me seriously.XeryusTC wrote:Uzurpator: I would like to point out that my name is XeryusTC, there is no O in it. Until you get it right I don't have to take you seriously, unless you try to pronounce it in which case I can handle some variety (not too much though).
So why do you mention them?Further, you didn't even look at the doxygen created for TRoS (which can be found here). It has some pages that are not generated by code but that are completely written by hand. They currently don't really include any explenation on how to use TRoS though.
Id really prefer to ask on ogre forum what to do, then mow through sources.All the other design features are mostly stored on photos of Seniltai's whiteboard or in some random text files which are very lickely not stored in the repository. But currently the source is your best documentation friend, although some of our dependencies' documentation also counts for TRoS a bit (look at RakNet for example).
So it _me_ who is supposed to work on that? _I_ am supposed to document _your_ engine?I would also like to note that both Seniltai and me are still in high school and both doing VWO (pre university) so we spend loads of our time on school or other RL stuff so we don't have that much spare time to work on TRoS or its documentation.
ie - TRoS is incomplete and hyped.And the fact that TRoS is hacked ATM is mostly the case with the tools/client because some key features are not implemented into the engine yet and will have to be done seperately.
Concidering PL none of us came with a workable solution yet - or more specifically - none of us presented an app which shows any aspect of the gameplay, which is documented well enough to be used.And concidering Pioneer Law, I came up with TRoS before you came up with UzuEngine, so effectively TRoS should be used.
Now you write:XeryusTC wrote:And we don't have doxygen anymore, I poked Seniltai numerous times (and will do again now Wink ) to set up doxygen on the server as I was running it before but I didn't install a new http server after a clean windows install.
While I don't want to take any sides, but thats a bit unfair....Further, you didn't even look at the doxygen created for TRoS http://tros.ath.cx/Doxygen/
The doxygen is online again since yesterday evening/this morning, but he could have grabbed a version of doxygen himself and compiled it.eis_os wrote:Could simple both write their engine? And we see what best fits?
Now you write:XeryusTC wrote:And we don't have doxygen anymore, I poked Seniltai numerous times (and will do again now Wink ) to set up doxygen on the server as I was running it before but I didn't install a new http server after a clean windows install.
While I don't want to take any sides, but thats a bit unfair....Further, you didn't even look at the doxygen created for TRoS http://tros.ath.cx/Doxygen/
Because it shows that our doxygen isn't only made for documentating code.uzurpator wrote:So why do you mention them?
If you want to you can go aheadSo it _me_ who is supposed to work on that? _I_ am supposed to document _your_ engine?
Yes, and UzuEngine doesn't exist and is hyped too. I wonder which is worseie - TRoS is incomplete and hyped.
Why did you mention it in your post then anyway? You are bending your rules to your will ATM, there is no justice in that as I can't ever be right to your rules.Concidering PL none of us came with a workable solution yet - or more specifically - none of us presented an app which shows any aspect of the gameplay, which is documented well enough to be used.
I think we already established, that I cannot do that, because i cannot download SVN snapshot, and I sure as hell am not going to download file by file.XeryusTC wrote:The doxygen is online again since yesterday evening/this morning, but he could have grabbed a version of doxygen himself and compiled it.
Lovely. I am supposed to know that? It is your job to advertise, document and make the documentation available and easy to digest.Because it shows that our doxygen isn't only made for documentating code.
Having little time to do anything in particular, I'll leave the joys of doing your job, to you.If you want to you can go ahead.
Please, find where I have used a construct "is there, but not implemented yet". Besides, you are the least entitled to make such statement, since you are, apart from me, the only person who actually got to see the source.Yes, and UzuEngine doesn't exist and is hyped too. I wonder which is worse.
Great. Where is your usable solution? I mean, no toolbox, because toolbox is easy to obtain. I want to see specific TE code - you know - display map, move it around, add some gui, modify the terrain. Basics. And let us not forget the documentation, so a developer like me can jump in and extend.Why did you mention it in your post then anyway? You are bending your rules to your will ATM, there is no justice in that as I can't ever be right to your rules.
Code: Select all
| col1 | col2 | col3 | col4 | col5 |
step 1: | (b * c) | (d * i) | (c - d) |
step 2: | (a+res) | (res*g) | (res*h) | (res*j) | (res-e) |
step 3: | | (res + res) | | |
step 4: | | (res + res) | |
step 5: | | (res/f) | |
step 6: | (res + res) | |
step 7: | (res + res)
step 8: | res
Code: Select all
step1: (b * c) and (d * i) unlock 4 ops - outstanding ops: 5
step2: (a+res) and (c + d) unlock 1 op - outstanding ops: 4
step3: (res*g) and (res*h) unlock 1 op - outstanding ops: 3
step4: (res*j) and (res-e) unlock 0 ops - outstanding ops: 1
step5: (res+res) unlocks 1 op - outstanding ops: 1
step6: (res+res) unlocks 1 op - outstanding ops: 1
step7: (res/f) unlocks 1 op - outstanding ops: 1
step8: (res+res) unlocks 1 op - outstanding ops: 1
step9: (res+res) unlocks 1 op - outstanding ops: 1
step10: result
Code: Select all
- this_->my_actions_[map_make]->setSize(128,128);
- this_->my_actions_[map_male]->invoke();
Code: Select all
client.fetchInput
eventReader2
static_cast<action_map_make*>(my_actions_[map_make].get())->setSize(128,128);
my_actions_[map_make]->invoke();
my_out_comm_.dispatch(datagram);
transport
my_in_comm_.fetch(datagram);
// operate on the datagram data, map make has none, so pass
my_out_comm_.dispatch(datagram);
server.processCommands
my_in_comm_.fetch(datagram);
my_reactions_[datagram.command_]->setParams(datagram);
my_reactions_[datagram.command_]->invoke();
[
//-----------------------------------------------------------------------------
note: datagrams are passed by reference - in exceptiuon to transport layer
which makes a copy, it is marked with an arrow
//-----------------------------------------------------------------------------
Transaction: exit
Brief: trigger server to cause application exit
Originatior: client
Enumeration code: exit
Datagram params: none
Postcondition: server triggers application exit
Trigger: ESC key press
Flow:
1.client.action.exit
2.transport.reaction.exit -> transport.action.exit
3.server.exit
Additional: -
//-----------------------------------------------------------------------------
Transaction: make new map
Brief: request the server to create a new terrain
Originatior: client
Enumeration code: map_make
Datagram params: (client -> server)
params[0] - longitunal size of the map in tiles
params[1] - lattitunal size of the map in tiles
(server -> client)
params[0] - longitunal size of the map in tiles
params[1] - lattitunal size of the map in tiles
Postcondition: server makes a new map and sends the client new map size
Trigger: M key press
Flow:
1.client.action.map_make
2.transport.reaction.map_make -> transport.action.map_make
3.server.raction_map_make
4.server.action_set_map_size
5.transport.reaction.set_map_size -> transport.action.map_make
6.client.reaction_set_map_size
Additional Call setSize method of action_map_make to set params
//-----------------------------------------------------------------------------
Transaction: require area update
Brief: request the server to update certain area
originator: client
Enumeration code: area_req, leaf_req, leaf_send
Datagram params: (client -> server)
note: coords are in LEAFS not TILES!
params[0] - longitunal coord of lower left corner of requested area
params[1] - lattitunal coord of lower left corner of requested area
params[2] - longitunal coord of upper right corner of requested area
params[3] - longitunal coord of upper right corner of requested area
params[x] - [y] - versions of these leafs on the client in the row
ordering ex: for 3,3-5,5
par[4] == ver of 3,3
par[5] == ver of 3,4
par[6] == ver of 3,5
par[7] == ver of 4,3
par[8] == ver of 4,4
etc
params[0] < params[2]
params[1] < params[3]
(server -> client) (1 dgram only, a stream of dgrams is sent)
params[0] - longitunal coord of a leaf
params[1] - lattitunal coord of a leaf
params[2] - msb of leaf(0,0)
params[4] - lsb of leaf(0,0)
params[5] - msb of leaf(0,1)
params[6] - lsb of leaf(0,1)
:
:
params[128] - msb of leaf(7,7)
params[129] - lsb of leaf(7,7)
params[130] - version of leaf
Postcondition: client recieves an update on requested leafs
Trigger: sent every frame
Flow:
1.client.action.area_req
2.transport.reaction.area_req -> transport.action.area_req
3.server.reaction.area_req
3.server.action.leaf_send
4.transport.reaction.leaf_send -> transport.action.leaf_send
6.client.raection.leaf_send
Additional: call setArea of action_area_update to set params
Verbose: When updating te view area the client does not know wether leafs
which make this ara have been updated or not. Henceforth a caching
mechanism is introduced, to save on bandwidth when updating an area
this works this way:
client requests an update on ara 3,3 - 6,6 - this is 4x4 leafs,
1024 tiles. 2kB od data. with 20 updates/second it is 40 kB/s.
abit to much for typical connection if we were to update each
frame.
but if, of these 4x4 leafs have not changed, then from the first
frame, none needd to be sent if the client stores all leafs
locally.
Implementation.
The client has its own terrain array. Whenever it wants to display
some portion of it, it asks the server to update certain area
client-side transport layer passes the request though the network
to server-side transport which calculates versions of client and
server
ex:
leaf 4,5 was last updated to version 12
leaf 4,5 was last sent to client was version 12
conclusion:
client does not need an update
ex2:
leaf 4,5 was last updated to version 23
leaf 4,5 was last accessed by client on version 12
conclusion:
client needs an update
for every leaf needing an update in response the server
will emit a series of leaf_send datagrams
to the client with leafs that need to be updated.
NOTE: leaf_send can be triggered without corresponding area_req
sever may send leaf updates whenewer it pleases
//-----------------------------------------------------------------------------
Code: Select all
blahBlahBlah()
Code: Select all
my_blah_blah_blah_
Code: Select all
isSomethingImportant_
// usage
if (isSomethingImportant_)
{
doStuff();
}
Code: Select all
#define IO // in-out parameter
void someFunction(someClass& blah)
// goes into
void someFunction(someClass& IO blah);
Users browsing this forum: No registered users and 6 guests