<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Comments on: coding black magic</title>
	<atom:link href="https://mm.soldat.pl/development-log/coding-black-magic/feed" rel="self" type="application/rss+xml" />
	<link>https://mm.soldat.pl/development-log/coding-black-magic</link>
	<description>Michał Marcinkowski&#039;s: Gamedev Log &#38; Articles</description>
	<lastBuildDate>Tue, 24 Mar 2026 04:51:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>By: namuol</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-174710</link>
		<dc:creator><![CDATA[namuol]]></dc:creator>
		<pubDate>Sun, 26 Sep 2010 02:14:45 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-174710</guid>
		<description><![CDATA[Nice post.

Wouldn&#039;t it be more flexible if you allowed both a number *or* a function pointer as the third template parameter to CNetVariable? This way, you could have fine control over how/when updates to the variable get propagated over the network.]]></description>
		<content:encoded><![CDATA[<p>Nice post.</p>
<p>Wouldn&#8217;t it be more flexible if you allowed both a number *or* a function pointer as the third template parameter to CNetVariable? This way, you could have fine control over how/when updates to the variable get propagated over the network.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blacksheepboy</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-174098</link>
		<dc:creator><![CDATA[Blacksheepboy]]></dc:creator>
		<pubDate>Mon, 20 Sep 2010 18:11:13 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-174098</guid>
		<description><![CDATA[I am not really sure. I got ahead of myself with that suggestion. Too far ahead of myself.]]></description>
		<content:encoded><![CDATA[<p>I am not really sure. I got ahead of myself with that suggestion. Too far ahead of myself.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MM</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-174059</link>
		<dc:creator><![CDATA[MM]]></dc:creator>
		<pubDate>Mon, 20 Sep 2010 05:43:47 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-174059</guid>
		<description><![CDATA[Toumaz: I do it very similarly. Object factories are great. I use the code from Enginuity for my object factory. 

But I wanted to have network variables in a much simpler class, where I can use ints and floats the same way I would normally do. So I can use ++ and -= and assign/comparison signs on them. That&#039;s why I made it separate from my usual network object class.

Andrew: Ah of course, I remember Source having that. I&#039;ll check it out.

Blacksheepboy: I don&#039;t know what I would use it for, in-game c++ parser for scripts?]]></description>
		<content:encoded><![CDATA[<p>Toumaz: I do it very similarly. Object factories are great. I use the code from Enginuity for my object factory. </p>
<p>But I wanted to have network variables in a much simpler class, where I can use ints and floats the same way I would normally do. So I can use ++ and -= and assign/comparison signs on them. That&#8217;s why I made it separate from my usual network object class.</p>
<p>Andrew: Ah of course, I remember Source having that. I&#8217;ll check it out.</p>
<p>Blacksheepboy: I don&#8217;t know what I would use it for, in-game c++ parser for scripts?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rayza</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173918</link>
		<dc:creator><![CDATA[Rayza]]></dc:creator>
		<pubDate>Sun, 19 Sep 2010 08:08:52 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173918</guid>
		<description><![CDATA[I&#039;m lost, not big surprise.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m lost, not big surprise.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blacksheepboy</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173694</link>
		<dc:creator><![CDATA[Blacksheepboy]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 19:47:49 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173694</guid>
		<description><![CDATA[Apologies for the triple post...

Evidence of website existence (I swear, it was up yesterday! lol):
http://webcache.googleusercontent.com/search?q=cache:PHju54k8-4QJ:www.lrstar.org/+lrstar&amp;cd=2&amp;hl=en&amp;ct=clnk&amp;gl=us

Softpedia and sourceforge nabbed copies of his latest version:
http://www.softpedia.com/get/Programming/Other-Programming-Files/LALR-LR-Parser-Generator.shtml]]></description>
		<content:encoded><![CDATA[<p>Apologies for the triple post&#8230;</p>
<p>Evidence of website existence (I swear, it was up yesterday! lol):<br />
<a href="http://webcache.googleusercontent.com/search?q=cache:PHju54k8-4QJ:www.lrstar.org/+lrstar&#038;cd=2&#038;hl=en&#038;ct=clnk&#038;gl=us" rel="nofollow">http://webcache.googleusercontent.com/search?q=cache:PHju54k8-4QJ:www.lrstar.org/+lrstar&#038;cd=2&#038;hl=en&#038;ct=clnk&#038;gl=us</a></p>
<p>Softpedia and sourceforge nabbed copies of his latest version:<br />
<a href="http://www.softpedia.com/get/Programming/Other-Programming-Files/LALR-LR-Parser-Generator.shtml" rel="nofollow">http://www.softpedia.com/get/Programming/Other-Programming-Files/LALR-LR-Parser-Generator.shtml</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blacksheepboy</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173692</link>
		<dc:creator><![CDATA[Blacksheepboy]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 19:41:47 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173692</guid>
		<description><![CDATA[ugh, link fail. Seems like he took his webpage down. That&#039;s too bad. All of my big talk for nothing o_o]]></description>
		<content:encoded><![CDATA[<p>ugh, link fail. Seems like he took his webpage down. That&#8217;s too bad. All of my big talk for nothing o_o</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blacksheepboy</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173691</link>
		<dc:creator><![CDATA[Blacksheepboy]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 19:38:21 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173691</guid>
		<description><![CDATA[I&#039;m going to do some shameless advertising here of a product that isn&#039;t mine...

Although I lack all means, all skills to use this product, it still fascinates me. What I did do that introduced me to the project was help design the simple icons. If ever you are curious, and have the spare time (maybe during a lull in the Link Dead production), look into the product behind http//www.lrstar.org. You did mention something about compilers, and this fella behind lrstar has been working solo on this project for the last 32 years.

Once again, this stuff is way beyond me, but from what I&#039;ve seen, this guy is dedicated to making it &quot;the best in the world&quot;. You might be interested.]]></description>
		<content:encoded><![CDATA[<p>I&#8217;m going to do some shameless advertising here of a product that isn&#8217;t mine&#8230;</p>
<p>Although I lack all means, all skills to use this product, it still fascinates me. What I did do that introduced me to the project was help design the simple icons. If ever you are curious, and have the spare time (maybe during a lull in the Link Dead production), look into the product behind http//www.lrstar.org. You did mention something about compilers, and this fella behind lrstar has been working solo on this project for the last 32 years.</p>
<p>Once again, this stuff is way beyond me, but from what I&#8217;ve seen, this guy is dedicated to making it &#8220;the best in the world&#8221;. You might be interested.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173668</link>
		<dc:creator><![CDATA[Andrew]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 14:59:20 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173668</guid>
		<description><![CDATA[It&#039;s been a while since I&#039;ve looked at Source SDK; but I think they used normal int&#039;s etc and had within a constructor a &#039;NetworkVariable( , precision ,...) method that was invoked on each variable they wanted to keep updated over the network.

Maybe check out how Source SDK does it?]]></description>
		<content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve looked at Source SDK; but I think they used normal int&#8217;s etc and had within a constructor a &#8216;NetworkVariable( , precision ,&#8230;) method that was invoked on each variable they wanted to keep updated over the network.</p>
<p>Maybe check out how Source SDK does it?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Toumaz</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173667</link>
		<dc:creator><![CDATA[Toumaz]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 14:56:22 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173667</guid>
		<description><![CDATA[From the top down, all network entities in my network code are inheriting from a base class with these characteristics:

 - A SendTable member
 - A Serialize method (public access to sendtable)
 - A Deserialize method (public access to sendtable)
 - An entity ID

To begin with, I use an entity dictionary (&quot;edict&quot;) to properly identify and construct specific network classes across the network. I&#039;ve implemented this using self-registering template factories (if you want a code sample, I&#039;ll cook something up later), which in the end serve to identify classes by an 8-bit integer. (I.e., I can do something like CPlayer::GetEdict() and receive &quot;0&quot;, and do CEdict::CreateInstance(0) and receive a new CPlayer instance.) This is mainly used for construction across the network.

To uniquely identify different entities, they all have a entity/instance ID - all instances have a globally unique 16-bit integer.

Since all network entities have a sendtable class, I can define certain variables for which to provide network serialization in the appropriate constructor.

Upon serialization of the CSendTable, only variables which needs to be sent are serialized - this allows for delta updates, updates ever X seconds. It could all be specialized and customized thanks to the fact that there is a base network variable class.

A short example:
http://pastie.org/private/4mids0n7qcl9hgv2qszg]]></description>
		<content:encoded><![CDATA[<p>From the top down, all network entities in my network code are inheriting from a base class with these characteristics:</p>
<p> &#8211; A SendTable member<br />
 &#8211; A Serialize method (public access to sendtable)<br />
 &#8211; A Deserialize method (public access to sendtable)<br />
 &#8211; An entity ID</p>
<p>To begin with, I use an entity dictionary (&#8220;edict&#8221;) to properly identify and construct specific network classes across the network. I&#8217;ve implemented this using self-registering template factories (if you want a code sample, I&#8217;ll cook something up later), which in the end serve to identify classes by an 8-bit integer. (I.e., I can do something like CPlayer::GetEdict() and receive &#8220;0&#8221;, and do CEdict::CreateInstance(0) and receive a new CPlayer instance.) This is mainly used for construction across the network.</p>
<p>To uniquely identify different entities, they all have a entity/instance ID &#8211; all instances have a globally unique 16-bit integer.</p>
<p>Since all network entities have a sendtable class, I can define certain variables for which to provide network serialization in the appropriate constructor.</p>
<p>Upon serialization of the CSendTable, only variables which needs to be sent are serialized &#8211; this allows for delta updates, updates ever X seconds. It could all be specialized and customized thanks to the fact that there is a base network variable class.</p>
<p>A short example:<br />
<a href="http://pastie.org/private/4mids0n7qcl9hgv2qszg" rel="nofollow">http://pastie.org/private/4mids0n7qcl9hgv2qszg</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MM</title>
		<link>https://mm.soldat.pl/development-log/coding-black-magic/comment-page-1#comment-173659</link>
		<dc:creator><![CDATA[MM]]></dc:creator>
		<pubDate>Fri, 17 Sep 2010 13:07:30 +0000</pubDate>
		<guid isPermaLink="false">http://mm.soldat.pl/?p=1246#comment-173659</guid>
		<description><![CDATA[Damn I forgot entirely about using interfaces. That will work and is much cleaner. I&#039;ll rewrite it some day.

What about ID&#039;s how does the client know what actual variable it should update?]]></description>
		<content:encoded><![CDATA[<p>Damn I forgot entirely about using interfaces. That will work and is much cleaner. I&#8217;ll rewrite it some day.</p>
<p>What about ID&#8217;s how does the client know what actual variable it should update?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
