tag:blogger.com,1999:blog-1658845449996524234.post1289180891661111150..comments2023-12-04T04:07:36.852-08:00Comments on AI Psychology: RTS Engine UMLMark "Cypher" Kotlyarhttp://www.blogger.com/profile/06285619176953191725noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-1658845449996524234.post-23570831294603269552019-08-18T05:51:20.380-07:002019-08-18T05:51:20.380-07:00Your website is really cool and this is a great in...Your website is really cool and this is a great inspiring article. <a href="https://nuestropsicologoenmadrid.com/juana-de-arco/" rel="nofollow">Juana de arco</a><br />SEO Experthttps://www.blogger.com/profile/05405614014009487653noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-46114329859379583302019-03-04T01:04:25.078-08:002019-03-04T01:04:25.078-08:00The author has composed this blog in the most aest...The author has composed this blog in the most aesthetic way. Awe inspiring!<br /><a href="https://psytechnologies.info/" rel="nofollow">Psytechnologies</a>victoria seohttps://www.blogger.com/profile/05250549830062797897noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-47587236157952222922019-02-06T09:26:21.852-08:002019-02-06T09:26:21.852-08:00Thanks so much for the blog.Really thank you! Want...Thanks so much for the blog.Really thank you! Want more. <a href="http://motivationping.com/quotes/" rel="nofollow">stay positive quotes</a><br />Madison Porterhttps://www.blogger.com/profile/02950657995844174861noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-6936792159910834762019-01-08T07:14:43.002-08:002019-01-08T07:14:43.002-08:00I definitely enjoying every little bit of it. It i...I definitely enjoying every little bit of it. It is a great website and nice share. I want to thank you. Good job! You guys do a great blog, and have some great contents. Keep up the good work. <a href="https://nuestropsicologoenmadrid.com/sigmund-freud-psicoanalisis/" rel="nofollow">El lado mas humano de Freud</a><br />Haleshttps://www.blogger.com/profile/11549560110382429574noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-59548199591763614552018-06-24T10:55:47.497-07:002018-06-24T10:55:47.497-07:00This comment has been removed by the author.Jennihttps://www.blogger.com/profile/03397376435596394259noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-41472815188937928412017-08-16T07:10:39.682-07:002017-08-16T07:10:39.682-07:00Whatever place you are at in your studies, these p...Whatever place you are at in your studies, these popular books on psychology are sure to give you a little extra help in your quest on the road to your career.<a href="https://flipboard.com/@jamesrothe2017/dissertation-qlguh19iy" rel="nofollow">how to write a dissertation guide</a><br />zakkiduahttps://www.blogger.com/profile/13507809845643941714noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-18078216334184812032017-06-18T10:22:34.291-07:002017-06-18T10:22:34.291-07:00Benefit would be, that you can compose your behavi...Benefit would be, that you can compose your behaviour out of different components and reduce coupling.<a href="https://www.liedetectortest.uk/manchester" rel="nofollow">https://www.liedetectortest.uk</a><br />Starhttps://www.blogger.com/profile/02687188318678091112noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-15770931678046282952016-07-03T00:46:47.430-07:002016-07-03T00:46:47.430-07:00Also, regarding LockStep specifically - yeah, I...Also, regarding LockStep specifically - yeah, I'm well versed in that.Mark "Cypher" Kotlyarhttps://www.blogger.com/profile/06285619176953191725noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-28524322988770940982016-07-03T00:02:47.225-07:002016-07-03T00:02:47.225-07:00Weird, your reply went to Spam, for some reason (m...Weird, your reply went to Spam, for some reason (maybe cause of double post).<br /><br />But thanks for this, will think about these.<br />Currently, building a Vertical Slice, so maybe for brevity's sake, will use more off the shelf stuff as they are.<br /><br />Thank you very much.Mark "Cypher" Kotlyarhttps://www.blogger.com/profile/06285619176953191725noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-79410877426412940882016-07-01T15:25:13.579-07:002016-07-01T15:25:13.579-07:00Hi,
I created RTS Creator, http://store.steampow...Hi, <br /><br />I created RTS Creator, http://store.steampowered.com/app/327490/ .<br /><br />It was a 5 year long project that started from scratch using BlitzMAX as a programming language. Throughout the process I learned to write the graphic renderer with OpenGL as well as write a threaded server\client model. There were a lot of lessons learned and when I began I honestly didn't know where to even start. It went through 7 major revisions before I finally had a design that was both closed for modification and open for extension as the goal was to have every aspect of the engine fully editable.<br /><br />Since then I've become fairly proficient with Unity, and creating a real RTS Engine in Unity poses some challenges.<br /><br />1. Physics<br />Unity uses PhysX, a non-deterministic physics engine. Determinism is a pre-requisite in multiplayer RTS Games, otherwise you'll reach bandwidth bottlenecks very quickly. Without getting into the details of latency and bandwidth, imagine 100 units max vs 2000, the difference is huge.<br /><br />2. Multiplayer<br />With a deterministic physics engine, you then need a multiplayer model that implements the "lock-step" technique in order to keep games synchronized. A short explanation of how this works is, when a player issues a command, that command is sent to all other players but is not issued until a few hundred milliseconds(depending on the latency of all players) later. All players then act on the command at the same time. This avoids the need to send data synchronizing all objects in the game. This is also why in some games you see a message like "The network game is out of sync." Here's a link on an article to the lock-step model.<br />http://www.gamasutra.com/view/feature/131503/1500_archers_on_a_288_network_.php<br /><br />3. Threading<br />A well designed RTS Engine is going to maximize it's use of threading. Unity by default only uses the main thread. I suggest checking this article out before considering a design in how to incorporate something similar into Unity.<br />https://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine<br /><br />Understanding these 3 things and coming up with a good design for them will give you a solid core foundation to build off of.<br /><br />BLaBZ<br />B-LabZhttps://www.blogger.com/profile/18299697907454624382noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-31308670373292133062016-07-01T14:48:34.612-07:002016-07-01T14:48:34.612-07:00Hi,
I created RTS Creator, http://store.steampow...Hi, <br /><br />I created RTS Creator, http://store.steampowered.com/app/327490/ .<br /><br />It was a 5 year long project that started from scratch using BlitzMAX as a programming language. Throughout the process I learned to write the graphic renderer with OpenGL as well as write a threaded server\client model. There were a lot of lessons learned and when I began I honestly didn't know where to even start. It went through 7 major revisions before I finally had a design that was both closed for modification and open for extension as the goal was to have every aspect of the engine fully editable.<br /><br />Since then I've become fairly proficient with Unity, and creating a real RTS Engine in Unity poses some challenges.<br /><br />1. Physics<br />Unity uses PhysX, a non-deterministic physics engine. Determinism is a pre-requisite in multiplayer RTS Games, otherwise you'll reach bandwidth bottlenecks very quickly. Without getting into the details of latency and bandwidth, imagine 100 units max vs 2000, the difference is huge.<br /><br />2. Multiplayer<br />With a deterministic physics engine, you then need a multiplayer model that implements the "lock-step" technique in order to keep games synchronized. A short explanation of how this works is, when a player issues a command, that command is sent to all other players but is not issued until a few hundred milliseconds(depending on the latency of all players) later. All players then act on the command at the same time. This avoids the need to send data synchronizing all objects in the game. This is also why in some games you see a message like "The network game is out of sync." Here's a link on an article to the lock-step model.<br />http://www.gamasutra.com/view/feature/131503/1500_archers_on_a_288_network_.php<br /><br />3. Threading<br />A well designed RTS Engine is going to maximize it's use of threading. Unity by default only uses the main thread. I suggest checking this article out before considering a design in how to incorporate something similar into Unity.<br />https://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine<br /><br />Understanding these 3 things and coming up with a good design for them will give you a solid core foundation to build off of.<br /><br />BLaBZ<br />B-LabZhttps://www.blogger.com/profile/18299697907454624382noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-53840583257830055012016-06-27T02:46:05.575-07:002016-06-27T02:46:05.575-07:00Thanks man, this is useful.Thanks man, this is useful.Mark "Cypher" Kotlyarhttps://www.blogger.com/profile/06285619176953191725noreply@blogger.comtag:blogger.com,1999:blog-1658845449996524234.post-35746364259489521032016-06-27T02:44:11.384-07:002016-06-27T02:44:11.384-07:00Hey there,
regarding object hierarchies:
The Gan...Hey there,<br /><br />regarding object hierarchies:<br /><br />The Gang of Four says, you should favor object composition over class inheritance. So you could do some research on Entity Component Systems.<br />Here are some slides from my game programming lecturer from university:<br />http://www.slideshare.net/npruehs/game-programming-02-componentbased-entity-systems<br /><br />And here is a tutorial from Unity regarding the implementation of an event system:<br />https://unity3d.com/learn/tutorials/topics/scripting/events-creating-simple-messaging-system<br /><br />In Unity, you would not create classes, which implement the logic you need for e.g. a tank, but compose the tank of different components, such as "Health Component", "Movement Component" and such, and create systems, which operate on the Components from all game objects.<br />Benefit would be, that you can compose your behaviour out of different components and reduce coupling. Means work on one feature won't influence others.<br /><br />Hope this helpsSkøllhttps://www.blogger.com/profile/03742672999297527953noreply@blogger.com