Transcript (by Youtube)

0s foreign
3s hello everyone welcome to another Friday
6s strange Loop games stream here
9s um my name is Jens working as a game
11s designer for strange Loop and to get
14s through here today we have Alex and
17s Casper
18s Alex do you want to introduce yourself
22s yeah I'm
26s the game developer in uh
29s uh so G and Morgan mostly on technical
33s stuff and
36s so last
39s few months of working on channel
41s improvements so like
45s uh reduce
48s rendering time for chunk increase number
52s of charts we can render repair time
56s optimize
58s different things related to uh
62s chunk related objects like plans and
65s shops something like that
69s and oh
71s kind of such stuff
74s yeah so
75s one of our cool guys behind some of the
78s big optimization changes and Casper know
80s you've been working
82s quite in depth in this field as well
86s um well yes I've recently moved from um
88s or several staff work to help Alex with
92s optimization I've been mostly focused on
94s optimizing plants lately trying to make
97s them more lightweight so we can deal
99s with the huge number of plants we have
100s in Nico
103s yeah and I think with that we'll kind of
106s kick start on what everything everyone
109s wants to see in that is fancy new
112s changes and optimizations to General
114s gameplay
116s cutting into
118s screen sharing here
121s um you can see that I got the
123s specifications for
125s Casper that is doing the screen sharing
127s right now
129s um up in the corner hopefully it's
132s legible
134s and you wanna go through the world a bit
137s and
138s I'm gonna show it off yeah
140s and you can see a brand new VPS counter
144s always in game
145s aspirated
147s for today's stream now
150s in game for the local version
155s yeah which was
158s one of the one of the things that we
159s cooked up to kind of be able to present
161s the frames on screen in game so now you
164s have a graphical option for that and
167s we'll all make it a little bit more
168s polished neat and tidy and then shrink
170s it a little bit so it doesn't
172s take up that much of us
176s that much screen space as a checkbox in
178s the graphic options too
180s yes but we wanted to make it visible now
182s since we are bragging about our
184s optimizations so we want everybody to
186s see their frame count and those are the
189s things I am playing with
190s mostly pretty low but they are kind of
193s matching my Hardware although the
195s rendering is set to 400 meters which I
198s think in the previous versions of Eco
200s wasn't even possible to Crank It Up
202s Crank It Up that high yeah we have that
204s limited to 200 previously so we have
207s essentially doubled with our big
209s optimization changes we have a goal part
213s of that was to push out so you can
215s really see further out
218s and
220s to do that we needed higher higher
222s viewing parameters which also meant that
225s we also needed to optimize it a lot more
227s to be able to to support this
231s um
231s which is really cool I'm just
234s getting so distracted by the fact that
236s it's working so smoothly now uh with
238s this new higher uh view camp
244s yes I guess what we want to show the
246s most was the track test
248s yes passed pretty well the last time we
250s tried
252s so to show just that we don't only get
255s the high frame count when we are
256s standing in one spot but we can actually
258s drive around travel around and as long
261s as we are not flying at some crazy
263s speeds in admin mode then everything
265s stays pretty smooth
268s yeah so we have all those trunks loading
270s and unloading around us
275s yeah and as you can see there's still
276s there's still a couple of things that we
278s do want to improve on as it dips closer
281s to around 60 range
283s um as as that is one of our goals to
285s kind of keep above regardless of the
287s situation
289s but that's also dependent on Hardware a
291s little bit
293s but we have we have some pretty pretty
296s significant other improvements that are
298s being looked at as well with
300s Alexis spearheading into
304s yeah so
307s it's still work in progress and
310s they expect more fixes and
313s yeah Casper I'm not sure if you use uh
318s uh default plans rendering or optimize
321s it
322s no I already switched to our new plant
325s rendering so they are all all those
327s lightweight entity objects that's
329s actually why we can't see the
330s interaction prompts yet because that's
332s something that I'm working on currently
334s well it's almost finished because that's
336s all though all those plants are real
338s actual objects they have all the data
341s and stuff except since we updated to
343s make them into more lightweight versions
345s and the interactions are not fully
348s stable yet so I'm working on that it's
350s almost finished but it still needs some
352s polishing especially the visual Parts
354s like highlighting but yes yes I'm
358s currently running on that new version
360s yeah so if you uh take attention to the
365s detail uh sir now
370s instant plan spawning so no more
372s situation when you already load the
374s chunks but still wait while all plans
377s loaded
379s so now they appears at the same time as
381s chunk
385s yeah and you don't have this destruction
388s in the game process and actually uh
392s so main idea behind all these
395s improvements to increase rendering
398s distance to 400 meters is to uh
404s make a game more immersive because so
408s you don't
409s feel uh balance of the world so it feels
414s really like
416s um
418s a world where you can travel in any
420s direction and don't see like uh chunks
424s loading or
427s like white space
429s on edge of
431s this scene so
435s yeah
436s and yeah and and actually it uh also
441s good for screenshots because a lot of
444s things
445s we was requested many times so when you
448s go to Mountain and
450s want to make a good screenshot
453s it's not possible because you see edge
456s of the world
458s and now this new distance uh
461s it will be less likely you have such
463s situation
465s yeah
466s chance and to and that's been that's
470s been a big drive for us we we do want to
472s eliminate that
474s that so-called fourth wall a little bit
476s in
477s you should feel like you're in a world
480s you would never feel that you're
481s confined within this digital space where
483s you see
485s kind of invisible borders all around you
488s a bit more about the fluid environment
491s and you see the greenery kind of span on
492s in in the horizon
494s you see these impressive buildings
497s um
497s and as due to the um I know a lot some
501s people might have some concerns in
503s regards to structures and buildings and
506s when things are you know civilized
507s around your industrialized we were
511s trying to get some worlds imported as
513s well but due to the changes at the
515s moment we don't really have fully
517s migration systems between 9.7 and 10 so
521s it was tricky to to get
524s a more built up world
526s ly imported for uh
529s for more kind of technical testing but
530s this is one of the worlds that QA is
533s having when they're testing out
535s performance changes where we have bigger
537s Fields as you can see on the left there
540s and where you have a lot a large density
543s of certain crops
545s gonna see what potential performance
547s changes happens when we do
550s graphical changes or textural changes to
552s them as well as changing algebra disease
555s on objects
557s doing all kinds of
559s all kinds of testing to see how they
561s impact
564s now Alex on the subject of vast vast
570s large worlds where you see things on the
572s horizon we
573s we talked about loading for a bit over
576s on Discord here and there but you want
579s to kind of go over the concept of
581s loading and as as a general kind of
583s brief summary of why it's important and
585s then
585s where we're using it then yeah sure uh
589s so as you can see there are no
591s noticeable difference between uh 200
594s meters in uh
596s our release version and 400 meters in
600s developed so main challenge for us was
603s to
604s maintain same or higher VPS
608s uh with increase the distance because
611s you have much more
614s things to render in scene in that case
617s and so uh that I know different ways how
622s we improved it
624s and one of important things is using a
629s lot system and actually it's widely used
633s in
636s game development and it basically means
639s level of details and
644s concept of this technique is to use less
647s detailed uh
650s objects on distance it usually depends
654s on size of this object on screen
657s so like how much space on screen take
660s this object and so if it very small you
664s won't see uh significant details uh
668s insignificant details anyway so we can
671s meet these details and use less
674s resolution textures less detailed
676s polygons and so it all reduces impact on
680s GPU
683s and yes so but because in Echo we have
690s fully Dynamic world with everything you
694s can change with your hands so it
697s basically beats builds from data
701s and every block is just like
704s some number
706s and we need to do it all in runtime
710s so uh it's not like so for example for
715s plans or for word objects we use it
720s there's lots of a long time it's it's
724s very simple so we can just add
727s a few models at some settings and then
730s when you move for a distance it have to
733s automatically decides which version of
735s files this model to use but in case with
738s uh channels
741s which consists from blocks which builds
743s in runtime and you can't take them
747s into game how we
750s had to develop our own system for the
755s subjects loading so it basically uses a
759s different level of details for blocks
761s and like we have
764s are less detailed with less polygons
768s with simpler textures blocks on distance
774s and then we used just cubes
778s for very distant chunks and so we
781s dynamically built this different level
785s of chance
786s depending on on distance and then we
790s have system which on demand builds
793s missing levels so if
796s when you just enter to the world it just
798s builds uh
800s uh simplified measures for distance and
805s then when you get closer to the Chart
807s then in run time builds uh more detailed
811s version of this chunk
813s and when you move far away from your
817s initial points and it builds less
819s detailed so it all works uh this way is
823s a fully dynamic system
825s and yeah it
828s lets us to
831s render this uh huge world with high VPS
836s with a minimal impact on utpu Hardware
840s so
843s it was a big Improvement
845s and
846s yeah and
849s actually we don't
852s load objects
855s for distance more than 200 meters like
859s in old version but it not not this will
863s because you usually only see a ground
866s onward distance and so if you have like
868s a workbench
872s or a distance you won't see it
875s but if you get closer it will load and
877s unload if you move away so yeah
882s there is was uh different uh kind of
886s optimization with limiting loading range
889s with depending on
891s view distance depending call now
896s uh
897s yeah actually it's everything about laws
901s yeah I don't think we
903s got a couple of questions
905s um
906s so um they for instance if a hundred
910s players comes in with this kind of Chunk
912s rendering kind of cranked up to Max and
914s the server then has to provide the each
916s layer all the chunk data
919s um is this this the performance gonna be
921s impacted due to higher higher kind of
924s impact on the server because it needs to
925s transfer more more information to the
928s clients or
930s um uh yeah uh actually it's correct it
935s will need to transfer more information
936s than before but as part of optimization
940s we also are Factory at server code
943s so now it may group chunks
948s are together for different clients like
951s before it
953s had to
955s request chunks per client and now it has
960s a unified processing for all these
961s chunks so and optimize this system for
965s chant update subscribing for chart
967s updates delivery
969s so it if we just move this system to all
975s system it will improve rendering speed
977s but now it
979s much more optimize it for multiple
982s players so like it won't reduce same
988s operations for multiple clients but
991s instead it will process like chunk
994s update
995s once and send to all act players who can
999s see the Chuck in seat of doing kit for
1003s like 100 times
1005s SN card released version thanks
1009s and there is a kind of stretch question
1011s with have you or have we planned for dll
1015s dlls 3.0
1018s yeah
1020s uh we didn't discuss it yet yeah but yet
1025s probably will be a good Improvement yeah
1028s it also depends on the unity support for
1030s this feature oh yeah yeah we are on on
1033s that subject for like mothers and
1036s everything
1037s um we are kind of transitioning through
1039s the unity versions as they become
1041s necessary part wise but also
1045s um where where they come into the point
1046s where they support the
1048s packages that we're using I know the
1050s entities was delayed for quite a
1052s significant time due to
1054s Unity hadn't really pushed any updates
1057s um in that regard to
1059s quite a significant time
1062s um but it's something that we were
1064s allowed to start on for uh when we moved
1067s up to 2021 Yeah Yeah we actually uh in
1071s process of unity upgrade
1074s new version so we can use more fishes
1078s yeah so that's something that's kinda
1081s partly limited by the way we have things
1084s set up but also partly by
1087s were hinged on unity in some areas to
1091s really stable versioning of these things
1094s or long-term support for them because we
1096s don't want to update to
1098s something that's still in preview or
1100s beta on their side just because it would
1103s improve it but those often ends up
1106s having to rewrite Code 4 to integrate
1109s with halfway through so
1112s it's things that we avoid to kind of not
1114s have to do double work in that record
1117s um we have another one for for loading
1120s in regards to the question for what
1123s about game objects but I'm assuming that
1125s he's referring to World objects
1128s in general so like all the crafting
1131s stations and all of that and I I think
1133s we have some plans for it but we haven't
1135s started yet
1138s yeah actually we already have lots of
1141s World objects for a long time
1143s so and for yeah probably not for all
1148s but it's not something we didn't use but
1153s yeah that is actually main issue with
1156s the chance as I described because a
1159s dynamic and we can't use standard into
1161s tools for loading
1164s yeah but with all other objects which is
1168s uh like static and oh
1172s shouldn't be regenerated
1175s we can use standard Unity tools and yeah
1178s it works fine for years actually in game
1183s and yeah and another Improvement we uh
1187s so
1188s actually another improvements we did for
1191s at a higher rendering distance
1194s this was related to trees
1199s and it's uh already in our list version
1203s but it was Planet 4 increases the
1208s rendering distance because trees are
1211s large objects
1212s and uh if as I said for volt objects we
1216s can just not render them on high
1218s distance except very large forward
1220s objects with trees we probably uh
1224s have to render them far away
1226s because
1229s they are big and if you want to see
1232s Forest on Horizon and it will be nuts
1235s well so
1237s we had to find a way how we can uh
1241s render trees faster because it uh I I
1245s know everyone who
1248s are seen a big Forest know about that
1251s problem it kills you PPS
1254s and especially if it's a player planted
1258s first with London every block we
1263s eventually fix it where to
1266s not allow you to place
1269s trees after each other but it's still
1272s high impact on VPS so
1277s with some improvements in nine seven we
1282s have much more simplified tree models
1287s and we have loading so instead of
1290s rendering full free with all branches
1292s which also procedure generated in our
1295s render are simplified single mesh model
1298s on distance
1301s yeah popping in there a little bit but
1304s on on the three things one of the
1305s reasons why we kind of added that
1308s restriction in part as well is that
1312s it's a bit of a Band-Aid for the three
1315s generation and the versus the tree
1317s planting where
1319s players would plant crazily amount of
1321s trees and they would just grow next to
1323s each other because the Eco simulation
1325s didn't actually kill them or manage them
1327s in a good manner and it requires it
1330s required a bit of a bigger rework so
1333s we decided it was in it was necessary
1336s enough because it was killing
1339s performance too much as well as it could
1342s also be used as a severe griefing method
1344s where people would excavate large
1347s underground tunnels and plant trees
1349s underground as well which then
1352s in a kill performance for anyone going
1353s nearby
1355s um
1357s yeah and there are also uh
1360s game mechanic uh motivation because
1364s plans in
1367s nature not user planted have some
1371s restriction for distance and so it was
1375s not fully correct to let plant more
1380s dance
1381s significantly more dense when it
1383s possible in normal simulation yeah
1388s on on the subject of optimizations
1390s that's the main that being the main
1392s topic of the stream
1394s um any improvements on in regards to
1397s loose objects like Rubble for instance
1399s that's always kind of
1402s causing issues when it comes to large
1404s quantities
1406s uh actually we didn't
1410s do anything in a bad Direction so we
1413s more focused on other tasks for now
1418s uh but yeah actually we probably can
1422s apply some improvements we did for
1424s plants variables in perspective but the
1428s main issue with physics attached about
1432s objects because for plants we really
1436s don't have physics for example
1439s it's only uh
1441s some
1442s trigger like physics when you move into
1445s plant or when you need to recast to
1449s interact with plant
1451s but it doesn't interact with rigid
1455s bodies like rubbles and so my issue is
1460s rubbles actually that's a rigid body
1462s attached to that object but we already
1466s have optimization in place when we uh
1470s disable this rigid body when our Rubble
1473s not moving so after initial movement
1476s phase uh they uh
1481s stay in place and basically Frozen with
1485s a simplified physics and so for such
1487s variables we can probably also apply
1490s some optimization which should let us
1493s significantly reduce impact on
1496s performance and on
1499s Unity engine for these objects because
1502s for plants we actually
1506s use it ecas approach
1510s V standard approach you have in the
1514s unity you need to create game object
1517s for every object you want to render in
1519s the world and with which you want to
1522s interact
1523s but it means we have
1526s uh thousands and thousands of such
1529s objects for every plant for every grass
1532s object
1534s because uh
1536s like with many things have already
1539s planned his own simulation so we can
1542s just uh
1544s like render it with the same object and
1549s with single Shader but instead we need
1553s to make this object because he affected
1555s by pollution is affected by age
1558s uh
1559s if Catherine or not
1562s um
1563s and every such object has its own
1567s rotation related by the scale things
1571s like that
1572s and previously we had game object for
1575s our research object for all these things
1579s but now with uh refactoring
1584s a Casper and we work it on
1586s we was able to fully convert this game
1591s objects to entities so entity is concept
1594s for ECS which led us to make
1599s uh instead of this complex object with
1602s many relations with companions such as
1605s the like
1607s a few bytes of data
1610s okay like 100 by 100 bytes of data per
1613s such object and use a system which
1616s processes as data and puts uh this data
1622s render sent it to the world
1624s so instead of like making complex
1628s hierarchy for every plant
1630s and to put pressure on memory management
1634s in unity
1635s which doesn't work well these objects we
1639s have this optimizes system which
1641s minimizes amount of data we need for
1648s object for such object Institution for
1650s plans and then we can just add such data
1656s into like structure into list and it
1659s appears on world so like creating entity
1666s nanoseconds but making an object it's
1670s something like a few milliseconds in
1673s worst case
1674s so we basically reduce time we need to
1677s process
1679s such a creation of such an entity in 100
1682s or in Thousand types
1685s yeah and I think it's something that
1688s um it is a really
1690s really tricky field trade you have to
1694s know where to look and debugging these
1696s things and I also think that it's it's
1699s very hard to
1701s from an external point of view you see
1704s that these optimization things are kind
1706s of tricky to nail down
1708s um they're very system system dependent
1710s on where we're at in in terms of
1712s development
1714s um
1716s and it's you know we're talking about
1720s um we're talking about you know
1722s nanoseconds and milliseconds as like
1725s milliseconds being the high Count versus
1726s nanoseconds optimal count
1729s which might not sound a lot but when
1731s we're talking about you know hundreds of
1733s thousands of objects that needs to be
1734s processed very very quickly
1737s as it might be just one two three four
1739s seconds on your side
1742s um
1742s system wise it's quite a significant
1745s amount of calculations
1748s um
1749s and more importantly we can move these
1753s entities processing keep background
1755s threads so we can utilize utilize
1758s multiple cores more effectively yeah so
1761s like a logic runs in background while
1765s main thread can be buzzed with uh
1768s significant again things yeah
1771s um
1772s and on
1774s let's see here we got a couple of couple
1776s of other questions which is uh we got
1778s one here with what's the impact of
1780s rubbish internet connections on all of
1782s these chunk loading changes
1786s we're going to see any any higher like
1788s latency issues due to higher chunk
1791s accounts or
1793s they actually uh it of course will have
1797s some impact because uh
1800s yes because it took small time for our
1805s package traveling
1807s Network
1808s and yeah we have some mechanisms which
1812s prevents clients from overspamming with
1816s chunks so if uh
1819s client doesn't keep alive uh fast enough
1825s then it may have some delays for
1827s delivery because there were like sense
1831s uh 200 chunks to client and weights
1835s while client confirm uh it's ready to
1839s receive more chunks
1840s and so you may uh
1844s see a slowest chunk loading
1848s in what case
1851s also yeah it's uh Definitely Maybe an
1854s issue but uh
1858s you probably will suffer from it for
1862s really poor connection and yeah we
1865s probably may think about some
1868s improvements like on client you can
1871s set how much chunks you're ready to
1874s receive
1877s before server stops sending new chunks
1879s to you so in that case
1882s you will have some buffer
1885s yeah and it's actually easy to fix and
1888s maybe maybe it's unconfigurable yeah I
1891s think something like that will probably
1892s go into
1894s into an option config or a couple of
1897s presets like um
1899s like Network traffic or like Network
1902s options where you can select between low
1903s medium High
1905s um like you know slow medium faster or
1907s something in the lines
1910s um well since we are giving more control
1912s now to the client over the amount all
1915s and which tanks are being sent so that
1918s will also go well with this kind of
1920s similar to what we did with tooltips
1921s recently which was adding caching and
1923s trying to
1925s sort of take care of those highlighters
1927s connections where we would have to wait
1931s for several seconds to open even a
1933s tooltip and now most of them should show
1935s up quicker because they are being cached
1937s and we are trying to reduce the amount
1939s of traffic so it should probably take a
1941s similar turn in that case
1944s yeah that's a good point um we have with
1946s the changes to that went into 9.7 which
1949s was a large volume of what we were
1952s working on towards 10 is in a client
1956s mitigate things more so they're not as
1958s reliant on the server for processing
1960s which means that
1963s your uh your local performance is what
1967s is the determining factors you don't get
1969s slowed down on the client side due to
1972s processing communication between the
1974s client and server
1976s yeah and also another thing we're
1979s working on it's not yet implemented uh
1982s but uh
1984s we have plans for it is to
1987s move control over uh Chan clothing to
1992s client
1993s so main benefit of this approach we can
1997s uh
1998s decide on client which chunks we prefer
2002s to load
2004s and at which speed and also we can use
2007s client cache both in memory and this
2010s cache so like if you
2013s enter into the world it may load all
2016s this chunk this data from server then
2019s save to you this cache
2021s and when you enter to the world next
2023s time it will not wait from surfaces
2027s chunks but instead render uh chunks from
2031s this cache and ask server for updates if
2035s needed so if it's like mostly static
2039s Terrain in that case uh you will have
2043s only very few chunks received from
2045s server in that case and even if
2048s you're not yet received you will see how
2051s data outdated version of this train but
2054s it will be updated like in
2056s uh
2058s depending on your pink
2060s like 10 or 20 milliseconds
2065s so it will be still fine and yeah it uh
2068s sir prioritizes uh closest chunks so
2071s yeah like on Horizon you may see audited
2074s chunks which will be sync it
2076s in few seconds but our chance close to
2080s you will be likely up to date in that
2083s case but yeah you can uh have much
2089s faster rendering and less dependent on
2091s PING
2092s and yeah so if you move between two
2096s points like from City to your house
2099s and then it may preserve this chance in
2103s memory cache and it will remove
2107s measures because they consumes memory
2111s but chunk data is a
2115s actually relatively small
2117s so I'd like
2121s uh 2 000 bytes to kilobytes per shot
2124s something like that
2126s yeah and yeah so you can save them in
2130s memory at least for some probably maybe
2135s also configurable option and so if you
2137s move between two points and you may have
2140s experience much much faster
2143s channeling and less request to server
2146s and less delays and less dependent on
2149s pink
2151s um we have just a couple more questions
2154s which
2156s one of them being that it seems like FPS
2159s is going down the higher the character
2161s gets so are you not loading chunks if
2163s they're within the 400 limit but below
2165s the horizon
2167s um
2170s essentially like if you're moving
2172s vertically
2173s you're not seeing as far down
2176s so are they still loaded in or are they
2178s getting unloaded because you're gonna
2181s reaching the span on it of course the
2183s loading and viewing distance all the
2185s same on an even plane
2189s uh you are loading distance doesn't
2193s depend on you
2197s vertical position so it's uh
2200s okay previously it actually depended on
2203s your vertical position
2206s but now it renders uh
2211s columns so it sends we after less
2215s refactoring it allows full column
2219s and only depends on your horizontal
2222s position so like
2224s XZ not degree
2228s and yeah it's for the performance is
2232s probably just from the amount of stuff
2233s that I actually have to render because
2235s it still impacts my HP also when I get
2238s higher I actually see more stuff and all
2240s the plans that actually need to be drawn
2242s whereas when I'm lower than a lot of
2244s stuff is just obstructed and there is
2246s just isn't that much stuff to process
2248s yeah so actually we also have occlusion
2252s cooling thing which prevents rendering
2254s of objects behind
2257s like mountains so if they obscure it by
2262s some object you
2264s say we'll skip it from rendering
2266s but if you own uh in the air
2270s then you will see everything and so
2273s there are less
2275s optimizable in that case
2278s yeah
2279s um also with with the changes and the
2282s new distance will the game keep using up
2284s more RAM to keep everything loaded or
2289s data wise nothing really
2291s we haven't really compressed that much
2293s data wise other than the entities answer
2295s that but
2297s General like sized RAM usage
2300s overall concern
2303s uh actually uh
2306s it's oblivious but we render more
2312s higher higher distance and we render
2314s more ground meshes
2317s so most impact on memory is from meshes
2321s and this measures will mostly impact
2325s your GPU memory
2327s so you don't if you don't have enough
2330s vram then probably you need to use lower
2334s rendering distance
2337s about four chunks itself as I said
2342s they relatively small so like few
2344s kilobytes per chunk
2347s and so that it shouldn't be to be
2350s compact on memory usage these chunks but
2353s yeah we still need more testing yeah and
2356s I think if anyone's still confused as to
2358s what we're referring to with the chunks
2360s it's every and the world is built up in
2363s chunks which is essentially pillars and
2366s they're redefined by the server size so
2369s the default one being 72 by 72 and each
2373s chunk consists of a 10 by 10
2376s surface area of
2379s plots so essentially it's two claims
2381s wide two claims
2384s right
2385s um
2386s and that kind of composes aishank and
2388s then
2389s these chunks is the the squares that
2391s keeps being loaded in that you've seen
2393s before when you're running up through a
2394s new area quickly
2396s um and that's what we're hoping to you
2398s know
2399s eliminate and mitigate where you could
2401s you don't really see that happening
2405s okay so it's just convenient way for us
2408s to render blocks in groups
2412s yeah like
2414s and update
2415s also instead of sending pair block which
2420s will have lot of our head so because we
2423s need to send position for every block we
2427s group them together in by 10 by 10.
2432s blog group and so if you update such a
2436s group then we send the whole group and
2438s render this whole group
2445s a general kind of generalization
2448s question in regards to optimization
2450s progress and
2452s where we're at now where we've been and
2454s where we're moving forward with is it
2456s possible objectively to know kind of the
2458s percentage rate of improvements in
2460s performing
2461s um say in upcoming years and then
2463s through Eco development or is it always
2465s kind of a leap into the unknown of how
2467s much how much we cut down in memory
2470s costs and
2472s um
2472s performance and general
2476s yeah it's actually a performance theme
2478s which is hard to predict because so
2482s usually it's like iterative process when
2484s you
2486s are
2487s do profiling so you specialize a tool to
2491s understand uh how fast parts of your
2495s system works and how much memory it
2497s consumes
2499s and then you start looking into code and
2502s trying to understand problem trying to
2505s fight solution
2506s and so it's not like
2510s you may uh
2512s predict such thing so sometimes you have
2517s idea but even for some brilliant ideas
2520s say not always works
2522s and it's not always possible to predict
2525s outcome of
2527s are a change so it's like most science
2531s and programming when you have some
2534s theories which which you need to check
2537s yeah I think it it's a very it's a very
2540s tricky thing to answer because it's so
2542s much trial and error very much the the
2546s scientific the scientific method
2548s approach to it where we see that
2551s something could potentially be an issue
2553s like the plants for instance where we
2555s knew that changing these out to entities
2558s that would have a potential significant
2560s Improvement but it's always hard to
2563s gauge how much of an improvement it
2566s would have
2568s um where we know that it's valuable to
2570s do it and we you know we do it because
2572s it's a good way to find optimization
2575s sourcing and
2577s and on the subject with the rubble we
2579s knew that they would be physically heavy
2583s um which also would result in
2585s in a source of big performance impact
2588s where we make them static once they've
2590s been sitting idle or they've been
2591s uploaded so that reduces the amount of
2594s drain on the system
2596s the loads being an important part as
2598s well so there's a lot of these key
2600s factors where we know
2602s changing these out and spending the time
2604s to improve them we know we'll have a
2606s substantial Improvement
2607s but then there's also points where there
2610s could be
2611s very small things and steps in between
2614s where we see these as we do profiling
2617s and that's something that's also
2620s requested by players that run into
2622s issues with memory handling or if you
2624s see that your system is using a lot more
2626s memory wise
2627s or dunks out in in frames and drops
2630s somewhere we can often request
2633s um
2633s profiling data which you can get from
2636s apart from the F2 menu in game
2640s um
2640s as per can probably show up where you
2642s can find some of that data here
2645s so on F2 we have a menu enabling for
2649s seeing how the game is using resources
2652s and what it's spending those on
2655s um in different categories both Network
2657s performance
2658s um extra streaming and kind of where
2660s where things are going how how long time
2662s it's taking the process and one of these
2665s Pages some transforms and the yellow one
2669s for hitting f11 takes a memory snapshot
2672s so that
2673s kind of makes a pool of
2675s uh
2678s kind of the data shorts over what's
2680s being used and I think Alex can probably
2682s playing that a little bit more
2686s yeah actually you're you're on the
2689s receiving end of these snapshots and and
2691s these memory yeah actually actually as
2693s you can see on these uh can you return
2695s to chance page
2702s as per can you please return the
2703s channels page I know there is some some
2706s black I can probably close down the chat
2708s there as well too yeah okay so as you
2711s can see on this screen there are Chan
2712s groups it's like so for optimized
2716s rendering we group chunks together in
2719s another groups are like three by three
2721s by three so it's in total 30 by 30 by
2725s 30. blocks it's to reduce number of draw
2729s calls to GPU
2731s but yeah I probably don't need to go to
2735s much into details but on this screen you
2737s can see uh
2739s number of load zero load one and Lot 2
2744s meshes
2746s for chunks so it's like 65 lot zero so
2750s higher detail and 71 for all that one
2755s and Lot 2 is uh
2759s much much higher number which is just
2762s the uh blocks
2765s cubes blocks like Minecraft Style
2769s but on distance you can't see them so
2773s there are big Improvement in using such
2775s simplified meshes which basically led us
2779s to have so high VPS
2783s so big distance because with every
2785s matter you increase radius of your world
2788s you adds more chunks where for previous
2791s increasement because
2796s length of circle is increasing keys with
2799s its radius
2802s so it's actually uh 200 meters and 400
2806s meters uh it's not like two times more
2809s chunks
2811s so okay I I I can complete it it my mind
2816s but like in three or four times more
2818s chunks
2820s yeah when for 200 meters so it's like
2822s not a linear dependency
2825s yeah the wider the circle the
2827s exponential increase you have because
2830s yeah you're not increasing by a static
2832s amount you're increasing but
2834s so this uh load two
2837s which uh is just cubes as I say let us
2840s to render this chance very fast and uh
2847s load GPU very low with uh so simple
2850s meshes
2853s and yeah I actually didn't finish about
2856s troubles so I just wanted to say so for
2860s Rebels we can actually use same
2862s approaches for plants because we tried
2864s this approach with entities for plants
2866s and it uh
2868s works very good
2870s and I think chance with them are on his
2873s uh
2874s top PC configuration
2879s how good it works uh yeah and and may
2884s describe his impressions
2887s uh but yeah so for Rebels we're using
2891s similar rendering system as for plants
2894s which helps us to minimize surrendering
2897s calls
2898s this objects and actually we can
2901s Implement system which let us
2905s materialize these troubles into physics
2908s objects when they interacts and converts
2912s them to entities
2915s without game objects very lightweight
2917s like we have plans right now so it will
2920s help with big piles of rubbles to Fork
2925s really fast
2928s and it probably will fix this problem
2933s yeah we had we had a couple of
2937s a couple of interesting ones I think
2939s this one is a bit hard to answer with
2941s how far how far can the new cameras Zoom
2943s with viewing distance and everything and
2945s if the plants like the the loading
2947s impact on the cameras and I think that's
2949s something that we're we haven't really
2952s dove into too deeply because
2956s um
2957s they're relatively new and
2960s loading system is also
2962s gonna
2964s being worked on at the moment heavily
2967s um
2968s that one's probably hard to answer I
2970s think it's something that warrants a
2971s more
2973s detailed checkup but it's a very good
2975s question
2979s that's that's probably I don't know if
2981s you want to touch on that
2985s yeah I actually see a question let's
2987s chat if is there any consideration to
2990s the range and which buildings will load
2991s independent on size uh
2994s they're actually buildings uh Elsa
2998s chunks so they part of terrain so every
3001s building block
3002s just like a regular terrain block like
3006s round it also uses this block system
3010s like stockpiles as well so you will see
3014s buildings no matter of which size on
3017s same distance as you can see chunks so
3019s it basically max distance you said
3023s no
3030s another couple
3032s uh on the data transfer thing uh or on
3035s on the kind of reporting and
3037s snapshotting that with can can the
3039s community help you further by sharing
3041s more data and I believe you have the
3043s snapshot there on f11
3046s um
3047s and I believe there's also well not even
3049s can I do a quick pass on
3052s just why it's why it's really helpful
3055s information
3057s get it and how to send it
3060s the data dumps in the snapshot system
3064s uh yeah actually uh
3067s when we're working on task we usually go
3071s through steps so like first we collect
3073s data from users if it's something which
3076s happens for Ev but what is not easy to
3080s reply to use in
3082s development environment
3084s and then from analysis of the snapshots
3088s we make some theories we need to check
3091s and uh so we try to fix it and work with
3095s users together to test this fixes
3099s and uh yeah and we actually added new
3104s Improvement which led us to build
3106s development version of game for released
3110s version and also include some fixes so
3113s it will be easier to test out theories
3116s uh these custom builds
3120s but right now I think uh yeah so we we
3125s know about problem with memory leaks in
3128s 97 release and I'm working on this issue
3131s right now
3133s not right now but
3135s okay
3136s issue here
3139s it's probably issue for me so I'm
3141s obvious racing I have some ideas
3144s as usual to check and so probably we'll
3147s see some improvements to it and the next
3150s patch
3153s but yeah I think when
3156s we release uh final patch for nine seven
3162s we will soon start uh public test for
3168s version 10. and then we probably will
3174s need help from users
3176s on the immigrated worlds to collect some
3179s data about sense which suffers in
3183s performance mostly and focus on fixes as
3187s issues
3191s yeah I think
3193s I think that kind of summarizes where
3196s we're at in in terms of
3199s General optimization progression to 10
3202s but also how we how we approach
3205s optimization and the fact that it is
3207s unfortunately it is it is very hard to
3211s find
3213s big big gains for very little work in
3216s essence where optimizations is generally
3219s a very
3220s long hard use process going over a lot
3223s of data to try to eliminate points pain
3227s pain points
3228s um where week throughs can be gained
3230s at the same time we're also finally
3232s balancing you know adding more content
3235s into the game adding more systems and
3237s expanding the game
3239s um yet still kind of fighting
3242s increased increased things into the game
3244s increases requirements of the game so
3247s we're trying to battle optimizations to
3250s kind of scale that out so we're not
3251s overly increasing requirements yet we're
3254s still you know
3256s fleshing out and adding things
3259s it's a it's a constant battle that we
3261s have a couple of really good guys that
3263s are
3264s spending a lot of time and and making
3266s sure that that happens and
3269s quite significant progresses with 97 and
3271s 10.
3273s hoping that we keep doing these
3276s amazing
3278s bumps along the way forward as well
3283s and that's a couple of devs has stated
3285s optimization in general when it comes to
3287s game development is often not one thing
3290s that needs extra two things that needs
3292s to be fixed it's
3293s uh
3294s frame rate death by a million cuts
3298s where there's a lot of a lot of small
3300s things that always needs to be improved
3302s and all fixed or reworked to better use
3305s newer Technologies or
3307s come up with better creative ways to you
3310s to have the same kind of system and
3312s operability
3313s um you get gain small on small
3315s percentages in
3317s performance
3322s uh yeah
3324s I think
3325s that's probably it uh
3329s question was if we wanted to show off if
3332s I bump in on on me to
3334s be seen
3336s Casper's uh
3338s Jasper's performance on his
3340s 1660.
3342s um
3343s I think we probably did I'll do
3345s I'll possibly do like a general gameplay
3348s stream
3350s uh one of these days here we also got a
3352s couple of streams for
3354s coming up next Friday and Friday after
3356s that the settlements one is going to be
3357s a big one to kind of show off where we
3359s have more more things going on and more
3362s things being calculated to really show
3364s the the changes in Performance Off
3368s um really looking forward to that and
3371s I think we can probably call it the
3373s night here
3374s I know it's getting late for you Alex
3376s yes versus the same as well I'm still on
3379s getting into the night but
3383s different time zone for different people
3385s here in the company and there's always
3386s someone working every day every hour of
3388s the day this
3391s quite a fun experience you're always
3393s having someone to look at when you need
3395s help with something or
3396s found a critical issue that needs fixing
3399s right away or
3403s users are always super helpful
3405s and I guide us and see where where
3408s specific Hardware is having issues or
3411s you know they found something that's
3412s really exploding and cause problems and
3414s then we usually
3415s prioritize pipeline it to Alex and then
3418s he emergency fixes it magically
3420s overnight
3422s uh he is a bit of a tech wizard
3427s um so yeah thank you Casper for coming
3429s here now tonight and thank you Alex
3432s and
3433s close out and
3437s see you all next Friday thanks everyone
3441s thanks for joining

Other sites