server performance
Nice! I like these last few paragraphs
server performance
Nice! I like these last few paragraphs
eve
uniformly distributed over the world
pte
Limitation: discrepancies between single-node vs Distributed Worlds in computation
tack
Remove stack plot.
Go from observation -> conclusion more clearly
1
Add caption to figure
populou
wdym by populous? Be more precise
Conclusion
I realise it's not quite done. But your conclusions should also have a limitations and further work section
transf
What does that tell me?
Something about accuracy of computation
.4 Accuracy
This section is a nice add-on but leaves me wanting more.
Sure, the # of object stayed the same. Can you somehow verify that the objects paths/velocities behaved as if it were a single node?
igure
Why the word data? Surely just 'Distributed Worlds' Or FPS
Also why does the blue line dip BEFORE the red line?
Figure 6.5
Again, might be nice to have the graph also show a single node server's performance to compare and contrast in the same graph.
Also, it's very similar to the # object graph. This could be noted. Or could be side by side to show similarity?
UPS
Haven't defined
effectively quantifies the ”du-plicated space”
It doesn't effectively quantify the 'duplicated space'.
It quantifies the duplicated space ...
No need for effectively or inverted commas for no reason.
(or I'd prefer quantifies the multiplier on space associated with...)
0.1 (meaning boids make decisions with 90% of the information they wouldhave in a non-distributed system
This relationship is unclear to me. Is it just 1 - acc ? Please define it much more clearly and not in parenthesis
It also seems to me like you've inverted the implied defn from above. If 1.0 is perfect accuracy then why is 0.1 good? Unless these are different accuracies (I think they are) in which case you should keep it consistent.
This could also be in the main section. I would define it briefly in the main paper (e.g. We use the increased amount of space covered by nodes associated with using Distributed Worlds on a square grid as an estimate of the increased computational cost.) Then link to a detailed formula here. It was too vague in the main section
ost multiplier is determined by calculating theratio between the total area covered by all node
This is just the duplicated area? Stating that this corresponds to a computational cost multiplier would assume that objects are distributed uniformly in space. This assumption should be stated - and that therefore this is just an estimate of the true computational cost multiplier at any given time.
app screensh
A tidier version of this could be somewhere in the main paper I feel. It's really cool to actually see it.
The parameters are defined as follows:
where
gin as a p
You need to state more about the experiment. I couldn't reproduce it from this. I'd need to know node boundary shapes - squares? or hexagons? or something else? and # of nodes, # of boids, boid params etc. This could go in the appendix of you like, or even a link to a Github repo - but it's got to be in there somewhere.
oid decision-making approaches 1.0 (perfectaccuracy)
How are you measuring this? I know you define it later but this should be up front and clear.
Also - does it approach 1? Surely at 100% node size, the boids are only aware of all boids in this node or neighbouring nodes - not ALL boids.
y into a l
not sure this is the right phrasing
ly more affected by its im
This could be more precise
e,
New sentences
By manipulating these parameters, boids can be made to naturallyrepel one another to spread themselves evenly in the world
Maybe a figure showing boids in a world earlier in the paper?
of gam
Shouldn't the percentages always add up to 100?
Ah caught your expln later, but it'd be nice to have it mentioned earlier - particularly as what the y-axis represents depends on your defn of 'processed'. I think you mean that an object is visible rather than just owned - but this is not clear until I have to figure it out from the context later
duration of nodes as totalnumber of objects with
Could have this and prev one be the same plot for one-to-one comparison? Only if it clearly demonstrates the desired point of course
ution
Again, percentages should add up to 100?
I feel like the effect is harder to see as the processing on different servers spikes at the same time seemingly? If you could show just relative portion of total processing (i.e. it always adds up to 100%), then we'd see that the nodes are not stable in their share of total processing power? This plot makes it hard to see
Either by drawing custom boundaries or by spreadingout objects with a gameplay mechanic.
Isn't a sentence
Distributed Worlds
I like simplicity, but it doesn't tell the reader much? And isn't it more a 'Distributed World', as the idea is that there's only one world?
jects which can be processed by distributing the game enginebetween multiple servers whilst maintaining 60 frames/s
Why does it jump from 1-2-4-6-9?
Whatever thegraphics are which need to be shown
Whatever graphics need to be shown,
he aim of splitting the world between different computer systems is to split the num-ber of objects evenly between the nodes
Is it really? I'd rather you introduce this as a new ideal goal in order to maintain even and stable performance across nodes.
o overcome this hardware limitation, con-tinuous portions of the world are delegated to separate computer systems (nodes) thatare responsible for processing the objects within their respective regions
You don't need to redefine and reintroduce notions you've spent the previous chapter explaining
ypical video game engines must limit the num-ber of objects within their game worlds as beyond a certain number, the hardware thegame engine is running on prevents it from processing all updates within the 16.66mstime window required to maintain 60FPS.
clunky sentence
6ms
why italics?
The Apple M1chip was the hardware use
All benchmarks were run on the Apple M1 chip as it is....
st, they are especially importan
Again, don't need to state. Just state
In this chapter, we study the empirical performance of the Distribute Worlds system to demonstrate its viability as a novel game engine architecture.
Bu
But!
The most important part of many projects is the evaluation of the result
Such sentences shouldn't be part of your diss
(Appendix A.1)
as shown in Appendix A1
All processing for inputcontrols, whether it’s triangulating VR controllers or using a joystick on a controller,should occur on the client side, and the signal sent to the connected nodes should becleaned and simplified as much as possible
Rework long sentence
s will dif
remove will
a
an
ppending
concatenating the list of known objects ...
e is va
can be variable? given that you then make it fixed for this implementation?
This optimisation cangreatly reduce the amount of data needed to be sent to the client each frame, especiallyin worlds with many objects which only change their state occasionally
Can you show this empirically?
applications
requests?
ant th
that the
generally consid
source? how do you know that it is generally considered so?
n a r
some distance? not just 'a radius'
game engine
boundary? margin?
,
this sentence should be two. And reworked slightly
t, re
and
a referenc
??
This means that the number of connections needed to maintain the sharedareas is less
this may be true but I'm not sure you've quite shown it.
You've just stated that hexagons minimise are and have 6 neighbours. Why does it directly follow that they minimise # of connections needed to cover a fixed area? I feel like it'd be kinda tough to prove that.
ost 6 neighbouring nodesinstead of 9.
Surely this depends on the size of the margin and boundaries?
to maximise area whilst minimising perime-te
be more specific. hexagons minimise the perimeter of tile in order to cover a fixed area.
Just as a bee builds a hiv
Funny! Not sure it's necessary but up to you
r, we, too,
too, many, commas!
”init”
initialisation
, me
can't be just comma. I'd split to 2 sentences
it is important to know
note that? important to note that?
WebSocket
You've previously mentioned websocket and are only now just defining it?
Perhaps your original Boids Implementation could go here?
c
a
Therefore, the programming language used to implement this system must beable to easily express asynchronous function calls and I/O operation
More meaningful discussion of alternatives? If it doesn't really matter that you picked TS, then that's fine too
Throughout chapter 4, new systems and designs are introduced to allow multiplayergame worlds to be scaled across multiple servers without introducing an interactionbarrier.
This should be at the start of chap 4, not here
anage ≈ 4000 objects.
before
is permanentlydisconnected, and the player object can be removed from the game world
it is safe to remove the player object from this node?
not from the entire game world. I don't think you defined game world in the way you mean here anywhere.
igure 4.2 shows theDistributed Worlds network topology when many clients are connected, and the worldis scaled across multiple nodes to cope with demand. This can be compared directly tothe earlier figure 3.1 where to scale the backend, it was nec
I want more explanation rather than merely deferring to a figure
Figure 4.2: Despite high demand from many connected clients, multiple servers can beused to spread the load without creating an interaction barrier
I think this figure would be more powerful side by side with the earlier one somehow. With a direct comparison in the caption.
Maybe have this much earlier? It makes the ideas you later introduced a bit more concrete.
,
new sentence
game
Perhaps mention that this logic could be abstracted away if it were a sort of game engine, where the engine manages duplicated message sending and the user (game dev) just manages input message sending and position handling.
his could even be extended to allow for cheat and bot detection
Does it need to be extended to allow for ? Not sure it's the right wording
de fi
Need a second comma here
or rework sentence to start with 'Whilst more complex...'
latter is better I think
player snapsho
Haven't defined the player snapshot
ey arrivedelayed.
Don't think you can use delayed like this
, then
and the
the then makes it seem like it's a if A then B sentence but it's not, the then is part of the A
ed to arriv
doesn't make sense. are delayed in arriving at a node?
However
Don't like starting the para with a connector
in-transit
Think there's a more succinct and clear way of stating this.
player
Would it not suffice to send input to any nodes which the player is very close to? Rather than EVERY connected node? This distance could be dependent on the maximum velocity in the game
e
would be
yer, aft
doesn't quite track to only have a comma here. Need a new sentence or a connector
ent ins
if the client were to only send input data to ...
ry connected node
node it is connected to
user’s inputs
sends user input
d thi
that the
4.2.1 Node boundaries and margins
Worth having a para on the fact that in 2D systems, you can use congruent squares as in Figure 4.1 but that your architecture generalises to any configuration e.g. hexagons, cubes in 3D or any shapes.
Also worth mentioning that the entire game world must be covered by nodes?
Such that your architecture allows for any collection of nodes whose union of boundaries covers the entire game world. And that the boundaries must be pairwise disjoint.
For example, a single node architecture fits into this conception.
between
wdym between? Perhaps you mean takes place on both the client and any node ...
The create player request performed by the clientis just a necessary separation of a single existing step which already takes place onexisting single-node system
To make this tighter, I'd define the two (?) step process of player creation requests more explicitly. Then say something like,
In traditional, single-node systems the player creation request is done a single step.
Also, you could have stated somewhere earlier that traditional architectures can be thought of as a single node. I.e. your architecture is, in a way, more general. It's a nice conceptual connection.
could instead be connecting to the node to view objects in this node on behalf of anexisting player in another node
This isn't obvious to me. Is this the malicious message you're on about below?
.3 Clients (frontend)
The paragraphs in this section felt a bit disconnected. Maybe some inline bold subtitles could help? Or qualify that you cover it chronologically at the beginning of the section?
(since clients could send malicious messages
I'd first define the security risk then talk about mitigating it, rather than defining it as an aside
hich node should be connected
it should connect to
For this project, the goal is to demonstrate that a client for the Distributed Worldsengine can be built and has comparable performance to clients using traditional serverarchitecture
This feels a little like a redefinition of the goals previously stated in terms of client FPS
ut
But
software running aplayer’s computer
software isn't used to run computers?
Primarily,
??
ect to vi
comma?
strictly
again
strictly
wdym by strictly?
If the object continues to travel deeperinto the new node whilst the previous node continues to process its updates, then thegame engine cannot accurately process the object because it is not aware of all of thenearby objects on the other node
This seems like a secondary reason to me? Don't you want to do this to maintain that nodes own ONLY the object within their boundaries? I.e. localisation of ownership.
we
We? All of a sudden?
inally
remove
const obj of objects) {// process
Syntax highlighting if it's gonna be much closer to actual code than pseudocode?
frame(
Again eqn
node margin
You've been quite flexible with your defn of margin and boundary. Are they the limits of the area or the area itself? Are they distances?
depth of vision
Not sure this is the right phrase
This is because
Repeated this is because
(shown in figure4.1).
No need for parenthesis
The size and position of each node’s section of the world are defined by the nodeboundary
I would connect the boundary defn more directly to the previous paragraph. In fact, I'd define boundary in the previous paragraph without using needing to go via the word section - it's unnecessary. And then define the margin in one paragraph.
A margin around a node’s boundary defines an area in which all the objects in themargin must be known to the node
Bolding margin twice seems unnecessary to me.
Figure 4.1: Diagram of neighbouring nodes. Overlapping node margins are shown tocreate shared areas between neighbouring node
I like this diagram. The node-to-node connection arrow seems a little vague to me though.
has
would have
An example of this would be if an object were increasing a counterin each frame. If two nodes begin processing the update for this object each frame,then the counter will increase twice as fast as it should.
Is this true? What if the counter were updated independently on each machine? Obviously, they might not align perfectly with more complicated calculations and isn't practical, I'm not just sure that what you're asserting is necessarily true.
.1.1 The Boids Program
Given that you then use this as an experiment, I would make that clear upfront. Why do you talk about this? Either now or later I'd a sentence or two justifying why you used boids as a simple experiment to demonstrate limitations. Why not another model?
Otherwise, it feels a little out of place.
re 3.1: High demand from many connected clients necessitates the use of multipleservers, which creates an interaction barrier between worlds, isolating players
This doesn't quite do it for me - It's just a sentence. It should link to what you can see in the image a bit more directly, and then how you come to that conclusion.
To meet the goal of elastic scaling and handling large amounts of traffic from manyplayers, it must be possible to add more compute power to the system to cope withdemand. To be able to do this, the game world first needs to be broken down intoscalable units called nodes
This isn't strictly true. You could vertically scale. I think you could substantiate the second sentence more precisely to reflect this.
ependingon their position
This only makes sense to me because I already know roughly how it works. This line might leave me confused if I didn't already know
The functionality of scaling the world is then entirely contained within the DistributedWorlds system.
This sentence is a bit meaningless to me. Isn't the scaling of of any game world contained within its system? I think I see what you're trying to say but could reword this. I think my confusion mostly comes from the term Distributed Worlds system. It isn't well defined to me.
me() {for (const obj of objects) {obj.update()}
Again, equation number or something
he core idea that allows this to work is that
The core idea is for Distributed Worlds to operate on an ...
2.4
seen in Section 2.4 or similar
Objective
Object for a Distributed Worlds System?
Also, don't you define the objectives at the start of the next chapt? It's a bit confusing
But
No but
goals.
Requirements?
Elastic
I'd try to more directly relate the sentences that follow to the word elastic. Not just take advantage, but adapt to the computational demands etc
Althoughthis dissertation aims to prove that the performance of large-scale multiplayer gamescan be greatly improved, it will not develop a commercial video game
Rephrase:
This work focuses on proving that ... but does not implement a video game.
perceived performanc
why perceived? Aren't you measuring 60FPS, fairly objective?
eveloped are purely to demonstrate the capabilities of the system.
Bring it to prev page somehow
mance penaltie
What do you mean by a performance penalty?
,
remove comma
,
no comma needed
as a limit to how much it can processin 16.66ms
is limited in how much it can process in 16.66ms. Recurring?
d th
and even the
still
remove
still
always
This dissertation
I? We? This work?
But
Can't start this sentence with but
Client downtime to change servers
Cap?
I think this section would be made more concrete with an example of a video game where it is common practice for players to do this
li
Cap?
eing
del
Not only this but
clunky
e
comma
above
Above? Specify, reference
rames/s(FPS)
Again
UPS
Haven't defined UPS? Also the updates per second doesn't increase, the update duration does. The updates per second actually goes down?
6
Earlier you put 16.66 recurring. I think this could be fused neatly with the prev sentence
t, o
New sentence
3.2compares
Figure 3.2 compares
R-Tree
Ref earlier section?
exist-ing
remove
l
Capital?
3.2.1 Number of Objects
This section could just be one tighter paragraph I feel.
I would just make it one paragraph about 3.2. It also feels like introducing the notion of 60FPS being the gold standard for your testing shouldn't be here either.
However
remove
cts in a video game world is limited by theperformance of the computer processing that worl
So? Sentence feels a little out of place. Make it make sense in this para
N
no capital
This means that this game world can handle no morethan ≈ 1200 objects
Slightly too repetitive. Maybe 'We interpret this as meaning that the game world can handle...'
at ≈ 1200
approximately 1200 objects
rom the demonstration,3.2
Figure 3.2 shows that ...
Figure 3.2: Number of Boids in the game world vs.
What does the figure tell me? A description is fine but I need you to draw a conclusion from it.
3.2
Section 3.2? Again, ref and label
his
No need for a 'this' here. I would just say : Therefore, the requirement for all testing conducted is that the game must run at at least 60 FPS to be considere ...
2.1
Missing parenthesis? You can use latex \ref{section} to reference a previous section which has a \label{section}, creating a clickable link and automatically inserting the correct number
rames/s (FPS)
You've already defined FPS, just stick to it or only use frame/s
a decision about each frame
what do you mean 'a decision about each frame'. Do you mean a decision about its action/behaviour in that frame?
ill implement
earlier you used present tense ('is created') and now future
gotchas
I don't know what you mean by this
,
Full stop?
his implementation is used instead of benchmarking an existing gameengine because
Too many repeated words from prev sent
To demonstrate the limitations of traditional multiplayer server architecture, a simpleimplementation of a multiplayer game engine is created to benchmark these existinglimitations.
This sentence is hard to read
Thismeans that the maximum number of people in a single game world is still limited, butthere are many separate, disjointed worlds
This whole sentence doesn't quite track to me. The 'but' particularly throws me off
disjointed
disjoint
oad balancing between them, as described abov
You didn't mention load balancing above. You just mentioned using multiple servers. I only state this to create a more directly link.
Also, a comment from Amos on the little feedback he's given to me is that 'as above' is lazy.
Perhaps a reference here would be good.
t is important to know t
Note that
solve for performance
don't like the phrase
interaction barrie
this is your first use of bold which feels out of place. Maybe italics again if this is meant to be a defn
even
remove even
Well
Remove Well
Components that benefit most from spatialpartitioning include collision systems, visibility culling systems, audio propagation,and AI perception systems—essentially any system that needs to efficiently identifyobjects within specific spatial region
Any system that needs to efficiently identify objects ... benefits significantly from spatial partitioning. Such system include ...
re playing from
wherever they are playing from around the globe?
Game engines typically address this challenge through variousoptimisation strategies, such as component update scheduling, spatial partitioning tolimit updates to relevant objects, or data-oriented design approaches that organise com-ponents for cache-friendly memory access
Got a citation for this?
discrete
different
ame engines
italics
simulation that requires a game loop to run.
Does a boid program need the render part?
intense g
Not sure intense is the right word here
can b
is often? Or keep the can be and change to
'can be ... if the graphics are intense'
?
0 frames/s (FPS)
Do you need to put frames/s here when you've just defined FPS
a thresh
what threshold?
rames per second
Maybe italicise as it is a new defn
le(!isGa
This feels a like a figure/pseudocode. To me, it should have a caption or a number like an equation and be referenced in the text
ng th
comma? Or reword to be less clunky. Maybe just While the game is the running, the game loop ...
Not only this bu
clunky
massively multiplayer
haven't defined massively multiplayer yet
delegatingcontinuous sections
What is a continuous section? I'm not sure the word continuous should really be used here?
y existing
the?
This dissertation
This shouldn't be how you start the diss. Something more like
The fundamental limitations of traditional multiplayer game architectures ...