<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5698798818674322378</id><updated>2011-11-27T20:17:26.505-05:00</updated><title type='text'>Tech Tinker</title><subtitle type='html'>A place for the latest news on what I'm up to as far as technology is concerned.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default?start-index=101&amp;max-results=100'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1294834900591707017</id><published>2011-11-02T10:47:00.004-04:00</published><updated>2011-11-02T11:07:21.630-04:00</updated><title type='text'>Enigma Ogre Client</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-563hCul3xc0/TrFb5qbO7OI/AAAAAAAAAEo/1LDnRJQ4VOQ/s1600/Enigma-LoginScreen.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://4.bp.blogspot.com/-563hCul3xc0/TrFb5qbO7OI/AAAAAAAAAEo/1LDnRJQ4VOQ/s320/Enigma-LoginScreen.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5670414452035349730" /&gt;&lt;/a&gt;&lt;br /&gt;Those of you keeping tabs on the SVN commits may have noticed I recently added a new project called EnigmaClient-Ogre to source control. It's exactly what it looks like I have finally added a new graphical client which will take the place of the old Irrlicht based client that used the old architecture. Several of the problems I was having before are addressed by this move. One issue was the lack of flexibility in the Irrlicht GUI system. I'm now using CEGUI which thus far has proved to be much more flexible and powerful than anything I could have thrown together. Also although not used yet Ogre has a paging scene manager which is what I was trying to achieve with the land blocks in Irrlicht accept it is better.&lt;br /&gt;&lt;br /&gt;Part of the reason for starting the new graphical client now is simply that the features I'm working on are getting harder and harder to implement using a console interface. At some point it will surpass the effort to just implement it graphically. Fortunately for me CEGUI uses an event driven model as well so wiring up new controls is relatively painless. On top of that it integrates flawlessly with Ogre so I don't even have to call rendering events for the GUI it just does it when I tell Ogre to render.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As of this writing the new client is on 0.2.0 on the roadmap. Users are able to connect to the server, login, and exit. Although once you login you get an error because there is no character select screen yet. The other nice thing about using a graphical client again is I have something to show so I will.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1294834900591707017?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1294834900591707017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/11/enigma-ogre-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1294834900591707017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1294834900591707017'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/11/enigma-ogre-client.html' title='Enigma Ogre Client'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-563hCul3xc0/TrFb5qbO7OI/AAAAAAAAAEo/1LDnRJQ4VOQ/s72-c/Enigma-LoginScreen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1579291090716391192</id><published>2011-10-25T20:08:00.003-04:00</published><updated>2011-10-25T20:13:10.593-04:00</updated><title type='text'>Enigma's New Home</title><content type='html'>Beyond the Enigma coding effort there is a separate but related effort to to actually make a game out of this thing. Previously this had been hosted on a site called Enigma RPG however Brandon and I need a site where we and those to work with us can post all of our game projects big and small. We also needed a name for all of these little projects to fall under. With all of that in mind the Enigma game information is now hosted on &lt;a href="http://www.solemnsoftware.com"&gt;www.solemnsoftware.com&lt;/a&gt; don't worry we didn't sell out to the man I own the domain and it is merely a place for those of us working on these neat little projects to post our work. We are still working on building the team though.&lt;br /&gt;&lt;br /&gt;That is all for tonight I have a cabling job in the morning, thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1579291090716391192?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1579291090716391192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/10/enigmas-new-home.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1579291090716391192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1579291090716391192'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/10/enigmas-new-home.html' title='Enigma&apos;s New Home'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8694899928164870145</id><published>2011-10-22T21:27:00.002-04:00</published><updated>2011-10-22T21:36:26.534-04:00</updated><title type='text'>Can You Hear Me Now?</title><content type='html'>I recently completed the addition of Guilds to Enigma and I just moved on to re-implementing the voice chat. However there were some problems with the previous version which I will have to address while I'm working on that section. All of the audio functionality has been moved to the new EnigmaAudio library. This will handle audio input and output. Right now it has the ability to play audio from any format supported by sndfile from a filename. At some point I'll probably add the ability to play by id like with maps and other resources. For now however it is working pretty well and gives me a good base for working on the new voice chat.&lt;br /&gt;&lt;br /&gt;One of the voice chat issues I previously mentioned is that before I was actually just sending raw PCM data over the network which is obviously not going to work over the internet it did however allow me to test the mechanics of OpenAL. I've been doing some reading and my intention at this point is to use speex to encode the audio and then send it like I was doing before. The speex library I believe has stuff built in for packet loss so I'll probably work reliable off for voice chat messages after I finish. That will improve the performance and allow speex's polished logic to shine.&lt;br /&gt;&lt;br /&gt;All of this will probably have to wait until next weekend unless this week is super slow in terms of work. I sure hope not though I need the money. Alright that's enough for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8694899928164870145?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8694899928164870145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/10/can-you-hear-me-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8694899928164870145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8694899928164870145'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/10/can-you-hear-me-now.html' title='Can You Hear Me Now?'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-781208094987090428</id><published>2011-10-08T18:00:00.002-04:00</published><updated>2011-10-08T18:10:20.121-04:00</updated><title type='text'>fatal error C1001: INTERNAL COMPILER ERROR</title><content type='html'>MSVC is just about working my last nerve with this one. In the past I've had strange issues here and there like the compiler ignoring things it shouldn't however this one takes the cake. Right now I don't have any lock on the id of my entities because if I add the mutex to the base object class or even a different class such as storableobject then the compiler crashes with an error code of C1001.&lt;br /&gt;&lt;br /&gt;Now for those of you who don't know basically a C1001 means the compiler got confused and gave up more or less. If you Google it you'll get allot of listings of other people having the same issue under different circumstances. The thing I'm struggling with is the fact that this is still an issue even though I have all the service packs and other updates for visual studio 2008. I've contemplated trying 2010 but I really doubt it will work any better. C++ is kinda getting ignored these days because it isn't trendy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I guess at this point this is more of a rant but here is some information I have found. One thing that can cause this issue is multiple explicit templates there is even a Microsoft KB article about it no fix though their solution is don't do it. No suggestion for using 3rd party libraries that do. Also just general complexity tends to cause this issue. I don't have much of a choice given I'm creating an MMORPG but if you can help it keeping it simple may just same you some pain and suffering. Sometimes moving stuff around will clear it up but problems that magically go away have a way of magically coming back.&lt;br /&gt;&lt;br /&gt;That is all for now thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-781208094987090428?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/781208094987090428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/10/fatal-error-c1001-internal-compiler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/781208094987090428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/781208094987090428'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/10/fatal-error-c1001-internal-compiler.html' title='fatal error C1001: INTERNAL COMPILER ERROR'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6602249640136563363</id><published>2011-10-03T20:51:00.002-04:00</published><updated>2011-10-03T21:04:55.884-04:00</updated><title type='text'>Login restored</title><content type='html'>This morning I finally added the command parser to the session manager. Although it seems like a strange place for it putting it there seems to work rather nicely thus far. For example some commands are simply chat message so I simple push a chat event unto the event queue and I'm done. I have access to the transmission manager through an interface so sending messages to the server isn't an issue either.&lt;br /&gt;&lt;br /&gt;After getting the command parser in place I tested a couple simple commands then added a brand new login command. although mostly useful for the console client I'm thinking it could also be useful for a voice based client if one were ever created. At any rate I tested it and it worked after a couple bug fixes. I'm one step closer to getting Enigma back up to the functional level it was at before I started the rewrite. I want to have community features restored before Enigma's 3rd birthday but we shall see I'm getting pretty close and I have allot of ground to cover.&lt;br /&gt;&lt;br /&gt;On a related note I will probably have to turn the polling length for enet down on the client. It seems like it is waiting too long for traffic to come in and it can't be polling and sending at the same time because both require a lock on the host object. with the server it isn't an issue right now because it is only reactive at this point but the client is sending stuff to the server all the time in theory which means it needs to be more responsive. That said having a multi-threaded client and server makes me feel warm and fuzzy inside plus no deadlocks yet. We shall see how long that lasts.&lt;br /&gt;&lt;br /&gt;Alright that's enough for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6602249640136563363?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6602249640136563363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/10/login-restored.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6602249640136563363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6602249640136563363'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/10/login-restored.html' title='Login restored'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5480737740141388847</id><published>2011-09-23T23:38:00.002-04:00</published><updated>2011-09-23T23:48:00.623-04:00</updated><title type='text'>Connection Established</title><content type='html'>It's been a long boring road to get to this point but tonight I got the new test client to connect to the server. Unfortunately that is all it is able to do at this point but that is still huge process in theory connecting the events to the new client should be relatively easy. In any case I should find out pretty quickly how fruitful all of my new architecture work has been. I'm excepting a few bugs here and there but hopefully nothing major.&lt;br /&gt;&lt;br /&gt;After I get chat and such working again I'm going to start working on getting audio back in the game. Yes ... that's right audio in a console client. The reason is that the audio component should be fed from events so really it isn't tied to out the scene is presented and developing it with the test client should make it pretty easy to drop in once I have a new graphical client.&lt;br /&gt;&lt;br /&gt;Also I'm thinking about completely recreating the RoadMap because the client is effectively below version 0.1.0. I should catch up to where it was but honestly I think this is a good chance to polish parts that were stubbed such as character creation.&lt;br /&gt;&lt;br /&gt;Thats all for now I'm getting tired thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5480737740141388847?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5480737740141388847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/09/connection-established.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5480737740141388847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5480737740141388847'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/09/connection-established.html' title='Connection Established'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1236346122191563216</id><published>2011-09-20T09:37:00.003-04:00</published><updated>2011-09-20T09:40:44.330-04:00</updated><title type='text'>It's Almost Enigma's Birthday</title><content type='html'>I was looking over my old blog posts a little this morning while adjust Enigma's project road-map and I realized that Enigma will be turning 3 years old on October 5th. Obviously it was just an idea in my head at that point and the Phoenix Kit project is much older than that it is still in interesting thing.&lt;br /&gt;&lt;br /&gt;If you want to see the original blog post a link is provided below.&lt;br /&gt;&lt;a href="http://techtinker.blogspot.com/2008/10/i-dream-of-mmorpg.html"&gt;http://techtinker.blogspot.com/2008/10/i-dream-of-mmorpg.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1236346122191563216?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1236346122191563216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/09/its-almost-enigmas-birthday.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1236346122191563216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1236346122191563216'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/09/its-almost-enigmas-birthday.html' title='It&apos;s Almost Enigma&apos;s Birthday'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8025746695483734117</id><published>2011-09-15T19:23:00.002-04:00</published><updated>2011-09-15T19:29:44.654-04:00</updated><title type='text'>Enigma Events &amp; Another Glorious Distraction</title><content type='html'>The Enigma events are now in place all of the events I have accounted for thus far anyway. All I have to do now is start in the client session manager and start adding code to generate events in the message processing functions. I hadn't finished the client session manager so it won't take too long to catch up to where I was and once I do it should be smooth sailing into the next phase which will be creating a test client that uses the new API. My test client will likely be a console application because that reduces the chances of errors in testing the session &amp; transmission code so I can make sure it is solid before rebuilding the graphical client.&lt;br /&gt;&lt;br /&gt;One potential difficulty is that on top of the fact I have been playing EQ2 again I have become interested in an operating system called Haiku which may distract me from my Enigma development effort. This isn't anything new though Enigma has been going on for years and there are occasional distractions and normally I come back new experiences that enable me to make Enigma even better. Haiku is heavily threaded so lets see what I learn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8025746695483734117?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8025746695483734117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/09/enigma-events-another-glorious.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8025746695483734117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8025746695483734117'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/09/enigma-events-another-glorious.html' title='Enigma Events &amp; Another Glorious Distraction'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5484984279465314379</id><published>2011-08-23T18:59:00.002-04:00</published><updated>2011-08-23T19:19:46.484-04:00</updated><title type='text'>Enigma Client Events</title><content type='html'>Work on the client portion of the session library has been slow mostly due to my crazy work schedule. It is hard to dig into code when you never know when your going to get called to do a service call. I finished a recent programming job for one of my actual clients and sub-contracted work has slowed down as of late so I made some decent progress today. For the record I would rather business pick back up though because slow weeks are tight budget weeks.&lt;br /&gt;&lt;br /&gt;Anyway down to business although the current approach works just fine on the server side of things (mostly because it is basically single threaded still) the client side will need something a little different. The problem is that although the session manager will keep track of the state there are certain things that have to happen when some events happen. For example when the map is changed the session library just has to change the map Id in the user object and reset the map object(server sends new data). The problem is that the client will need to load the new map. The question becomes how will the client know to load the new map. I could keep an internal state and compare it on each frame but that is both expensive and inefficient because state will be stored in multiple locations. The obvious solution at least as far as I can tell is to go with an event driven architecture. That means having callback functions in game objects and have an event manager call them. At which point the objects can access game state and adjust scene-graph state to match.&lt;br /&gt;&lt;br /&gt;Now that idea should work, however there is one notable catch. To prevent cross threading issues I will need to make sure the event queue is thread-safe and that the events are actually called from the graphics engine's thread. The reason is that some graphics engines have the requirement that some functions have to be called from the same thread that initialized the engine. So to make this work what I plan to do is call a "DoEvents" method from the main render loop which should work nicely. That model also still allow the rendering to be decoupled from the network latency because the network thread can be polling for updates while the game is rendering and just update the scene on the next pass.&lt;br /&gt;&lt;br /&gt;If memory serves there is a inter-process queue in the boost libraries. I may use that or create methods that lock a mutex and modify the queue. I will also need to create event classes as well as event listener classes. If I do this correctly tying Enigma into a graphics engine should be a piece of cake by comparison at least.&lt;br /&gt;&lt;br /&gt;Alright that's all thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5484984279465314379?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5484984279465314379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/08/enigma-client-events.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5484984279465314379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5484984279465314379'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/08/enigma-client-events.html' title='Enigma Client Events'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1583180272068330765</id><published>2011-07-13T18:03:00.002-04:00</published><updated>2011-07-13T18:07:16.217-04:00</updated><title type='text'>Small Business</title><content type='html'>As of late things have changed dramatically with my work situation. By that I mean my place of employment was closed due to the death of the owner. I'm working on an as needed basis for the owners brother which is better than nothing but could definitely use more hours. At any rate I decided to start my own business to pick up some business on the side to supplement my income. The services I intend to provide are custom computer programming, cloud services, and online backup (through a partner). More services are like to be added later.&lt;br /&gt;&lt;br /&gt;At anyrate my site for this new business is &lt;a href="http://www.schaefersolutions.com"&gt;www.schaefersolutions.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks for reading folks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1583180272068330765?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1583180272068330765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/07/small-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1583180272068330765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1583180272068330765'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/07/small-business.html' title='Small Business'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3533719162820739611</id><published>2011-06-17T08:51:00.002-04:00</published><updated>2011-06-17T09:06:18.354-04:00</updated><title type='text'>Enigma Server Core - Update</title><content type='html'>I have finally created a new server for Enigma which uses the transmission and session layers I wrote about previously. The functionality is largely based on the previous server this is more of an architectural change than a functionality change, however even so I have run into a few bugs here and there. The core server is almost on par with the old server in terms of functionality authentication with a database and configuration from xml files are the only two parts missing that I'm aware of at this point. Both of those will likely be in their own libraries. The reason is that the I'm using the xml parsing functionality of Irrlicht &amp; one of my goals was to decouple all but the client from Irrlicht or any graphics engine for that matter. This will be possible however because irrxml is also a separate library. That means I can use my existing configuration code more or less and just link &amp; include irrxml without including the whole Irrlicht engine.&lt;br /&gt;&lt;br /&gt;As for the database that should have been it's own library from the start and honestly I normally do that on all of my medium and large projects. However due to the fact it was simply a backing store and the server is maintaining state I underestimated the complexity that would be needed. As a result this will have to be decoupled just like the session and transmission logic was. However this is good because with the new architecture the only functionality that really needs called from the server logic is initial loading and authentication. Persisting data back to the database could be done by giving the data access layer a const reference to the realm object and potentially an update queue to reduce wasted database calls. Might also need some object locking so the entities don't get corrupt data persisted.&lt;br /&gt;&lt;br /&gt;At any rate I'm working on one blocking bug that remains in the new server core which is that multiple clients cause the server to crash. I haven't pinned down exactly where it is coming from and as usual the stack trace basically gives me the try catch block in main.cpp and a bunch of memory addresses ... thanks visual studio that's so helpful. Darn c++ hardware exceptions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3533719162820739611?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3533719162820739611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/06/enigma-server-core-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3533719162820739611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3533719162820739611'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/06/enigma-server-core-update.html' title='Enigma Server Core - Update'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2215685351795348952</id><published>2011-05-18T21:34:00.004-04:00</published><updated>2011-05-18T21:37:10.333-04:00</updated><title type='text'>Nolson Tools</title><content type='html'>Quick shout out, I setup &lt;a href="http://www.nolsontools.com"&gt;http://www.nolsontools.com&lt;/a&gt; for my friend Nick. He will be posting information related to trouble shooting computers and such. I'll likely continue to help him maintain it for as long as he needs or until I get sick of it. At any rate it will be neat to see how it turns out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2215685351795348952?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2215685351795348952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/05/nolson-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2215685351795348952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2215685351795348952'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/05/nolson-tools.html' title='Nolson Tools'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4722664822595988944</id><published>2011-05-14T20:23:00.002-04:00</published><updated>2011-05-14T20:39:29.339-04:00</updated><title type='text'>Enigma Update</title><content type='html'>Some time ago I posted about my intentions of creating a transmission and session library for enigma. Well I have completed the transmission library albeit untested and have started work on the session library. First of all this is more work than I bargained for initially. Although I new this was a huge step I hadn't touched some most of this code in so long I forgot how long some of the processes were. It also makes me realize how much work I actually put into this thing so far. Although the meager feature list doesn't look like much it is actually pretty rough making all of that happen.&lt;br /&gt;&lt;br /&gt;While I was overhauling things I realized that I hadn't considered the database in my new design plans. That is a pretty big oversight however I don't think it will force me to alter my plans very much. My intention is to make a database abstraction layer like I should have from the start and then have an instance of it owned by the session manager instance. Of course given that design change other portions of the system could also make database calls by getting their own instance of the database abstraction layer which should all for multi-threaded database access where needed. However the database is basically just a backing store so persisting data to the database and fetching it from the database makes sense for the session library to call the database layer to do that. The only part of that I haven't worked out is how the two will interface because if I use the session variable types I will have a circular build dependency ... stupid c++. What I may end up doing is simply creating functions that take in the individual variables which would completely decouple the two and I could pass them by reference for the population functions.&lt;br /&gt;&lt;br /&gt;I have also realized how poor my in code documentation is right now. I have comments like "processes a client message related to chat" on some of the server session management logic. Although correct such comments are not very helpful and if I get more team members that isn't going to cut it. I suppose I'll have to bite the bullet and go through all of that functionality and add meaningful comments.&lt;br /&gt;&lt;br /&gt;One final though I added the start of an SRS document to subversion to cover the requirements of the project. I would like to obtain more team members in the near future and getting all of my ducks in a row in terms of documentation is necessary to do that effectively. I've seen what happens when new people start working on undocumented projects ... it's not pretty folks.&lt;br /&gt;&lt;br /&gt;Alright that is enough for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4722664822595988944?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4722664822595988944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/05/enigma-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4722664822595988944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4722664822595988944'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/05/enigma-update.html' title='Enigma Update'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3501610063049939197</id><published>2011-04-02T22:22:00.002-04:00</published><updated>2011-04-02T22:41:39.017-04:00</updated><title type='text'>EnigmaTransmission</title><content type='html'>I posted previously about the need for a session management library for Enigma. I now realize that there is a need for a transmission library as well that can be called by the session library and the reverse is also possible in cases where the server or client needs to be notified. The reason for this is that currently all the transmission logic is inside of the client &amp; server binaries. This is a problem because I intend to make a console client for testing purposes. Also I'm seeing the importance of modularity more and more. The nice thing about this is that this will allow anyone wanting to reuse some of this code to break out the pieces they like.&lt;br /&gt;&lt;br /&gt;My fear at this point is over engineering this thing to the point where I'm working against myself. However the current system isn't working and once again it is growing to the point where my bad design decisions are coming back to haunt me. I think my initial approach would have been fine for smaller projects but it just gets crazy with all those callbacks and interdependencies.&lt;br /&gt;&lt;br /&gt;As for the interaction between the transmission and session libraries my plan is to completely encapsulate enet inside of the transmission library such that no library outside of it needs to link the enet library. Next I plan to only pass type safe message objects to the session manager from the transmission manager. At that point the session manager doesn't need to know about peers or channels or anything of that nature so I will be moving the channel header from common to transmission or at least copying it. I will likely pass a peerId to the session manager so it can inform the transmission layer knows who to send packets to. However whether or not the user is logged in should be stored in the session manager. That way the transmission layer can be relatively stateless aside from keeping the peerId and the associated peer object. As well as the enet objects needed for transmission.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another benefit of this design is that because the objects lack internal functionality and simply maintain state it shouldn't be too hard to make them thread safe with a few locks here and there. This will allow my to thread the server and client without too much issue. Most graphics engines are single threaded but all that thread needs to do is sync the scene graph to my objects and render them. All other calculations, updates, etc can be done in different threads. This would allow things like AI &amp; physics to operate on the state machine independently of the rendering loop.&lt;br /&gt;&lt;br /&gt;Alright thats enough for now I have to get some sleep, thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3501610063049939197?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3501610063049939197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/04/enigmatransmission.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3501610063049939197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3501610063049939197'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/04/enigmatransmission.html' title='EnigmaTransmission'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8865242880318685816</id><published>2011-03-27T13:21:00.002-04:00</published><updated>2011-03-27T13:53:51.204-04:00</updated><title type='text'>EnigmaSession</title><content type='html'>I've been super busy with school as of late and as a result progress on Enigma has slowed down considerably. Also there is a free version of Everquest 2 which I have recently sunk some time into unfortunately. However Enigma is still going it is just another slow spot in development, which happens with for fun projects. There is no money in it so I still need to work and I'm also currently working on a BS degree in project management so writing papers and studying for exams also takes up time.&lt;br /&gt;&lt;br /&gt;All of that aside the primary reason for this post is to discuss the creation of a session library for Enigma. Thus far breaking different parts of the game engine up into libraries has helped build times and overall management of the code base. In addition shuffling things around tends to expose weaknesses in the design and hidden bugs.&lt;br /&gt;&lt;br /&gt;So what I plan to do is move the client &amp; server logic into a library that will contain the session management information and will be dependent on the protocol library and the common library. I'm going to try to remove any dependencies on Irrlicht from these because it has become apparent that the current implementation makes it difficult to narrow down bugs resulting from graphics related code or networking related code. So in addition to this new session library a console style client will also be created for the purpose of diagnosing session level bugs. This will also make it possible to use other graphics engines if needed. &lt;br /&gt;&lt;br /&gt;All of the graphical coding to date is highly dependent on Irrlicht so as of now there are no plans to use anything else. However there have been several cases where using Irrlicht has been very difficult to diagnose because of the way the engine works and I have run into several cases where the engine has not functioned as expected or even consistently. Some of these issues have been previously resolved in newer releases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As with other resent overhauls this will probably introduce a few new bugs and set the project back however I think the existing design is flawed for the previously mentioned reasons. Although it maybe possible to complete the project with the existing design I do not believe it would be in the projects best interest. I'm trying to make a next generation engine not something that is just cobbled together. However this is difficult given the fact that I'm learning as I go. The good news is I don't have to worry about deadlines like in for profit game development efforts so I have time to fix my mistakes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8865242880318685816?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8865242880318685816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/03/enigmasession.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8865242880318685816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8865242880318685816'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/03/enigmasession.html' title='EnigmaSession'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6293474105430455461</id><published>2011-01-01T14:17:00.002-05:00</published><updated>2011-01-01T14:36:13.368-05:00</updated><title type='text'>Memory Management for the New Year</title><content type='html'>First of all happy new year everyone. I have been working a great deal resolving design issues in Enigma. Most of which caused by me creating hacks to detect issues without a debugger. However there are a few that are just run of the mill oversights. While reviewing these I have been thinking allot about memory management.&lt;br /&gt;&lt;br /&gt;Here is what I have come up with so far regarding what seems to work best. For starters using reference variables instead of pointers when possible saves you allot of risk regarding memory leaks. Although in some cases the best solution is a point in which case role with it don't try to hack around it. Also if you have to store virtual base classes in a collection use boost shared pointer. No cleanup and it will get the job done with few hassles.&lt;br /&gt;&lt;br /&gt;So far using the stack for variables that last for the life of the application works pretty well. I then use the heap for temporary variables. I think DotNet has a similar memory management strategy and I can see the advantages to it in this project. For one I don't have to run cleanup code in my manager classes destructor code other than cleaning up remaining temp variables. If my temporary variables are shared pointers in a collection for example then they will get cleaned up all on there own.&lt;br /&gt;&lt;br /&gt;I still would like to have some sort of garbage collection but I have yet to find a way to do it that is both portable and easy to add to the project. If I have to manually run make scripts on windows it just isn't worth it. However given the memory management strategies I have mentioned here the main places where garbage collection would be handy is the message objects which currently have their own special memory management which has thus far worked pretty well.&lt;br /&gt;&lt;br /&gt;All in all things are going pretty well except for a few snags with 3rd party code and me going dll crazy. Alright that's all for now thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6293474105430455461?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6293474105430455461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2011/01/memory-management-for-new-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6293474105430455461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6293474105430455461'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2011/01/memory-management-for-new-year.html' title='Memory Management for the New Year'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1905186787406367848</id><published>2010-12-27T08:48:00.003-05:00</published><updated>2010-12-27T09:17:42.344-05:00</updated><title type='text'>Hardware Exceptions &amp; Such</title><content type='html'>Those of you that have looked at Enigma's code have probably noticed that I have been generating exceptions that can be caught from hardware and other low level exceptions. However I have recently decided that when such an exception occurs there isn't much I can do about it besides crash. The justification for this is access violations for example normally represent some sort of memory corruption. It is extremely difficult to recover from something like that at runtime. With that in mind I created a hardware exception class which is what I now throw in case of such exceptions. I went through all of my try catch blocks and made the majority of them re-throw exceptions of that type.&lt;br /&gt;&lt;br /&gt;So now there are cases where enigma will crash completely however when I'm running it through VS I can now get a stack track which gives me clues to actually resolving the issue instead of just managing it. This wasn't possible before I was using VS because I couldn't get the debugging to work with msvc. However one of the exceptions that cause a crash right now seems to come from within Irrlicht so I will need to get debugging symbols for it to figure out what the issue is currently.&lt;br /&gt;&lt;br /&gt;As for the built in browser it is horribly slow but it seems to be working. With no way to lock and copy only an area of a buffer I don't have a good way to leverage the fact that the new off-screen renderer only updates regions that have changed. Also my currently implementation has more steps than I would like. There is a discussion on the Irrlicht forums about adding the functionality I need but I don't know when or if it will actually happen.&lt;br /&gt;&lt;br /&gt;The seamless terrain is still not working either. I have made progress in terms of the collision detection but for reasons yet unknown the function I created to calculate if the player is inside the bounds of one of the land blocks quit working. Note I have not changed the code inside of the function since it worked and it doesn't call any helper functions other than those inside of Irrlicht. I even tried an older version of Irrlicht thinking that the last update I did may have broken it but that produced the same result. &lt;br /&gt;&lt;br /&gt;My best guess at this point is that there is a flaw in the logic of either my function or the Irrlicht methods a call. For example I'm getting the absolute position of the nodes for my calculations if that doesn't work as expected then that would break my function. Another possibility is that I'm misunderstanding one or more of the functions that I'm calling although this seems unlikely unless the documentation is just plain misleading. All of the landblocks are in a container which is the only thing I can thing of that I haven't tried removing to resolve the issue. If that does then getAbsolutePosition does not work as expected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So as you can tell progress has been slow, which is probably because a friend of mine talked me into playing WoW for a month. Alright that's enough for now thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1905186787406367848?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1905186787406367848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/12/hardware-exceptions-such.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1905186787406367848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1905186787406367848'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/12/hardware-exceptions-such.html' title='Hardware Exceptions &amp; Such'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6665193859964546525</id><published>2010-11-27T16:17:00.003-05:00</published><updated>2010-12-27T08:48:18.521-05:00</updated><title type='text'>Post Holiday Update</title><content type='html'>The port to Visual studio went pretty well. I have yet to go through and setup the release build though so debug is all I have. Which at this point is fine because everything is broken pretty good so I won't be posting an actually update anytime soon. As an example the in game browser isn't getting events for some reason and I'm in the process of overhauling the terrain/map code (still). And for some reason the client crashes when I close a window containing a browser or just shutdown.&lt;br /&gt;&lt;br /&gt;But that is how the cookie crumbles bugs are just part of the process when your building something that has irreducible complexity because you have to create stub code to fill in until that section is implemented IMHO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6665193859964546525?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6665193859964546525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/11/post-holiday-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6665193859964546525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6665193859964546525'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/11/post-holiday-update.html' title='Post Holiday Update'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-501939710396611904</id><published>2010-11-23T21:47:00.002-05:00</published><updated>2010-11-23T22:11:41.027-05:00</updated><title type='text'>Visual Studio</title><content type='html'>Thus far in enigma I have been using code::blocks as my IDE and while it is the best cross-platform IDE I have used it still doesn't work as well as Visual Studio. So I have gone over to the dark side and started porting the project files to Visual Studio. Several other programs like code::blocks will import Visual Studio files so at that point there is very little reason for me to worry about using a cross-platform tool.&lt;br /&gt;&lt;br /&gt;I'm already starting to see warnings that may actually be bugs in my code so this could end up improving the code base over all. Now those of you worried about Linux &amp; Mac support. Don't worry code::blocks doesn't work so great on Mac so I'm planning on using xcode which I believe can import visual studio projects. code::blocks will likely still be used on Linux unless I find something better that imports visual studio files.&lt;br /&gt;&lt;br /&gt;In addition I'm also switching over to ".dll" files for EnigmaCommon, EnigmaVideo, EnigmaVideo, and EnigmaBrowser. The build times are just getting out of hand. This way if I make a change to EnigmaCommon but it doesn't effect the binary interface I can simply build EnimgaCommon and drop the ".dll" in place and my my changes will take effect. This will also speed up development time quite allot as well as allow per binary optimizations. For example previously I've had some optimizations break the binaries but I'm free to try it on each one without effecting the whole directly. Of course if I break EnimgaCommon then the whole thing will be broken but this just gives me more options.&lt;br /&gt;&lt;br /&gt;So basically I was working on LandBlocks got stuck was frustrated with my debugging issues related to code::blocks and started switching to Visual Studio. Alright that is enough for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-501939710396611904?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/501939710396611904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/11/visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/501939710396611904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/501939710396611904'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/11/visual-studio.html' title='Visual Studio'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2043566032206934612</id><published>2010-10-11T22:36:00.003-04:00</published><updated>2010-10-11T22:47:01.813-04:00</updated><title type='text'>Seamless Enigma</title><content type='html'>So, I decided tonight while finishing a college paper that Enigma should be seamless as in the main part of the world should be able to be traversed without a traditional map change. So with that in mind as a goal I have started working on a new terrain system that loads up new terrain in front of you and unloads old terrain behind you. It will also move you and the terrain back to the center so irrlicht doesn't have to deal with super high choords and I don't have to do tricky stuff with the Skybox.&lt;br /&gt;&lt;br /&gt;Speaking of which I plan to replace the skybox with a skydome I figure I'm doing this stuff in code anyway and the main reason I was using a box was because the old irredit didn't have a dome option.&lt;br /&gt;&lt;br /&gt;Anyway I started working on it but my first test didn't go so well because I get an access error from someone in the code. Makes me miss dotnet a little where every exception has lots of information regarding called methods and the exception type. Not in standard c++ though, sigh well anyway this thing could be neat. I decided my short term goal is getting this thing ready for socializing like a virtual world. The Items, combat, and all that can wait until I get a hand full of users to help me test and try out some of the systems I already have implemented.&lt;br /&gt;&lt;br /&gt;My authentication and registration still need some help but seeing how I can't host asp.net on source forge and I can't host websites at all on my connection I can't host the registration stuff publicly anyway.&lt;br /&gt;&lt;br /&gt;But anyway I need some spit and polish on the interface also but that will be difficult because the only person I know willing to help with that expects to draw images and have them magically be the UI. The concept of controls doesn't seem to register. I guess I could make custom controls but that is so much work for so little benefit. Oh well I need UI stuff for different game functions though for sure because command line stuff works and all but some people don't like that. Plus if they can't see it on the UI then they will assume it does exist.&lt;br /&gt;&lt;br /&gt;Well this will have to wait I still have another paper to write before Wednesday so I'll go that first thing tomorrow because it's late now. Alright that is all for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2043566032206934612?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2043566032206934612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/10/seamless-enigma.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2043566032206934612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2043566032206934612'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/10/seamless-enigma.html' title='Seamless Enigma'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1368716245553088670</id><published>2010-09-20T10:12:00.003-04:00</published><updated>2010-09-20T10:21:47.618-04:00</updated><title type='text'>New Job</title><content type='html'>I neglected to post but I have found employment at a local computer shop. In addition I have started another quarter in college. I'm mainly posting about my job though as that is the main thing that will be effecting my project progress. Although not dead the project will likely see a lengthy dry spell until my schedule gets settled. On the up side I'm working on their website so my programming skills shouldn't get dull in the process.&lt;br /&gt;&lt;br /&gt;I primarily do service calls though. It's good honest work though they provide a ton of technical services related to networking/cabling and PC repair. So between service calls and website related tasks I'm getting to use both my hardware/networking background and my programming background. I think it's neat.&lt;br /&gt;&lt;br /&gt;I'm pretty glad to be working on the website though it's currently pretty sad. Its more like a picture of a website. That picture looks kinda neat but just won't do for a company website. Oh well new stuff on the way those of you waiting for the next enigma release please be patient a while longer.&lt;br /&gt;&lt;br /&gt;If you want to check out my employers website such as it is check out the url below.&lt;br /&gt;&lt;a href="http://expresspc.biz"&gt;http://expresspc.biz&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1368716245553088670?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1368716245553088670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/09/new-job.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1368716245553088670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1368716245553088670'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/09/new-job.html' title='New Job'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7355647063955455173</id><published>2010-08-21T23:45:00.003-04:00</published><updated>2010-08-21T23:53:42.146-04:00</updated><title type='text'>EnigmaWeb</title><content type='html'>I added forms authentication to the EnigmaWeb website tonight. I finished my procurement plan for school, did one quest on DDO and decided to be somewhat productive. Yes schoolwork doesn't count. ;-)&lt;br /&gt;&lt;br /&gt;So at any rate I'm quickly realizing that the EnigmaWeb project although completely necessary is almost like another project itself. Players expect more and more from these types of sites like being able to check pvp or guild ranks. Some games even allow the players to check other players gear and stats from the web interface. I'm not too sure I like that last idea though because anyone who does well will just get copied. But anyway point just being that it has a whole work load of it's own and I'm debating with myself if I'm going to add that type of stuff for version one. I need at least basic account management stuff which is totally cool but I need to decide where that cut off is soon. I will probably end up just adding stuff to EnimgaWeb as I need it for testing purposes on the actual client and server.&lt;br /&gt;&lt;br /&gt;One closing thought there is a good reason why so many companies have epic fail attempts at MMORPGs one is because anyone with sense realizes sooner or later how big the task is and loses hope. Lucky for all of you I'm stubborn to a fault. Alright that's all for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7355647063955455173?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7355647063955455173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/08/enigmaweb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7355647063955455173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7355647063955455173'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/08/enigmaweb.html' title='EnigmaWeb'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-458454491797141572</id><published>2010-08-21T03:02:00.002-04:00</published><updated>2010-08-21T03:13:23.432-04:00</updated><title type='text'>Adventures in Hashing</title><content type='html'>So first the good news. I have the authentication working with a test user I added via the web interface that I have created. I'm pretty happy about that but the bad news is that I'm gonna have to break it again because my custom hash algorithm isn't up to snuff. As it stands now someone could in theory figure out what the original password was just is obviously not gonna fly. As much as I rant about people not paying any attention to security I can't let something so glaring slide. Not that Enigma is secure or anything considering all the pieces that are missing for validation and such but you know what I mean I don't want to engineer these issues in.&lt;br /&gt;&lt;br /&gt;So anyway here is what lead me to what we have now. First I was trying SHA1 using openssl I have been using that since I first added the login code even though the server just excepted any user with any password. My first problem happened when I couldn't find a way to create a SHA1 hash with the dotnet wrapper for openssl. I'm sure there is a way it just isn't as intuitive as I thought it should be. At which point I decided to just use the Microsoft SHA stuff I mean it's there why not. But I was running into an issue where the hashes didn't match not even close. I'm not sure why because in theory if it is the same algorithm the result should be the same it's not like SHA1 asks for seed values or anything.&lt;br /&gt;&lt;br /&gt;So after that didn't work I began working on the custom hash function with one thing in mind that being having the output be able to be handled as a string. What I mean by that is I didn't want any strange non-printable characters and I wanted the thing to be null terminated so strlen and similar functions would function correctly. Hence I implemented my hash function.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now for a quick run down one of the numbers that is used to mod each character is the length the problem is that the hash has the same length is the original string thus someone trying to obtain the original has that piece of information and the other two are constants. So basically I need something better for my hash function but I still want it to output safe strings so I don't run into some of the same issues I had before. At the same time I'm tempted to put this off but I know I shouldn't.&lt;br /&gt;&lt;br /&gt;Alright this is enough for tonight I have college presentations next week and I don't have my presentations completed yet so I need to get on that. Good night and thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-458454491797141572?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/458454491797141572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/08/adventures-in-hashing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/458454491797141572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/458454491797141572'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/08/adventures-in-hashing.html' title='Adventures in Hashing'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1134472051334535663</id><published>2010-08-19T02:03:00.002-04:00</published><updated>2010-08-19T02:21:35.438-04:00</updated><title type='text'>Berkelium</title><content type='html'>Relatively recently a reader contacted me and told me about Berkelium which is a off screen render similar to the OffScreenGecko library that I'm using now in Enigma. I bookmarked it but I hadn't gotten around to playing around with it. However tonight I decided to try a test implementation. I used the binaries and headers for windows available on the Berkelium site. I got an initial implementation created but I wasn't able to get it to link correctly. A few but not all classes and static functions resulted in unresolvable symbol errors. So I rolled back to the old renderer but left all the code in place. I will revisit that at some future date as it isn't really needed for this release anyway I just wanted to give it a go and see if I could get something to work.&lt;br /&gt;&lt;br /&gt;For the purpose of testing the browser after the roll back I commented out the code that was calling into the new authentication logic which is the way I committed it to SVN. It was just as well because I'm getting a access error from somewhere. I don't remember that happening the last time I was playing with the authentication code so I may have a regression on my hands. Although to be fair the authentication code never really worked to begin with it just kinda worked and on top of that I did a rebuild of everything so it is possible that the build target just wasn't up to date and the issue was introduced much earlier. Although that seems unlikely given the fact that I had added debug output messages in several pieces of code and they were indeed appearing in the console. But at any rate although in terms of structure I'm close to release the fact that none of it actually works is kind of a problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This quarter at college is almost finished so I may have more time to work on Enigma the trick will be working on it instead of playing DDO or messing around facebook. The good news is I think I'm pretty burnt out of DDO because of all the bad groups I have been in so I should end up focusing more on Enigma. As a matter of fact I plan on working on it tomorrow unless end up doing something with some friends or something.&lt;br /&gt;&lt;br /&gt;Alright that's enough for now special thanks to the user that told me about berkelium the browser thing not the metal. :-) I look forward to hearing from more of you. Thanks for reading now it's time for sleep.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://berkelium.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1134472051334535663?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1134472051334535663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/08/berkelium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1134472051334535663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1134472051334535663'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/08/berkelium.html' title='Berkelium'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8370706945250229033</id><published>2010-07-31T02:39:00.002-04:00</published><updated>2010-07-31T02:55:13.695-04:00</updated><title type='text'>unsuccessful programmer is unsuccessful</title><content type='html'>Quick update, I'm still working on the authentication. I have most of the ground work in place however I'm currently have a character encoding issue. Apparently somewhere the hashed password in the database is getting mutated into something different. Basically it doesn't match the hash fresh from the user so the authentication fails. It doesn't throw exceptions all over anymore so that is pretty neat. But that's what happens when you work so long on a piece of code before to get far enough to actually be able to test something. *Lol irreducible complexity* At any rate the generic data access components are tested now and they are working great. I think the nature of the issue is that the editor I'm using for SQLite is using a different character encoding than I'm using from code. Thus a hash password I enter via the editor doesn't work at all. So in the end I may end up adding the ability to register users just so I can test logging in. &lt;br /&gt;&lt;br /&gt;Another thing that is delaying all the releases is school work. Not that I'm over loaded or anything but after I finish working on it I feel rather unambitious. As such releases are moving slow to begin with even without development troubles. Although to be honest I don't think this is such a thing as development without troubles. That would be like writing without typos. But anyway same old same old with a touch of new code.&lt;br /&gt;&lt;br /&gt;The short version of the story is that I hit a few bumps in the road so I'm not ready for a release yet. Alright thats all for tonight I stayed up too late again. Thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8370706945250229033?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8370706945250229033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/07/unsuccessful-programmer-is-unsuccessful.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8370706945250229033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8370706945250229033'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/07/unsuccessful-programmer-is-unsuccessful.html' title='unsuccessful programmer is unsuccessful'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2320710783658273081</id><published>2010-07-26T14:39:00.011-04:00</published><updated>2010-07-26T14:58:26.307-04:00</updated><title type='text'>One function to rule them all</title><content type='html'>I finish the initial implementation of the function that will process database command objects for SQLite databases.It is large somewhat complex and untested so I thought I would share.&lt;br /&gt;&lt;pre style="overflow: scroll;white-space:nowrap;width: 700px;"&gt;&lt;br /&gt;     DatabaseResultSet Execute(DatabaseCommand&amp;amp; databaseCommand)&lt;br /&gt;     {&lt;br /&gt;         DatabaseResultSet databaseResultSet;&lt;br /&gt;&lt;br /&gt;         const char* tail=NULL;&lt;br /&gt;         sqlite3_stmt* statement=NULL;&lt;br /&gt;         size_t row=0;&lt;br /&gt;&lt;br /&gt;         rc = sqlite3_prepare_v2(&lt;br /&gt;             mDatabase,                          /* Database handle */&lt;br /&gt;             databaseCommand.GetQuery().c_str(), /* SQL statement, UTF-8 encoded */&lt;br /&gt;             databaseCommand.GetQuery().length(),/* Maximum length of zSql in bytes. */&lt;br /&gt;             &amp;amp;statement,                         /* OUT: Statement handle */&lt;br /&gt;             &amp;amp;tail                               /* OUT: Pointer to unused portion of zSql */&lt;br /&gt;             );&lt;br /&gt;         if(rc!=SQLITE_OK)&lt;br /&gt;         {&lt;br /&gt;             return databaseResultSet; //no need to call finalize because prepare failed.&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         BOOST_FOREACH(DatabaseParameter parameter, databaseCommand.GetDatabaseParameters())&lt;br /&gt;         {&lt;br /&gt;             switch(parameter.GetType())&lt;br /&gt;             {&lt;br /&gt;                 case DATABASE_DATATYPE_NULL:&lt;br /&gt;                     break;&lt;br /&gt;                 case DATABASE_DATATYPE_INTEGER:&lt;br /&gt;                         sqlite3_bind_int(statement,sqlite3_bind_parameter_index(statement,parameter.GetName().c_str()),parameter.GetValue&lt;int&gt;());&lt;br /&gt;                     break;&lt;br /&gt;                 case DATABASE_DATATYPE_TEXT:&lt;br /&gt;                         sqlite3_bind_text(statement,sqlite3_bind_parameter_index(statement,parameter.GetName().c_str()),parameter.GetValue&lt;std::string&gt;().c_str(),parameter.GetLength(),SQLITE_STATIC);&lt;br /&gt;                     break;&lt;br /&gt;                 case DATABASE_DATATYPE_DOUBLE:&lt;br /&gt;                         sqlite3_bind_double(statement,sqlite3_bind_parameter_index(statement,parameter.GetName().c_str()),parameter.GetValue&lt;double&gt;());&lt;br /&gt;                     break;&lt;br /&gt;                 case DATABASE_DATATYPE_BLOB:&lt;br /&gt;                     break;&lt;br /&gt;                 default:&lt;br /&gt;                     break;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         do&lt;br /&gt;         {&lt;br /&gt;             rc = sqlite3_step(statement);&lt;br /&gt;         }&lt;br /&gt;         while(rc==SQLITE_BUSY); //make sure this actually happens.&lt;br /&gt;&lt;br /&gt;         if(rc!=SQLITE_ROW &amp;amp;&amp;amp; rc!=SQLITE_DONE)&lt;br /&gt;         {&lt;br /&gt;             goto JOBDONE;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         for(int i=0;i&lt;sqlite3_column_count(statement);i++) rc="=SQLITE_ROW)" int="" i="0;i&lt;sqlite3_column_count(statement);i++)" setvalue=""&gt;&lt;const unsigned=""&gt;(row,i,sqlite3_column_text(statement,i));&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;             do&lt;br /&gt;             {&lt;br /&gt;                 rc = sqlite3_step(statement);&lt;br /&gt;             }&lt;br /&gt;             while(rc==SQLITE_BUSY); //make sure this actually happens.&lt;br /&gt;             row++;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         JOBDONE:&lt;br /&gt;         rc = sqlite3_finalize(statement);&lt;br /&gt;&lt;br /&gt;         return databaseResultSet;&lt;br /&gt;     }&lt;br /&gt;&lt;/const&gt;&lt;/sqlite3_column_count(statement);i++)&gt;&lt;/double&gt;&lt;/std::string&gt;&lt;/int&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2320710783658273081?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2320710783658273081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/07/one-function-to-rule-them-all.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2320710783658273081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2320710783658273081'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/07/one-function-to-rule-them-all.html' title='One function to rule them all'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-180576944440469066</id><published>2010-07-23T02:19:00.003-04:00</published><updated>2010-07-26T01:15:23.590-04:00</updated><title type='text'>If it builds ship it.</title><content type='html'>First of all I'll explain the reason for the title. I'm in the process of committing changes to the trunk that I have no reason to believe work. In all fairness it is data access code that isn't being called yet so it shouldn't break anything. However because I have put a pretty good amount of work into it I don't want it to be lost if my computer bites the dust.&lt;br /&gt;&lt;br /&gt;Second bit of news I have made a change to the way I plan to handle the data access layer. From now on the data access will have two classes for each database. The wrapper class and the actual data access class. Having a wrapper class that deals with a single connection allows you to safely deal with the connection and execute commands without making the actual data access class super messy. Now the PostgreSQL data access is already super messy and I may or may not do some cleanup in the near future. I do plan to do the cleanup though I just don't know if I want to do it right now. At any rate the new coding method makes the data access much cleaner. There are more function calls involved so it is a bit slower but not slower than the wait times for a database response so really I don't think it is going to make much of a difference.&lt;br /&gt;&lt;br /&gt;One final piece of news. I'm playing around with the idea of starting players classless. As I'm thinking about the character creation screen I'm thinking streamlining it would make it easier for new players to get into the game faster. I still plan to have classes and allow multi-classing and all that fun stuff but I have a little bit different idea of how I want to go about it. I'm thinking about a system where you train your levels in a class. By that I mean you select a class that you want to train in and while that class is selected to have level 1 (or more if you already have levels in it) access to the skills of that class. And while that class is selected you get exp toward that class level. You would then be able to switch the class you were training whenever you wanted but you would only have access to the abilities of the class you were training and classes you have full levels in.&lt;br /&gt;&lt;br /&gt;The purpose of the above mentioned system is mainly to streamline the character creation process and make the whole game overall more new player friendly. With that system a new player can test drive a few different classes before deciding to level one class in particular or mix and match. This should also lower some of a new players worries about messing up their character, at least at lower levels.&lt;br /&gt;&lt;br /&gt;Alright I have a test tomorrow and I have already stayed up way later than I should have coding so I'm gonna go sleep now. Night all and thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-180576944440469066?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/180576944440469066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/07/if-it-builds-ship-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/180576944440469066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/180576944440469066'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/07/if-it-builds-ship-it.html' title='If it builds ship it.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5759861767573279188</id><published>2010-07-17T00:32:00.002-04:00</published><updated>2010-07-17T00:57:17.548-04:00</updated><title type='text'>Data Access Layer</title><content type='html'>First of all apparently the value of a data access layer is in question. In my opinion if your using a database you should use a data access layer. Because for one things will change and having a single point to make those changes is truly priceless. Well priceless to the programmer. Anyway if your database scheme changes or even worse if you have to port to another database you will wish you had a data access layer if you don't already.&lt;br /&gt;&lt;br /&gt;So enough of that little rant on to business well sorta. I have been working on the database related functionality. I started this release thinking it wouldn't be a big deal but I'm quite aware that this should have probably been broken up into at least a couple releases if not more. But anyway I still don't have enough database code to make item testing work.&lt;br /&gt;&lt;br /&gt;In the course of working on the database code I realized a severe problem with implementing the PostgreSQL database functionality. That being that users will not be able to test the client and server without installing PostgreSQL and setting up the tables and such. Although not a problem for a server install I don't expect any passers by to put that much effort in to playing with alpha stage software. So here is my solution. I'm going to implement the database functionality using SQLite at first with the ability to complete the PostgreSQL implementation without allot of extra work.&lt;br /&gt;&lt;br /&gt;Now all that sounds fine well and good but I need to make several data structures for dealing with database stuff in a generic fashion. For example I need a command object as well as probably a data table and a parameter object. The reason is that I need to contain and pass this information around in a standardized way otherwise the repeat effort on the data access layer is gonna get out of control quickly. One of the reason for the problems is the that the libraries use parameters in different ways. Both of the APIs I have used provide some way to handle parameters in a secure way but syntax wise they are worlds apart. So with those extra data structures I can abstract that different and make the data access layers for each database allot more uniform. The more code I can share between the data access layers the better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So in short I'm stalled on the items until I have the database stuff working. once I have that working I will be able to give characters items and test that they equip &amp; appear in a characters inventory. right now I would have to do that from code and that may open another can of worms because so far hard coding stuff works for a little while but later it comes back to bite you sometimes. This is one case where I don't want to have that risk because we are all after all talking about data integrity. Adding persistence to the game world in even a limited sense will be a huge step forward as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One final piece of news I have moved the milestones around in terms of required functionality for each release. Because I decide effective testing of items requires the database to be working 0.9.0 is not real authentication. This milestone was much later but I have moved it ahead of items. Along with that I have moved guild and character persistence after real authentication. So in short all of you have to wait three more releases for items. However you will get a release sooner now because these steps were required anyway but now I will reach the milestones in order so no releases will get skipped.&lt;br /&gt;&lt;br /&gt;One little bonus I added a "/commands" command that works just like "/help command" and I have moved the in game browser urls out of code and into the url.cfg file. So any of you looking to actually use this thing to make a game now you don't have to worry about hard coded urls. Alright that does it for tonight thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5759861767573279188?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5759861767573279188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/07/data-access-layer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5759861767573279188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5759861767573279188'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/07/data-access-layer.html' title='Data Access Layer'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7057300766068047668</id><published>2010-06-05T12:15:00.002-04:00</published><updated>2010-06-05T12:55:45.346-04:00</updated><title type='text'>The eye of the storm</title><content type='html'>So, as of late I have had little to no progress on Enigma. There are several factors that caused this to happen. One is that I realized this release was going to be allot of work because of the lack of database code. Another is that I had tons of papers due for my different college classes. And the final major reason is because I have been playing DDO. :-)&lt;br /&gt;&lt;br /&gt;I intend to make some major code updates this week because I have it off from school. I had this last week off as well but I didn't get around to updating any code. I did however have a 3 hour discussion with one of the artists about combat system ideas. Although a bit lofty I think some of our ideas are worth shooting for.&lt;br /&gt;&lt;br /&gt;Having an extensive &amp; robust combat system should make it easier for people creating derivative works to achieve what they need to fit into their game play design. One danger with this though is the fact that not every player will want to stop and think about things. I think having options may scare some players away. Likely though we will still go through with it and allow 3rd parties to pare it down for the unwashed masses.&lt;br /&gt;&lt;br /&gt;Also, we discussed moving back toward a class based system and a more traditional leveling system. Although abandoning them would provide the player with more options after talking with a few people I don't think the average player will be able to wrap their head around that degree of flexibility. In addition it makes it hard to tell which players will be well suited to fill particular roles in a party/raid.&lt;br /&gt;&lt;br /&gt;For example in most games if someone is a cleric you know they can handles heals. However in a classless system you have to just ask people what they are setup for and although that encourages player interaction it could be frustrating for party/raid leaders dealing with people that just don't understand what is required to fill a role.&lt;br /&gt;&lt;br /&gt;Another thing that came out of the discussion is that we are leaning toward micro classes. That is classes that are extremely specialized and then allow the player to multi-class. This will allow the player to maintain some of the flexibility they would have under a classless system but allow them to just pick a class and run with it if they prefer that play style. each micro class will represent a very specific type of game play and party/raid functionality. This actually makes it easier for party members to know what to expect from a given party member.&lt;br /&gt;&lt;br /&gt;Another feature we are kicking around is the idea of group or co-op skills. Basically there would be some skills that require the cooperation of multiple party members. More than likely these would be some of the most powerful skills in the game. We talked about using this to help make having multiple players with the same class in a party useful. In some most games one of a kind is great but after that the usefulness of more players with that class decreases. We are planning on having co-op skills that work between players of the same class as well as different classes. So if you want to play a given class you don't have to worry about that fact that there are already a large number of people playing that class.&lt;br /&gt;&lt;br /&gt;That will also help in the early stages of the game because the first fully playable and stable version of the game will probably only have one class. We plan to add new classes on a regular basis but adding classes is allot of work and the first class will be worse because of all the combat systems that have to be developed to make it function. So in short micro classes and co-op skills are in the works but not yet because I haven't even finished items or any database code yet.&lt;br /&gt;&lt;br /&gt;Alright, that's all for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7057300766068047668?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7057300766068047668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/06/eye-of-storm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7057300766068047668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7057300766068047668'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/06/eye-of-storm.html' title='The eye of the storm'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7158356399364466677</id><published>2010-04-07T15:01:00.004-04:00</published><updated>2010-04-07T15:20:04.920-04:00</updated><title type='text'>AMD 890FX Chipset</title><content type='html'>I don't know how many of you are aware of this but I'm a big AMD fan. I have been for years. But at anyrate there is a soon to be released AMD chipset called 890FX. It has some pretty nice features from what I understand. Gigabyte is supposed to release a new motherboard using this chipset. As it happens I'm also a long time Gigabyte fan. This new motherboard sports 2 16x PCIE slots, 2 8x PCIE slots, and 2 4x PCIE slots. All of those are actually 16x in terms of physical size but those are the speeds they run at from what I have been able to gather. This motherboard sports sata 6 and usb 3.0 presumably without hindering the 16x PCIE slots like allot of other motherboards. Information is still pretty limited at this point and some of it maybe subject to change but I'm still pretty excited about it. If I have money when it comes out I'm probably going to get it. This motherboard uses AM3 socket which is the most recent AMD socket for desktop processors. There are rumors that the bulldozer processors that are scheduled for 2011 will use AM3 rev2 in which case there maybe an upgrade path with this board via a bios update or something of that sort. In which case I'll be pulling my cpu and replacing it in 2011 :-).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2KhQymRffJc/S7zYd09eWrI/AAAAAAAAACA/d6-GxZ6IMBU/s1600/ga-890fx-ud7-3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://4.bp.blogspot.com/_2KhQymRffJc/S7zYd09eWrI/AAAAAAAAACA/d6-GxZ6IMBU/s200/ga-890fx-ud7-3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5457474855410490034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On a project related note I'm still working away on the items when I have time. I recently added some code to the combat manager class which will be handling items. The reason for this is that items for the most part are combat oriented. Although less important I also added some code to add the total memory size of items into the maximum user calculation. So now the startup user limit check based on memory now takes into account items instead of just character &amp; user sizes. The upper bound is based on a new define I added to the item class. The maximum number of items for inventory and stash is currently set to 800 each. This doesn't effect anything yet other than the memory calculations but it will once items are fully implemented. The next thing on the list will probably be stack sizes and then I'll need to update the client including ui related stuff. I'll probably start with the actual inventory because that is the most complete on the client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7158356399364466677?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7158356399364466677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/04/amd-890fx-chipset.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7158356399364466677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7158356399364466677'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/04/amd-890fx-chipset.html' title='AMD 890FX Chipset'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2KhQymRffJc/S7zYd09eWrI/AAAAAAAAACA/d6-GxZ6IMBU/s72-c/ga-890fx-ud7-3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5200641442555231528</id><published>2010-03-30T01:36:00.002-04:00</published><updated>2010-03-30T01:45:18.437-04:00</updated><title type='text'>OpenGL 4.0</title><content type='html'>Alright, so I'm a little behind the curve. I just found out about OpenGL 4.0. I'm really hoping that new versions of irrlicht come out with support for it as well as DirectX 11. The Enigma engine is supposed to be a next generation type engine based on open source technology but the core isn't up to date right now. This hasn't been an issue because I don't have any decent test graphics nor do I have a nice level for testers to run around on. Right now I'm still using the same level I have been using for many versions. All of my graphics people have basically bailed on me so I'm back to solo mode I guess. It would have been nice to get some results first but I guess it can't be helped.&lt;br /&gt;&lt;br /&gt;On a somewhat related note I have Social Psychology, Statistics, and Project Documentation &amp; Communication. The core class (doc &amp; com) isn't too bad but the social psychology and statistics classes are a bit rough. Not that statistics is rocket science or anything but I don't test well when it comes to math. I'm doing alright with regard to my grades but I haven't had the time / energy to work on Enigma. So this is going to be another slow release. I really don't know how Darby &amp; Elizabeth do this with jobs lol.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5200641442555231528?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5200641442555231528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/03/opengl-40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5200641442555231528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5200641442555231528'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/03/opengl-40.html' title='OpenGL 4.0'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3937914541492299093</id><published>2010-03-15T16:47:00.002-04:00</published><updated>2010-03-15T16:59:21.576-04:00</updated><title type='text'>0.8.0 misses the mark.</title><content type='html'>After releasing 0.8.0 I became aware of a rather nasty bug in the code. There is actually a memory leak of all things. It is pretty quick as well if I didn't have 4 GB of usable ram in my system I would probably have noticed it sooner. I fixed it in the trunk but 0.8.0 is still effected by this bug. There is another smaller memory leak as well that I have yet to locate but I'm sure it is something similar. The memory leak in this case was simply creating a message and not sending it. Because it was never sent it was never cleaned up which obviously caused a memory leak. The problem was I was creating a message and based on some conditions either sending it or ignoring it. I changed the code to call the new clear method when the condition was not met. That solved the memory leak. &lt;br /&gt;&lt;br /&gt;I'm thinking about having the message container class clean up if a message isn't sent before it is destructed. This may help prevent further memory leaks like this one in the future. As much as I hate to say it chances are good I will make this mistake again. All those years of .net programming have spoiled me. No automatic cleanup in c++ :-(. &lt;br /&gt;&lt;br /&gt;I'm also working on adding items. This release maybe delayed like the last one because I started a new quarter at school and I have a couple job interviews. If I either A get a job or B have a heavy coursework load then I will have little time to work on Enigma. And if A and B happen I'll probably have some sort of breakdown. It would be really awesome if someone would just pay me to work on this project but allow me to retain intellectual property rights. Oh well, a guy can dream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3937914541492299093?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3937914541492299093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/03/080-misses-mark.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3937914541492299093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3937914541492299093'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/03/080-misses-mark.html' title='0.8.0 misses the mark.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7530908150398798050</id><published>2010-03-09T16:18:00.002-05:00</published><updated>2010-03-09T16:30:05.344-05:00</updated><title type='text'>0.8.0 Released</title><content type='html'>Version 0.8.0 of the Enigma project is finally available. The key features of this release are NPCs and Video playback. Currently the video playback only works under windows but the driver architecture allows drivers to be implemented for various APIs/platforms. NPCs work on both Windows &amp; Linux. Presumably they would work on Mac as well but I wasn't able to get a working build environment setup. There are no major bonus features but I large amount of work has gone into bug fixing and overall code correctness.&lt;br /&gt;&lt;br /&gt;I was going to make a binary release and I have the files locally but I was unable to upload the files to source forge. Every time I tried it would just sit there at the wait screen for hours even after the actual transfer was complete. So this will be a source version again. For those of you downloading these source versions you will noticed I changed the organization of the svn tree. All Enigma files are under "Enigma" and the development trunk is under "Enigma-Trunk".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are only two known bugs right now. The first is under some unknown circumstances right-clicking may cause the client to freeze. The other is that switching maps while moving may cause you to spawn outside of the map causing you to fall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7530908150398798050?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7530908150398798050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/03/080-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7530908150398798050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7530908150398798050'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/03/080-released.html' title='0.8.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4240678091062254184</id><published>2010-03-09T01:58:00.002-05:00</published><updated>2010-03-09T02:11:43.798-05:00</updated><title type='text'>cppcheck</title><content type='html'>I found a wonderful new (to me) tool to help with development efforts. It is called cppcheck and it does a pretty good job of spotting uninitialized variables, possible memory leaks, and things being passed by value when they can be passed by reference. I also noticed it spots functions that can be const but are not marked as such. I'm sure it can do more than this but these are some of the mistakes It caught in my code. I don't feel too bad though because the only memory leaks if found were actually reference counted objects that were part of the Irrlicht engine. So that means it's detection isn't perfect but in all fairness an actual programmer looking at the code without knowledge of the API wouldn't know that. But anyway they were GUI elements that get cleaned up when I clear the GUI. I did however forget to set the pointers equal to null which of course could cause problems if those pointers are accessed and checked for null. So the short version of the story is that I think this tool will do wonders for improving the quality of the codebase, I am human and I do make mistakes. &lt;br /&gt;&lt;br /&gt;Another untapped resources is nightly builds of codeblocks. I have been using 8.02 for all of the development thus far but the latest nightly build as of today(technically yesterday) has some nice features including a plugin to use cppcheck which I'm making full use of right now. I'm going to be stuck with 8.02 on my other target platforms unless I build from source but that shouldn't be a big issue because I do must of my development work in Windows. And as far as I know there aren't any project or workspace file incompatibilities.&lt;br /&gt;&lt;br /&gt;On to actual project news I'm planning on releasing 0.8.0 soon the main thing that has been holding me back is bugs. I fixed all of them except for the bug when users switch maps while moving and the right-click death. I'm hoping with the help of the above mentioned tools I'll be able to fix right-click death once and for all. It should be noted right-click death has never happened on Linux nor did it happen when I was using MinGW but in all fairness in the latter case there wasn't as much going on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4240678091062254184?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4240678091062254184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/03/cppcheck.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4240678091062254184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4240678091062254184'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/03/cppcheck.html' title='cppcheck'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1667316733106882978</id><published>2010-02-26T14:24:00.003-05:00</published><updated>2010-02-26T14:56:02.880-05:00</updated><title type='text'>0.8.0 on the way</title><content type='html'>Sorry I haven't posted in a while. I have been real busy with school, taxes, and life in general. This quarter at school is almost over and I have all of my taxes taken care of except my city taxes. Even though I have been busy lately I have managed to make some progress on Enigma. I only have one known bug right now assuming the right-click death doesn't return. I have also gotten Enigma client and server to work on Linux minus the video playback and in game browser. The video simply isn't implemented for any other platform because the windows version uses DirectShow. I plan to use gstreamer for Linux but I haven't implemented it yet. I'm not planning on doing that for this release though because that will be allot of work to learn the API and get a working implementation. However Audio, Video, and physics all have a device based architecture so it is easy to create new "devices" if you know the API. What I really need is some platform maintainers or just plain contributors but that probably won't happen for a while.&lt;br /&gt;&lt;br /&gt;So I plan to have 0.8.0 out very soon with multiple platforms being supported to some degree. Alright back to school work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1667316733106882978?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1667316733106882978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/02/080-on-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1667316733106882978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1667316733106882978'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/02/080-on-way.html' title='0.8.0 on the way'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6608970417800566162</id><published>2010-02-07T01:16:00.002-05:00</published><updated>2010-02-07T01:27:07.397-05:00</updated><title type='text'>Npc working</title><content type='html'>I got npcs working in enigma about an hour ago. I thought I should post an update for all of you keeping tabs on the project. I cheated and used the message to locate the answer from the answer map but it works pretty well right now. I'm also keeping all npc information in memory. This may become a problem in the future because of the memory requirements however I'll cross that bridge when I come to it.&lt;br /&gt;&lt;br /&gt;That is normally a bad policy but like many other things in this project until I get some hard data about how this all works under load I can't optimize correctly.&lt;br /&gt;&lt;br /&gt;It's getting late I'll blog more when I'm closer to the next release. Peace out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6608970417800566162?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6608970417800566162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/02/npc-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6608970417800566162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6608970417800566162'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/02/npc-working.html' title='Npc working'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6995745358434498024</id><published>2010-02-03T12:49:00.002-05:00</published><updated>2010-02-03T13:09:55.824-05:00</updated><title type='text'>Npc progress</title><content type='html'>I finally got Npcs in the game last night. Or at least the server reports them to the client correctly and the client displays them in the correct location. Right now the location is pretty bad I just set it to 0,0,0 so it's off the edge of the map and below it a bit. You still can't talk to Npcs or anything yet so this seems like a baby step but it was a pain. One thing I should mention is that the Npcs id field is zero which is a problem. Server side I made the code use a string Id for Npcs so content creators could give them meaningful Ids. That won't work for the client/server protocol though because the string id could be large and I should really only need 4 bytes. Well unless we need more than four billion Npcs. But anyway I'll have to account for that somehow. Maybe a static int that increments when a new Npc is created. Like a reference count but I wouldn't decrement it when one is deleted. I mean really I only need the id for telling the client which Npc to do stuff too. The string id can be used for all the client stuff.&lt;br /&gt;&lt;br /&gt;Anyway I haven't had allot of time to work on it I have a group project in my online class, an individual project in my project management class, and a least one paper every week in my environmental issues class. Plus I'm still working one taxes, Ugh.&lt;br /&gt;&lt;br /&gt;I'll try to get some work done this week no promises though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6995745358434498024?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6995745358434498024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/02/npc-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6995745358434498024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6995745358434498024'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/02/npc-progress.html' title='Npc progress'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6699949290436268031</id><published>2010-01-23T16:13:00.002-05:00</published><updated>2010-01-23T16:24:45.124-05:00</updated><title type='text'>right-click death!</title><content type='html'>I'm making pretty good progress overall but there is one bug that pops up now and again. When I right-click to rotate the camera the client freezes. Sometimes it does it and sometimes it does not. I thought I had it fixed a few revisions ago but it started doing it again for reasons yet unknown. I actually tried commenting out the code that handles the context menu thinking that might be causing it. But it still froze. Further more I threw some cout calls in there and it was for sure getting past that code before freezing. It's like it executes all of my code and then freezes. It's the strangest thing. Also I checked that whole section of code and I saw no recursive calls and no loops that should be unable to meet their condition. So I don't know how it could possibly be an infinite loop but that is what it looks like.&lt;br /&gt;&lt;br /&gt;I'm thinking about starting to work on the Linux build again. The reason is mostly so I can see if it happens on another platform. Kind of a silly reason I guess but using multiple platforms &amp; compilers tends to make code more robust. I would work on the mac build but just getting the libraries about made me crazy last time. Linux is probably the easiest operating system to setup a build environment on that I have ever encountered. Windows is second it probably just because it is so well supported.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But anyway be aware of that bug if you get a copy from source control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6699949290436268031?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6699949290436268031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/right-click-death.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6699949290436268031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6699949290436268031'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/right-click-death.html' title='right-click death!'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7669458348834347516</id><published>2010-01-21T14:12:00.002-05:00</published><updated>2010-01-21T14:29:35.280-05:00</updated><title type='text'>job hunt, school work, and enigma oh my!</title><content type='html'>I have been pretty busy with school work lately I haven't been posting as much as I would like. This of course means that some details are lost to time. However here is basically what I have been up to on the Enigma project. I realized they my horrible performance was from some sort of bug related the the irrlicht collision detection. I commented out my code that added the collision response scene node to the scene and my fps went from 20 to 500. That was a bit of a relief to me because I was concerned that my engines performance was going to be so bad that it would be unplayable with any relatively complex scene.&lt;br /&gt;&lt;br /&gt;So after that I started looking into other options for physics in the game I tried to whip up a ode based system with mixed results. I then was going to give bullet a try however it appears bullet will not compile with the 2003 toolkit. Which some of you may know I need to maintain compatibility with some of the stuff I'm using like the gecko SDK wrapper. Apparently if you have visual c++ 6 you can get updates that make it work but the toolkit got no such update and it is not supported anymore. From what I understand the mozilla source tree won't build on newer msvc versions so I'm kind of stuck with regards to that. The reason this is an issue is because the compilers use different versions of the runtime. I bet if I could choose the old runtime but use the new compiler it would probably work great. Anyway I think the issue has something to do with bullets usage of macros.&lt;br /&gt;&lt;br /&gt;After that I was contemplating PhysX that is until I found out it only supports Windows and if you even have an AMD/ATI card in your computer it disables the physics hardware acceleration. WTF Nvidia I used to like you guys. But anyway I think my solution is going to end up being creating a device system like the one irrrlicht uses for DirectX &amp; OpenGL. That way people can use whatever works best for them. And I will always have a fall back in case of some weird regression that I can't work around.&lt;br /&gt;&lt;br /&gt;Also I have added some data structures for monsters &amp; items to the game. Don't get too excited though I don't plan to actually implement that stuff until I get to the versions they are supposed to be implemented in. I just realized that the code is pretty much the same as the other entities so I coded the parts that were the same while I was in the area. So the long and short of all this is that I haven't been getting as much of the actual version related development completed but I have fixed some regressions and the code base has become more robust.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7669458348834347516?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7669458348834347516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/job-hunt-school-work-and-enigma-oh-my.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7669458348834347516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7669458348834347516'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/job-hunt-school-work-and-enigma-oh-my.html' title='job hunt, school work, and enigma oh my!'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2965216879315781676</id><published>2010-01-10T23:56:00.002-05:00</published><updated>2010-01-11T00:01:09.198-05:00</updated><title type='text'>0.7.0 mixed results</title><content type='html'>I fixed a few issues that were discovered after the 0.7.0 release. It is still a good release but not a stable as I thought it was going to be. I have been working on homework allot so I haven't gotten around to working on it more however I may work on it a bit more tonight. Tomorrow I have class so that is a no go. Unless I get like no homework :-). A guy can dream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2965216879315781676?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2965216879315781676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-mixed-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2965216879315781676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2965216879315781676'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-mixed-results.html' title='0.7.0 mixed results'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-9066072628309953994</id><published>2010-01-08T20:57:00.003-05:00</published><updated>2010-01-08T21:07:17.545-05:00</updated><title type='text'>0.7.0 Released</title><content type='html'>Finally, 0.7.0 has been released. It took me a while to get this one polished up enough to call a release. However this release is sporting some nice goodies. The big one is the in game browser using the gecko rendering engine. And the other is server side scripting. There isn't a whole lot to that yet but it is a good start. I have also switched the whole project to the 7.1 c runtime and the 2003 platform SDK. The reason for this is mostly compatibility.&lt;br /&gt;&lt;br /&gt;As usual I have included some nice extras namely the ability to select character, monster, and npc scene nodes. That will tie nicely into the next release. It also gives everyone a chance to play with the targeting system before I'm to far into coding against it. Also you can right click on a target to access the entity context menu that allows most of the common options you would expect. One caution on that though it isn't working just yet. For one thing characters don't exist so that information isn't available to the client. So targeting for those options isn't quite there yet.&lt;br /&gt;&lt;br /&gt;This is mainly a source release however I'm uploading a binary package for windows to the source forge page. My apologies to any Linux or Mac users out there that were looking forward to this release but I don't have to time to make progress and then go through testing phases on three platforms. Not with school. I may not work on this any more until next week though because I still have some homework to do before next week. Alright peace out, have fun playing with this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-9066072628309953994?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/9066072628309953994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/9066072628309953994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/9066072628309953994'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-released.html' title='0.7.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7130935232492601938</id><published>2010-01-03T21:38:00.002-05:00</published><updated>2010-01-03T22:23:08.754-05:00</updated><title type='text'>0.7.0 close at hand.</title><content type='html'>I have some good news for anyone keeping tabs on this project. The 0.7.0 release is close to ready with a few changes. One is that I won't be providing binaries for all three supported platforms. The reason for this is mostly that I'm having issues issues with build environments. As a matter of fact I have spent more time lately messing with the build environment on Windows than actually programming. For that matter I still have one outstanding regression that appears to have nothing to do with any of my code. So in short if I'm ever going to get this thing working I need to focus a bit more. In theory if I use all cross platform code I can work out the build issues at the end. By the end I mean 1.0.0. It may seem unfair to delay Mac &amp; Linux releases and it probably is but I just plain don't have the time. Maybe I'll get some Mac &amp; Linux build maintainers.&lt;br /&gt;&lt;br /&gt;Anyway there is only one known blocker preventing me from releasing version 0.7.0 and that is the above mentioned regression that broke the in game browser. As I mentioned above I don't think it actually has anything to do with the code though. I think it is because when I switched my build environment I ended up with a different runtime. The OffScreenGecko library that I'm using was probably built with an incompatible version. At least that is my best guess. At any rate I may end up trying to role back to an older version of the c runtime. That may fix some other non critical issues as well. I guess issues like these are why technologies like DotNet &amp; Java are taking over.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I added stubs for video playback support. None of that code is working yet but that functionality isn't due until 0.8.0. I was just working on some cleanups in the area and decided to throw that stuff in there while I was thinking about it. As with the browser the video play is contained in a static library to make it easier to add into other projects. Also it reduces the build times on the client a little.&lt;br /&gt;&lt;br /&gt;Next I added the ability to target characters, monsters, and Npcs. Also there is an indicated above the selected entity. Right now it is a blue circle but I hope to get/make a better graphic for future use. Also I added a context menu that includes options for dueling, trading, whispering, invite/kick from party/guild, and talk(Npc). Obviously some of those will not work with the current state of the project but some of them work somewhat and will make it easier to implement the UI for those features later.&lt;br /&gt;&lt;br /&gt;I'm pretty excited about this progress for the most part. Soon 0.7.0. will be out although I start back to school tomorrow so I'll be back to having almost no time to work on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7130935232492601938?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7130935232492601938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-close-at-hand.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7130935232492601938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7130935232492601938'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/070-close-at-hand.html' title='0.7.0 close at hand.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4079574695735140971</id><published>2010-01-01T00:39:00.002-05:00</published><updated>2010-01-01T00:53:09.179-05:00</updated><title type='text'>me vs c</title><content type='html'>I've been working a bit on Enigma over the holidays. I have however discovered a pretty nasty regression. The problem is that I have no idea what is causing it because whatever exception is getting thrown it isn't based on std::exception. So I have no information at all about what is causing the crash. Anyway the issues is basically that if you try to use any command the application dies instantly. What command you use doesn't matter. I'm pretty sure this was all working before I reinstalled my computer. So I'm wondering if it has to do with my build environment.&lt;br /&gt;&lt;br /&gt;I also found out the enigma server has a dependency on the 7.1 Microsoft c runtime. For what reason I don't know. I found that out because I was clearing out unused libraries and I got an exception complaining about the that library being missing. So I threw it back in the folder and sure enough it was happy as a lark. That bothers me because I"m pretty sure everything is linking against 9.0. Sigh, I don't know why they have to make this stuff so fickle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway I also found out that I have to use the static runtime. I was trying to be a good little programmer and had switched to using dynamic linking for the runtime. However I guess it has been a little while since I did a full rebuild. Once I did a full rebuild it make the application crash as soon as I tried to connect to the server. After I realized this I switched back and it fixed that issue.&lt;br /&gt;&lt;br /&gt;Basically what this all boils down to is that I have been struggling with the tools more than the code itself. That is really a shame in my opinion. At any rate if I can work out these issues there is some cool stuff coming down the pipe. Alright signing out Avery wants to play battle field heroes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4079574695735140971?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4079574695735140971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2010/01/me-vs-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4079574695735140971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4079574695735140971'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2010/01/me-vs-c.html' title='me vs c'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7206192387068264151</id><published>2009-12-20T22:45:00.003-05:00</published><updated>2009-12-20T22:57:09.072-05:00</updated><title type='text'>My other project</title><content type='html'>Anyone keeping tabs on the Enigma project may have noticed I haven't been making steady progress like I have been in the past. One reason for this is going back to school but another reason is that I have picked up another programming project.&lt;br /&gt;&lt;br /&gt;This one is a completely different matter though. It is targeted at windows and is written in C#. What kind of application you may ask well a point of sale system. It will probably be a bit more advanced than your average point of sale system by the time I'm ready to use it. And by use it I mean there is talk of using it in a business or possibly selling licenses of it to small businesses.&lt;br /&gt;&lt;br /&gt;It is still pretty early on though I don't have anything even worth doing a demo yet. Although I'm hopeful that by the time I graduate it will be production quality.&lt;br /&gt;&lt;br /&gt;I want to point out that this does not mean that Enigma is dead. It simply means that I'm not working on it right now. I'm in part waiting for another Irrlicht release that fixes the bugs they introduced in 1.5.1 because I'm to stubborn to rollback.&lt;br /&gt;&lt;br /&gt;Also nobody else on the project wants to do anything. I'm ultimately stuck if I don't have any sample levels or models to work with.&lt;br /&gt;&lt;br /&gt;PS. I'm on holiday break from school but I have an annotated bibliography and some other miscellaneous stuff that is due after break. So just because of that I may not get much work on either done. And also my friend got ODST, BOOM HEADSHOT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7206192387068264151?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7206192387068264151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/12/my-other-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7206192387068264151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7206192387068264151'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/12/my-other-project.html' title='My other project'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-671791080551406176</id><published>2009-12-09T00:11:00.002-05:00</published><updated>2009-12-09T00:32:22.144-05:00</updated><title type='text'>adventures with an intel mac</title><content type='html'>Another quarter a college has begun. So for a couple weeks at least I'm back to school. My project management class is meeting in a conference room instead of a lab and naturally the class focuses on effective use of Microsoft Project. Ugh, well done administration well done. At any rate being the high performers we are all of us checked Microsoft Project out of the school library and planned to bring laptops in to work on. Those of us that have them anyway.&lt;br /&gt;&lt;br /&gt;This is where my adventure began. For you see my laptop is an Intel Mac and Microsoft Project is Windows only. I thought no big deal I'll just use boot camp and everything will go smoothly. Reality set in when I realized that officially boot camp requires a full install disc for Windows XP service pack two or later. As someone who upgrades every version I don't have any full versions except for my old oem laptop that bit the dust. Just years and years of upgrades. And to top it off my Windows XP Pro disc which was the only license not in use was service pack one.&lt;br /&gt;&lt;br /&gt;Of course I could always buy a new full copy of windows but being tight as I am I wasn't about to pay for another windows license when I had one I wasn't using. Even if it wasn't the latest and greatest. So what did I do well I copied the files from my xp pro disc to a folder on my hard drive. Then I extracted service pack 3 and used the update utility to apply the update to the windows disc folder. Then I downloaded a boot image from a tutorial site and followed their instructions for slipstreaming. Slipstreaming by the way is the process of adding updates to a set of installation files. Now I actually have a couple windows XP Pro discs one won't boot and the other is missing critical files so I had to do some merging to get everything I needed but I finally get a working disc after much pain and suffering.&lt;br /&gt;&lt;br /&gt;Now as I said it was an upgrade but fortunately I had a backup external drive when a copy of a windows install so I plugged that guy in for the install so it wouldn't ask me for my Windows 98 disc which I have of course but you can't eject the disc from the Intel Mac's drive without either a supporting operating system or using the emergency eject that requires a restart.&lt;br /&gt;&lt;br /&gt;So I finally got my Mac dual booting with Windows XP Pro &amp; Max OS X. As a matter of fact that is what I'm creating this post on. So I'm already for class next Monday.&lt;br /&gt;&lt;br /&gt;And the programmer lived happily ever after or at least until Thursday(his next class).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-671791080551406176?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/671791080551406176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/12/adventures-with-intel-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/671791080551406176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/671791080551406176'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/12/adventures-with-intel-mac.html' title='adventures with an intel mac'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8010720732164340810</id><published>2009-11-14T22:22:00.002-05:00</published><updated>2009-11-14T22:32:45.362-05:00</updated><title type='text'>0.7.0 Blockers</title><content type='html'>I got the embedded browser working on windows. I'm super excited about it. I do have one issue with it though and that is the return &amp; backspace keys don't work properly. I have looked over my code and it should work but it doesn't. I'm still happy about the progress though. Anyway that bug is the first blocker I have to fix before I feel comfortable releasing 0.7.0.&lt;br /&gt;&lt;br /&gt;The next blocker is that the latest version of Irrlicht introduced some sort of bug that makes gravity not work sometimes. And in the case of Enigma all the time. This is a pretty big deal. I posted on the forums and got a possible fix but it doesn't work inside enigma. It does however fix the issue in my sample code that exhibits the faulty behavior. Regardless I may have to wait for another release before I can get this working again. Or roll back but then I would lose all of the upgrades and bugfixes.&lt;br /&gt;&lt;br /&gt;The final blocker is pretty fuzzy. The scripting seems like it needs a little something extra before I can call it a release.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All in all this could be a good release but there are some pretty big issues I'm going to have to overcome before the release will be ready. I have winter break from college coming up that might help some.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8010720732164340810?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8010720732164340810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/11/070-blockers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8010720732164340810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8010720732164340810'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/11/070-blockers.html' title='0.7.0 Blockers'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-919963564949523249</id><published>2009-11-03T13:49:00.003-05:00</published><updated>2009-11-03T14:06:05.840-05:00</updated><title type='text'>0.7.0 status</title><content type='html'>I decided to drop llmozlib. I found a gecko offscreen renderer SDK. It is based on the gecko SDK from Mozilla. Now there is only an SDK for Windows so I'll have to build it from source and possibly hack the code base to bring this support to Linux &amp; Mac. So as a result in this release I'm not going to add browser support to Linux and Mac. Not because I value those platforms less or anything it is just easier to get this release out if I don't bite off so much in one go.&lt;br /&gt;&lt;br /&gt;Also I broke the browser out into a static library. That should simplify things because there will be allot of effort into building that piece. So much so that I think it warrants it's own project. Perhaps if I get some volunteers I'll cut them lose on it. That will be one area where people will for sure want to use it later. They may even want to use it now if it is working. I haven't tested the code which means chances are good it doesn't work at all.&lt;br /&gt;&lt;br /&gt;Also for some reason I was feeling adventurous and updated to Irrlicht 1.6. That means it should be more stable and have fun new features. At this point I doubt I'll be using even a small fraction of them though because of how little graphical content we have in the game right now. We potentially have another 3d modeler coming on board though. He probably won't do much either but hey it could happen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One final order of business. I'm planning on making a binary release this time around. It has been so long I think it is time to put out another binary. The last was 0.3.0 I think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-919963564949523249?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/919963564949523249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/11/070-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/919963564949523249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/919963564949523249'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/11/070-status.html' title='0.7.0 status'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6973406420437112913</id><published>2009-11-02T21:56:00.002-05:00</published><updated>2009-11-02T22:04:18.583-05:00</updated><title type='text'>Ugh</title><content type='html'>I just have to vent. I have been trying to get llmozlib to build in my spare time which to be honest I don't have all that much of right now. And I can't get the stupid thing to build. For one you have to download an old version of firefox then you apply their patches to the code. Then you have to get an old version of Microsoft's compiler and finally you need an old version of the Windows &amp; Platform SDK. And after following the instructions to the best of my ability I got a compiler error. I'm not an angry person but I could explode with anger right now. If your going to make a library you really need to release an sdk with headers and binaries especially if it is that much of a pain to compile.&lt;br /&gt;&lt;br /&gt;I think the project is dead though so I wouldn't be surprised if an sdk was on the someday list. *angry words*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6973406420437112913?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6973406420437112913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/11/ugh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6973406420437112913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6973406420437112913'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/11/ugh.html' title='Ugh'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-323303087704084126</id><published>2009-10-28T15:18:00.002-04:00</published><updated>2009-10-28T15:34:37.323-04:00</updated><title type='text'>0.7.0 a long way off?</title><content type='html'>I have been focused on school allot lately so I haven't made much progress on the 0.7.0 release. I could probably release what I have as 0.7.0 but I don't feel like I have added enough functionality to warrant a release. I guess that is because I chose "scripting" as the milestone which is meaningless without something to script. I have technically added the ability to run python scripts to the server. However right now there is no point in doing this except maybe doing some added value stuff on some server events. So long story short part of the delay is just because of poor milestone selection on my part.&lt;br /&gt;&lt;br /&gt;On a more positive note I have made some good progress on adding a browser to the game. I'm now using llmozlib. Which basically allows me to embed firefox in my game. The main hangup right now is that they don't have binaries. It is source only. Not that I can say much I only release binaries once in a blue moon but it makes it hard to develop against a library if there is no formal SDK. But I guess mozilla does the same thing so they are merely following the trend of the components they are using. Complaining aside this will be a major advancement if I can get it to work. I'm not sure when that will be though. &lt;br /&gt;&lt;br /&gt;I have to write a draft research paper this week and who knows what else. I think I have to write a paper about a campaign to accomplish my information system plan for my pretend business. Silly college assignments that don't really help in the real world. I also have presentations coming up which I haven't actually started on. Sigh, I should probably get on that soon. I really wish that I didn't have so much busy work. It would be one thing if the assignments were meaningful but some of the stuff is just filling space it seems like. Oh well at least I'm getting some writing practice in.&lt;br /&gt;&lt;br /&gt;Complaining aside I have one final order of business I'm planning on editing the road map again. I need to refine it more. Also I plan to add tasks to the source forge page so I can better keep track of progress. Alright I have to go to class in like an hour peace out yall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-323303087704084126?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/323303087704084126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/070-long-way-off.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/323303087704084126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/323303087704084126'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/070-long-way-off.html' title='0.7.0 a long way off?'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6503586799409776102</id><published>2009-10-19T23:49:00.002-04:00</published><updated>2009-10-20T00:17:46.436-04:00</updated><title type='text'>Another waste of "Time"</title><content type='html'>I was feeling ambitious again, well sorta. Anyway I implemented a time command that shows the user the server time. It isn't super useful in my opinion but it is pretty standard. I have to go back to school tomorrow so I won't be working on it for a while so it was nice to get some stuff out the door.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Alright I think I'm gonna get some food, watch the Voltron motion comic, and get around for bed. Good night everyone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6503586799409776102?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6503586799409776102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/another-waste-of-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6503586799409776102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6503586799409776102'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/another-waste-of-time.html' title='Another waste of &quot;Time&quot;'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7531612229151847058</id><published>2009-10-19T02:22:00.002-04:00</published><updated>2009-10-19T02:29:40.489-04:00</updated><title type='text'>Another random distraction.</title><content type='html'>I just finished the roll or random command. So now players can roll for the loot that doesn't exist. Or you know gamble highest die wins. I'm kidding of course but I did add the roll command. I wanted to do it for a while but I was waiting to get more important functionality in place before adding fluff. Of course I'm super bored of working on the scripting stuff but there isn't enough script enabled functionality for me to call it a release. So while I'm working on that stuff you can probably count on a "random" bit of functionality here and there. After working on so much client stuff it is hard to work in server side never see the light of day business logic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well anyway truth be told I probably wouldn't have worked on the project at all tonight but I ate late so I had to wait a bit before hitting the sack. However I'm probably gonna call it a night now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7531612229151847058?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7531612229151847058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/another-random-distraction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7531612229151847058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7531612229151847058'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/another-random-distraction.html' title='Another random distraction.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1535746783592057110</id><published>2009-10-11T20:23:00.011-04:00</published><updated>2009-10-11T20:47:05.047-04:00</updated><title type='text'>Reading Python script from file.</title><content type='html'>I had  issues at first loading my scripts from files. I based my original implementation off of the embedding example on the python wiki. This worked perfectly however when I tried to switch the run function for one that would run from a file I got less than acceptable results. So what I ended up doing is reading the scripts into memory and then passing the string to that function. This has at least one pitfall and that is memory usage. On larger files you may run into memory usage issues but other than that it seems to work ok. Below is a stripped down version for anyone else trying to work around similar issues.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.python.org/moin/boost.python/EmbeddingPython"&gt;EmbeddingPython&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; RunScript(&lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;* filename)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    FILE *file;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;long&lt;/span&gt; fileSize=0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;char&lt;/span&gt;* buffer=NULL;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            file = fopen(filename,&lt;span class="str"&gt;"rb"&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(file!=NULL)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                    fseek(file,0,SEEK_END);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                    fileSize = ftell(file);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                    rewind(file);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                    buffer = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt;[fileSize];&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    fread(buffer,fileSize,fileSize,file);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            fclose(file);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                    buffer[fileSize]=&lt;span class="str"&gt;'\0'&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                    handle&amp;lt;&amp;gt; ignored(( PyRun_String(buffer,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                                     Py_file_input,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                                     main_namespace.ptr(),&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                                     main_namespace.ptr() ) ));&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                    delete []buffer;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                    std::cout &amp;lt;&amp;lt; &lt;span class="str"&gt;"Script file could not be opened!"&lt;/span&gt; &amp;lt;&amp;lt; std::endl;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;catch&lt;/span&gt;(error_already_set)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            PyErr_Print();&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1535746783592057110?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1535746783592057110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/reading-python-script-from-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1535746783592057110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1535746783592057110'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/reading-python-script-from-file.html' title='Reading Python script from file.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2089418805162394375</id><published>2009-10-10T23:58:00.002-04:00</published><updated>2009-10-11T00:41:14.913-04:00</updated><title type='text'>Basic Python Scripting</title><content type='html'>The server now has basic python scripting abilities. The first order of business is to make sure I have all the events I need. Then I need to see if I can do anything about how fickle the interpreter is right now. There have been a few cases when the server wouldn't run things that ran inside of the official python interpreter although in theory it should be the same code. I also need to figure out what I'm doing to do about reference variables. I have issues wrapping them.&lt;br /&gt;&lt;br /&gt;But anyway those of you wishing to see what will be possible when scripting is finally released. Get latest and have at it. You should be able to do basically anything you can do in python. You will also have access to the current user object. That isn't much but it is a good start.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alright night all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2089418805162394375?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2089418805162394375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/basic-python-scripting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2089418805162394375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2089418805162394375'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/basic-python-scripting.html' title='Basic Python Scripting'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8908049040561761759</id><published>2009-10-09T01:07:00.002-04:00</published><updated>2009-10-09T02:05:13.434-04:00</updated><title type='text'>The Literary cage that is Citation</title><content type='html'>I'm sure all of you understand citation. But basically it is where you give credit to someone when you quote them or summarize their work. And to that end it is a valid and important part of writing.&lt;br /&gt;&lt;br /&gt;I have however come to the conclusion that citation is currently being used as a tool to devalue original thought. What I mean is literary works are said to be weak if they don't site anyone. Now if they are actually based off of another work that is plagiarism. But what about the ones that are actually original works. Should they be of less value because they are not backed by a body of existing work?&lt;br /&gt;&lt;br /&gt;I have a strong background in IT as some of you may have guessed. And what I have found is it isn't uncommon for some details of software or hardware products to be undocumented. So there is actually a large body of knowledge held by technical professionals such as by self that you probably won't find in a book or scholarly work. You might be able to find that type of information on forum posts or if your lucky a wiki. However the question is would it be valid to write a work on these topics purely from personal experience. Would it be less valuable to other IT professionals who have not had the experience with a given topic? Is it impossible to be considered Authoritative even if the information can be proven by simply trying it out?&lt;br /&gt;&lt;br /&gt;In my college research class surveys, first hand experience and such is referred to as a primary source. And using another persons work is considered a secondary source. So this begs the question why is it that secondary sources seem to be more important. Companies go so far as to pay other companies to conduct research for them and then site that research in their own works. How is having another company with a vested interest in you liking the results doing a study more legitimate than a company doing their own research? If someone else says it does it make it true? If only one person says something does that mean it is false? Is a work that provides more information to support and idea inferior to one that provides little information but sites other sources? Do more source make a work more trustworthy?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Consider the following if cited scholarly works are the best source for information why are blogs, forums, and news groups so popular. If only cited works are trustworthy what good are they? In my experience forums provide better quality &amp;amp; quantity of information over official source. If I have a problem with a printer do you think I go to the manufacturers site to get information? Nope I just type the error or general problem description into google and I normally end up with a forum post that has the solution. This is true for more than printers. Computer software is probably an even better example in terms of quality of information. But printers are something that most people have to deal with at some point. Software is also to some extent but normal users software needs typically aren't that high in my experience. So if original thought is good enough for solving possibly mission critical problems why isn't it good enough for literary works?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It seems that people think because other people agree with them that they and by extension their works are better than those that don't have any works to reference. Historically new ideas don't come from the whole of humanity. They come from individuals and groups. So what if these free thinkers? In the past some have been ridiculed by their peers and in some cases killed. Modern society is heavy with themes like march to your own drum or be your own person. Which seems to go as far as professional literary works and then stops. All of a sudden your ideas and your research are not good enough. Truth despite popular opinion isn't relative. If you can prove something to be true than why does it need a citation to be considered true and valid?&lt;br /&gt;&lt;br /&gt;So in conclusion Although citation is a valid part of writing I think it is actually being used to inhibit original thought. I would even go so far as to say it makes people who explore the depths of their interests competitively disadvantaged.&lt;br /&gt;&lt;br /&gt;So one final thought. Which is more reliable a shared option with little information or a single work with a great deal of provable information?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8908049040561761759?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8908049040561761759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/literary-cage-that-is-citation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8908049040561761759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8908049040561761759'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/literary-cage-that-is-citation.html' title='The Literary cage that is Citation'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7598524175857048328</id><published>2009-10-07T14:29:00.002-04:00</published><updated>2009-10-07T14:47:31.020-04:00</updated><title type='text'>Death of Awesomium</title><content type='html'>So, some of you may have noticed that the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Awesomium&lt;/span&gt; library is no longer available for download. At least not under a free license. Near as I can tell from the site the author created a company and intends to sell the library along with other products. While this may work for Him this makes it unusable for Enigma. The reason is of course one of my project goals is to use only open source software that is compatible with close source usage. This is just another example of the limitations this imposes. However my goal in all of this is to prove that it is indeed possible to construct a high quality product that leverages open source while still allowing closed source development.&lt;br /&gt;&lt;br /&gt;Another side to this whole deal is that if I included &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Awesomium&lt;/span&gt; I would need to pass the licensing on to the people using the software. That's just not gonna fly. It is a shame because I had decided that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Awesomium&lt;/span&gt; was the best available but now it looks like I may have to build my own interface. I guess it is just as well because &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Awesomium&lt;/span&gt; didn't have Linux support probably because chromes support is sketchy at best. This may change in the future but I'm counting on the Linux community to help make this project fly so I can't alienate such a helpful community.&lt;br /&gt;&lt;br /&gt;At any rate I happen to be a Linux user myself so I would be limiting myself as well. So in the end what I'm planning is to use the embedding information available for Mozilla to make my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Irrlicht&lt;/span&gt; browser &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;UI&lt;/span&gt; element. This will be more work and will further delay the release of version one.&lt;br /&gt;&lt;br /&gt;But hey what can I do stuff happens. I'm planning on digging back into the code really soon however like I have said I will have much less time to work on the project than I have had in the past. College is pretty heavy on homework this go around at least so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7598524175857048328?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7598524175857048328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/death-of-awesomium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7598524175857048328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7598524175857048328'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/death-of-awesomium.html' title='Death of Awesomium'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3614761620939633982</id><published>2009-10-01T12:04:00.002-04:00</published><updated>2009-10-01T12:13:14.449-04:00</updated><title type='text'>Distractions</title><content type='html'>Some of you may have noticed I haven't been posting nor updating the code base. However the project isn't dead it is just delayed. I started school and on top of that I have been playing EQ2 so as you can imagine I haven't had much time. The good news is I have canceled my EQ2 subscription so I might be able to get some development time in. No promises of course.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also I have been thinking about the uses of browsers in games. I'm wondering how much could be offloaded to the web browser. Some people have said they are going to do most of their UI with a web browser but that seems silly to me. You might as well make a web based game at that point. However there are some cases I think where it would be better to let a tried and true layout engine handle the grunt work. Like for example anything with large chunks of text.&lt;br /&gt;&lt;br /&gt;Alright I think I'm going to leave it at that I have a bunch of homework and a test tonight. Peace out y'all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3614761620939633982?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3614761620939633982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/10/distractions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3614761620939633982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3614761620939633982'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/10/distractions.html' title='Distractions'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6887964669156187870</id><published>2009-08-07T12:43:00.003-04:00</published><updated>2009-08-07T12:47:50.663-04:00</updated><title type='text'>Antenna Break</title><content type='html'>Sorry folks I took a break from the server script work to build a TV antenna. I will be starting school sometime in September so I wanted to finish it while I still had time. Have to watch &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Heroes&lt;/span&gt; when it starts back up again you know. I want to see it in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;HD&lt;/span&gt; for some reason. I guess I could just wait till like the day after and watch it on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Hulu&lt;/span&gt; but whatever. I want what I want &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;lol&lt;/span&gt;. :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tech Tinker must tinker with tech.&lt;br /&gt;&lt;br /&gt;:-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6887964669156187870?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6887964669156187870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/08/antenna-break.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6887964669156187870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6887964669156187870'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/08/antenna-break.html' title='Antenna Break'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2142237047019639510</id><published>2009-08-01T02:10:00.003-04:00</published><updated>2009-08-01T02:16:24.712-04:00</updated><title type='text'>wrappers are boring.</title><content type='html'>So, as you know I'm working on the python wrappers. It is a good bit for work partly because I have had to make a few tweaks to make to my c++ code to make it wrapper friendly.&lt;br /&gt;&lt;br /&gt;It is pretty boring stuff though. I don't get to see any results really until I get almost done with the wrapper code. I have some of the basic server objects wrapped but none that actually do anything.&lt;br /&gt;Also wrapper code is kind of plain I mean your basically throwing duplicating your interface. I'm just glad boost's python stuff makes it so easy otherwise I would probably go crazy implementing this stuff.&lt;br /&gt;&lt;br /&gt;Oh well I guess it will all pay off in the end. Once the server is scriptable I might be able to talk some people into some python development to ease the burden on me. At least as far as skills, NPC, and quests.&lt;br /&gt;&lt;br /&gt;Well gonna go to bed earlyish tonight signing off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2142237047019639510?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2142237047019639510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/08/wrappers-are-boring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2142237047019639510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2142237047019639510'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/08/wrappers-are-boring.html' title='wrappers are boring.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1654006659662883650</id><published>2009-07-31T00:44:00.002-04:00</published><updated>2009-07-31T00:47:58.923-04:00</updated><title type='text'>Pace of things</title><content type='html'>So far It has been taking me a couple weeks to push out a release. As of now there are 23 more releases before the final release. So with that in mind I think I should be able to have 1.0.0 out by 2010 or 2011. Assuming the project doesn't get completely canceled once I'm back in school.&lt;br /&gt;&lt;br /&gt;I plan on working on it even while in school however I should mention that I will have much less time than I do now. The flip side is I will likely be more focused than I am now.&lt;br /&gt;&lt;br /&gt;Also If I'm lucky my studies will help me develop better project management skills and allow me to better manage this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1654006659662883650?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1654006659662883650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/pace-of-things.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1654006659662883650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1654006659662883650'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/pace-of-things.html' title='Pace of things'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8430892802653126328</id><published>2009-07-30T21:10:00.003-04:00</published><updated>2009-07-30T21:20:32.991-04:00</updated><title type='text'>Compiler Change Complete</title><content type='html'>I finally was able to switch over to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Microsoft's&lt;/span&gt; Visual C compiler for the windows version. It was a big pain. I ran into issues with my string related functions. I was passing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;const&lt;/span&gt; char* around but &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MSC&lt;/span&gt; decided those needed to get cleaned up before they actually made it through the chain of calls.&lt;br /&gt;&lt;br /&gt;So I switched to std:string which is probably safer anyway but I passed them by reference at first. That however caused more or less the same problem with a few extra issues here and there. So what I ended up doing is just passing them by value. So what that means is I'm copying them one or two times before they get to the function that uses them to load the related resource. This isn't that great from a performance standpoint but it works flawlessly and I know for sure they are getting cleaned up after they go out of scope.&lt;br /&gt;&lt;br /&gt;But anyway the short version of the story is that after many hours of pain and suffering I was able to get it to compile &amp;amp; link with Microsoft's Visual C stuff.&lt;br /&gt;&lt;br /&gt;One side note though the inclusion of Python broke my Linux build environment. That apparently is a result of me using a old version of boost that doesn't include it or something. So that is what I'm working on ATM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8430892802653126328?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8430892802653126328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/compiler-change-complete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8430892802653126328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8430892802653126328'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/compiler-change-complete.html' title='Compiler Change Complete'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-979170844483658221</id><published>2009-07-30T05:46:00.001-04:00</published><updated>2009-07-30T06:37:40.170-04:00</updated><title type='text'>You win this round Microsoft</title><content type='html'>As I have posted many times before I have run into many issues resulting from the fact I have been using MinGW instead of Microsoft's Visual C/C++ compiler. It isn't that there is anything wrong with MinGW but rather that linking with libraries made using MSC is a pain if not impossible in some cases.&lt;br /&gt;&lt;br /&gt;The main reason I was using MinGW is that it is the windows port of gcc and as such I was basically using the same compiler on every platform. That was nice because it took very little work to make everything compile on every platform. Once the development environment was setup and all dependencies were in place that is.&lt;br /&gt;&lt;br /&gt;Well the straw that broke the camels back was when I couldn't compile after adding boost python to the server. That is a deal breaker I need it for NPC scripting. I have also been unable to add a few cool extras I wanted to because the libraries they require don't support MinGW on Windows.&lt;br /&gt;&lt;br /&gt;So, I bit the bullet and started switching the client &amp;amp; server over to MSC for the windows build targets. It should be noted that this won't effect Linux, Mac, BSD, or Open Solaris users. Not directly anyway. I'm more likely to get lazy with my support of other platforms as it is likely to be more work that it used to be. I still plan on supporting all of them for 1.0.0 but until then no promises.&lt;br /&gt;&lt;br /&gt;I guess all of this doesn't matter that much at this point anyway as the last test on Linux was less than perfect to put it lightly. Also Mac &amp;amp; BSD are still a no go. I really want those versions to work but I need more Knowledge of both operating systems to track down the issues.&lt;br /&gt;&lt;br /&gt;My BSD install isn't quite correct and I think the OpenAL SDK on my Mac is out of date even though I pulled it from the OpenAL site resently. Also Some of those SDK installers throw stuff in weird locations so I might just be pointing to the wrong one. Ugh, I don't know why they have to make this stuff so difficult for developers.&lt;br /&gt;&lt;br /&gt;One other bit of good news for any windows developers hacking away at my code I'm moving away from the custom directory structure. eg "C:\usr\"  I'm no trying to use default locations and fix my headers acordingly. This should help make setup faster for new developers and make it easier for me when I reinstall my computer when Windows 7 comes out lol. That should be a barrel of laughs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-979170844483658221?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/979170844483658221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/979170844483658221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/979170844483658221'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/blog-post.html' title='You win this round Microsoft'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5210743520846525449</id><published>2009-07-29T01:30:00.002-04:00</published><updated>2009-07-29T01:42:25.978-04:00</updated><title type='text'>Slacking Off</title><content type='html'>Sorry folks I have been slacking off since the last release. However I have started work again. Mostly research at this point because I don't know how I want to do the NPC stuff. I'm still thinking about the best way to do it.&lt;br /&gt;&lt;br /&gt;The most flexible would be LUA scripts but I'm not sure that would exactly make people want to make NPCs for the game. I could make a GUI app to help make that work but I'm still not sure.&lt;br /&gt;&lt;br /&gt;That is probably what I will end up going with though because that method will work for quests and such as well. So build pieces for speaking will get me on the road to adding quests which is coming up the release after this one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5210743520846525449?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5210743520846525449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/slacking-off.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5210743520846525449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5210743520846525449'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/slacking-off.html' title='Slacking Off'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7513405195314199039</id><published>2009-07-24T21:08:00.002-04:00</published><updated>2009-07-24T21:21:05.600-04:00</updated><title type='text'>0.6.0 Released</title><content type='html'>I have finally released 0.6.0. As promised players now have the ability to form guilds add ranks to those guilds &amp;amp; assign permissions to the ranks. I also fixed the security checks related to kicking, inviting, and modifying ranks.&lt;br /&gt;&lt;br /&gt;There is no eye candy in this release. It is mostly just a technical update. There are still Allot to be done before this will be a playable game. Some of that is just interface improvements and some is back end functionality that is completely missing at this point.&lt;br /&gt;&lt;br /&gt;As with the last release I was able to build for windows, Linux, and FreeBSD. However FreeBSD gives me a seg fault when I try to login to a server. This may have more to do with the state of my system but I don't want to let people think that it is working perfectly only to get a big fat error when they try to test it.&lt;br /&gt;&lt;br /&gt;Also Linux is largely untested. I'm pretty sure it should work but I haven't run it for any notable amount of time. Also I haven't tested most of the features.&lt;br /&gt;&lt;br /&gt;Windows is the exception I have tested the functionality I have added pretty well on this platform. Not our of favoritism but because it is the operating system I have been developing on.&lt;br /&gt;&lt;br /&gt;The ranking system is pretty cool I think although right now modifying will create a rank if it doesn't exist. That probably won't been an issue once I get some sort of UI for it in place.&lt;br /&gt;&lt;br /&gt;I have modified the project roadmap a little. It is a little long than first listed. Mostly I just added a new revision for UI implovements because I haven't been giving that much attention. I have done it this way because I didn't want to delay this release anymore and I haven't decided how I want to layout the guild, party, etc menus. Normally that type of thing would be planned out in advance but UI isn't my speciality so I tend to put it off. That is double true for fun projects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok, standard speech. As usual I have created a branch for this revision so the source can be downloaded and built relatively easy. Once you have the build envirnment setup anyway. Good luck on that part though. It is specially a pain on FreeBSD. Mac is also a pain so much so that I haven't finished working on making this build under Mac. Even after I got a patched version of codeblocks I was unable to produce a binary for Mac.&lt;br /&gt;&lt;br /&gt;So sorry folks no Mac binary yet. Although if someone wants to try to make one be my guest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7513405195314199039?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7513405195314199039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/060-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7513405195314199039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7513405195314199039'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/060-released.html' title='0.6.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-117864923210542830</id><published>2009-07-23T02:06:00.002-04:00</published><updated>2009-07-23T02:42:48.955-04:00</updated><title type='text'>There's always a try catch.</title><content type='html'>I added some try catch statements to a few places. One reason for this is to prevent people from causing exceptions on purpose to produce undesirable results.&lt;br /&gt;&lt;br /&gt;Each poll of the server is not in a try catch that way if a user sends a packet that somehow causes an exception no other users will be effected. I still plan to add validation to the manager classes but it is impossible for me to think of every single exploit before anyone else thinks of it. So I plan to monitor the exceptions once I have a server up and make fixes based on the exceptions.&lt;br /&gt;&lt;br /&gt;After all I can't have one rouge user bringing down the server and causing everyone to get disconnected.&lt;br /&gt;&lt;br /&gt;I also added a try catch to the execute command callback. I'm doing some tricky parsing stuff and any failure on the user's part to correctly form a command could cause an exception. So rather than have the game just die I'm spitting out a console message and give the user an invalid/unknown command message.&lt;br /&gt;&lt;br /&gt;I don't want invalid user input to crash the game under any circumstances.  If there is a hardware problem of some kind that makes sense to allow as crash because continuing to run may cause harm to the user's system for character data.&lt;br /&gt;&lt;br /&gt;I have also been looking into the performance cost of exceptions in c++. I have always heard &amp;amp; read that exceptions are expensive. And some of my research agrees. However I have also found some articles/posts that say it is very inexpensive and should be used where ever needed.&lt;br /&gt;&lt;br /&gt;What I'm thinking though is that most of the libraries I'm using throw exceptions so I have no choice but to add exception handling. I think I will avoid throwing exceptions in my code as much as possible but I will add exception handling where ever it seems appropriate.&lt;br /&gt;&lt;br /&gt;Also I will try to keep exception handling out of the main loop as much as possible.&lt;br /&gt;&lt;br /&gt;http://www.gamedev.net/reference/articles/article953.asp&lt;br /&gt;http://bytes.com/groups/cpp/590545-whats-cost-try-block&lt;br /&gt;http://www.crazyontap.com/topic.php?TopicId=34384&lt;br /&gt;https://developer.mozilla.org/en/C___Portability_Guide&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-117864923210542830?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/117864923210542830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/theres-always-try-catch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/117864923210542830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/117864923210542830'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/theres-always-try-catch.html' title='There&apos;s always a try catch.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6497418309491294404</id><published>2009-07-18T17:53:00.002-04:00</published><updated>2009-07-18T18:04:08.745-04:00</updated><title type='text'>Check my Checksum</title><content type='html'>I added three types of checksum to the message container class. This isn't a big deal really but it makes it easier for people to add anti tampering measures to their versions of the game. It also allows for message corruption protection. Although I don't really see that being an issue in most cases. The generic GetChecksum function currently just calls the GetSimpleChecksum function which sums the characters of the message.&lt;br /&gt;&lt;br /&gt;I don't currently have any plans to take this any further but I may if there is demand for it or if I get a cool idea. I don't want to go an implement something unless I know it will be useful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also I hate flies and I could sware we have like over 9000 in the house. It's like a plague I have no idea what is going on but it is really annoying.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6497418309491294404?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6497418309491294404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/check-my-checksum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6497418309491294404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6497418309491294404'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/check-my-checksum.html' title='Check my Checksum'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5998101647280326923</id><published>2009-07-18T17:49:00.002-04:00</published><updated>2009-07-18T17:53:33.773-04:00</updated><title type='text'>Story about the story</title><content type='html'>Last night after hours of unproductive gaming we decided to work on the story a bit. We got some of the story points worked out and added a few new clans. This is a change from what we have been doing. I have been focused on the technical parts of the game &amp;amp; Avery has been focused on trying to figure out how to make a human model.&lt;br /&gt;&lt;br /&gt;So the short version of the story is that I didn't really code at all and unless I have a change of heart I don't make any real progress on it today either. And as all of you know I don't code on Sunday so it maybe Monday before anymore progress toward the next release happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5998101647280326923?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5998101647280326923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/story-about-story.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5998101647280326923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5998101647280326923'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/story-about-story.html' title='Story about the story'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7261475469300189787</id><published>2009-07-17T02:16:00.003-04:00</published><updated>2009-07-17T02:26:38.360-04:00</updated><title type='text'>Guilds are in the house</title><content type='html'>I took a break after the last release. Mostly because my friend Avery &amp;amp; I were a little burnt out on our normal routine. Also it is good to break things up now and again.&lt;br /&gt;&lt;br /&gt;However tonight I hit the ground running and I'm happy to say that the version in the development branch is now able to create guilds. You can also now create a party as a separate step from inviting someone. Some games require this but I made it optional.&lt;br /&gt;&lt;br /&gt;I still need to add guild management features and I also just realized that nothing happens when the leader of a guild or party leaves. That should actually cause the guild or party to break and return everyone to guild or party zero. Which of course means no guild or party.&lt;br /&gt;&lt;br /&gt;I'm thinking about how I want the ranks and stuff to work I may allow the user to change the bitmask for now. later I will add a nice friendly GUI but I'm not very good at that stuff so I'm not sure if I will add it to this comming release. However I should probably add GUI stuff for all of this stuff before 1.0.0 though.&lt;br /&gt;&lt;br /&gt;I guess maybe I may have to adjust the road map a bit not really adding anything but more like breaking it down further and better defining a few things. I never promised GUIs for this stuff but most users won't get the command stuff.&lt;br /&gt;&lt;br /&gt;Power users will love this stuff though. They can do most of the in game stuff from the chat box lol. It's like the unix style mmorpg haha. Once I have macros it will be even cooler.&lt;br /&gt;&lt;br /&gt;Well anyway I'll work on the roadmap tommorrow sometime. I need to shower and sleep now I'm tired.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7261475469300189787?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7261475469300189787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/guilds-are-in-house.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7261475469300189787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7261475469300189787'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/guilds-are-in-house.html' title='Guilds are in the house'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7686859658077339895</id><published>2009-07-15T17:34:00.002-04:00</published><updated>2009-07-15T17:56:50.505-04:00</updated><title type='text'>0.5.0 Released</title><content type='html'>I finally got 0.5.0 out the door.&lt;br /&gt;&lt;br /&gt;As promised this version sports a party system that allows players to form parties and use party chat. You can also leave &amp;amp; kick people from parties as you would expect. All of the above are done from commands though as there is now scene node interaction menu systems in place yet.&lt;br /&gt;&lt;br /&gt;The pieces that are the same for guilds have been implemented as well so the next release should go smoothly for the most part. Although It may still need the same or more amount of time because of the extra stuff I will need to implement to get guilds working correctly.&lt;br /&gt;&lt;br /&gt;I have also added a bonus feature. You can now get a list of all players in the world, your current map, your guild, or your party. This is done through the who or list command. They default to world but by adding "map", "guild", or "party" to the end it will modify the default behavior.&lt;br /&gt;&lt;br /&gt;I also added some more cross platform fixes to the code base to help build this thing on more platforms. As a result I was able to build the client &amp;amp; server on free bsd. There are some dynamic linking issues on my build machine though so they don't work. Your mileage may very. If you get it to work shoot me an email and let me know if you did anything special.&lt;br /&gt;&lt;br /&gt;I almost got it to build on the mac but it was unable to link against irrlicht.so and it was complaining about casting to and from some openal typedefs. I haven't had that problem on any other platforms so I'm guessing the typedefs are highly irregular. Either that or the compiler is super strict on mac. It is gcc4 though so I wouldn't think that would be the issue.&lt;br /&gt;&lt;br /&gt;So the short version of the story is windows build great.&lt;br /&gt;Linux should work but I haven't tested it as well as windows.&lt;br /&gt;FreeBSD may work but I wouldn't count on it.&lt;br /&gt;Mac probably won't work unless you do some major hacking. In which case sending me some diffs would be helpful.&lt;br /&gt;&lt;br /&gt;Just like normal I have created a branch in svn for 0.5.0 so those of you wishing to play with relatively stable code can have at it. However keep in mind once I pass a release I'm done with it can move back into development never to return. What I mean is I'm not supporting old branches.&lt;br /&gt;&lt;br /&gt;I didn't make a binary release this time around because there is little point because of the lack of testing on the other platforms and also because this is what I would call a minor milestone. I'm not sure when my next binary release will be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7686859658077339895?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7686859658077339895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/050-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7686859658077339895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7686859658077339895'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/050-released.html' title='0.5.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-9135155195237570160</id><published>2009-07-13T16:08:00.003-04:00</published><updated>2009-07-13T16:11:20.415-04:00</updated><title type='text'>party invite working</title><content type='html'>I finally got the party invite stuff working. The user that sent the invite doesn't get a message telling them yet but it does work and I'm super happy about it. I got so close last night but it wasn't working right and I finally gave up and went to bed.&lt;br /&gt;&lt;br /&gt;Which is funny because I think the last fix I did fixed the problems I was having. Oh well I needed sleep anyway.&lt;br /&gt;&lt;br /&gt;But in any case I'm happy about this working and I thought it was worth blogging about. I still need to implement leaving parties &amp;amp; give the users some sort of indication of people joining/leaving parties.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-9135155195237570160?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/9135155195237570160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/party-invite-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/9135155195237570160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/9135155195237570160'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/party-invite-working.html' title='party invite working'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-2455340336752294242</id><published>2009-07-09T14:38:00.002-04:00</published><updated>2009-07-09T14:52:01.976-04:00</updated><title type='text'>0.4.0 Released</title><content type='html'>Finally, 0.4.0 is ready to go. There is a nice list of improvements as well. As is my custom I slipped a few extras into this release making it the best release yet I hope.&lt;br /&gt;&lt;br /&gt;As promised you can now switch between maps using warp scene nodes. There isn't any validation on the server yet but that will be hard to do until I start implementing the database code.&lt;br /&gt;&lt;br /&gt;I also have greatly improved the camera. For one I moved the camera movement to the right click which seems to be more standard. Also you can look up and down now. I also added a collision response animator to the camera so it will collide with the floor and ceiling(if inside) which keeps it from going through things. It will automatically near in those cases proving much better camera angles without manual tweaking. That should make it easier to explore the game once we have something to explore.&lt;br /&gt;&lt;br /&gt;Also there is a warp command which will allow you to warp to a map based on index. This functionality will be disabled at some point but it is a valuable testing tool for now. I used it early on to test the map changing code as an example.&lt;br /&gt;&lt;br /&gt;The mouse scrolling works a bit better as well because it adjusts for the addition of the vertical movement. So all around the camera works more like people will expect.&lt;br /&gt;&lt;br /&gt;Avery aka GraphicsTinker has added some new models and such but nothing extensive. I blame counter strike. :-)&lt;br /&gt;&lt;br /&gt;This is a source release. I did build on Linux I'm not bundling another binary release this time around. I still haven't gotten a build environment that is usable for mac, bsd, or Open Solaris.&lt;br /&gt;&lt;br /&gt;I have created a 0.4.0 branch for this version. those wishing to play with it only need to get latest from that branch and install the dependencies listed in "Requirements.txt" in the root folder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-2455340336752294242?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/2455340336752294242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/040-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2455340336752294242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/2455340336752294242'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/040-released.html' title='0.4.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6244513279422414944</id><published>2009-07-08T16:58:00.002-04:00</published><updated>2009-07-08T17:05:36.192-04:00</updated><title type='text'>Working Mini-Map</title><content type='html'>I finally got the mini-map to work correctly today. It was more work than I thought. This is mostly due to how weird the position stuff works.&lt;br /&gt;&lt;br /&gt;There is one gotcha with this though. The map has to start at {0,0,0} otherwise the math will be wrong and fail.&lt;br /&gt;&lt;br /&gt;I'm really happy about this I have been working on it for a while and now it finally works. This is sorta like a mini milestone it doesn't add much to the game at this point but still I"m happy about it.&lt;br /&gt;&lt;br /&gt;Ok, now to finish the 0.4.0 stuff I have also been working on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6244513279422414944?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6244513279422414944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/working-mini-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6244513279422414944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6244513279422414944'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/working-mini-map.html' title='Working Mini-Map'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7928182401800549656</id><published>2009-07-05T13:42:00.002-04:00</published><updated>2009-07-05T13:51:24.338-04:00</updated><title type='text'>0.4.0 progress</title><content type='html'>I was able to get the warp command working on the client &amp;amp; server. It allows a player to switch maps. Right now there isn't any validation as with many other features but it does prove that the functionality works. I'm planning on adding some warp locations later. I'm planning on adding the warp locations server side but I would need to stub them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I don't code on Sunday though so further progress will have to wait until tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7928182401800549656?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7928182401800549656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/040-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7928182401800549656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7928182401800549656'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/040-progress.html' title='0.4.0 progress'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1510292449096931248</id><published>2009-07-04T00:58:00.002-04:00</published><updated>2009-07-04T01:04:39.863-04:00</updated><title type='text'>BSD build</title><content type='html'>I woke up this morning and decided I would like to try to build on BSD. I had been planning on holding off so I could focus on features but I got lazy and decided to play with BSD.&lt;br /&gt;&lt;br /&gt;However I have yet to get this think working the way I want. I keep having all of these build errors with the stuff in ports. It reminds me of using the unstable branch in Gentoo. Except I think it is a little worse than that.&lt;br /&gt;&lt;br /&gt;This makes me kind of sad as bsd fans claim it is so great but it seems like it is still behind the curve in terms of packages management. I can't really judge it on the UI because it uses xorg and the standard collection of window managers and such you would use on Linux.&lt;br /&gt;&lt;br /&gt;Oh, well I don't have to like it I'm just trying to get a build out for people that do like it. It may grow on me though. I thought Linux was a pain in I started using it. Of course back then the GUI was useless and you had to use command line stuff for everything important which was hard for a newbie.&lt;br /&gt;&lt;br /&gt;On a lighter note my mapper decided to create a blog.&lt;br /&gt;http://graphicstinker.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1510292449096931248?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1510292449096931248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/bsd-build.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1510292449096931248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1510292449096931248'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/bsd-build.html' title='BSD build'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6475410639739668431</id><published>2009-07-02T21:25:00.003-04:00</published><updated>2009-07-02T21:27:06.839-04:00</updated><title type='text'>Code Style</title><content type='html'>I published a short code style guide on my website.&lt;br /&gt;&lt;br /&gt;http://sites.google.com/site/enigmarpg/coding-style&lt;br /&gt;&lt;br /&gt;It isn't in depth but people tend to stop reading after the first page or so anyway. That should be helpful if anyone wants to contribute to the project. I doubt it at this point but might as well be prepared.&lt;br /&gt;&lt;br /&gt;On a side not I added some info about a few of the clans that will be in the game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6475410639739668431?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6475410639739668431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/code-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6475410639739668431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6475410639739668431'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/code-style.html' title='Code Style'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1586102471432188076</id><published>2009-07-02T03:47:00.002-04:00</published><updated>2009-07-02T03:52:05.682-04:00</updated><title type='text'>MiniMap</title><content type='html'>I added a mini-map window to the game. It pulls the mini-map image based on an attribute of a map entry in the map configuration file. I thought about auto generating the mini-map from a camera positioned above the map but this would be expensive performance wise. Also some maps probably shouldn't have mini-maps for example a maze. Also I wouldn't want monsters, players and such to render on the mini-map at least not their models. Maybe a red dot or something.&lt;br /&gt;&lt;br /&gt;Anyway currently it doesn't track your current position or the position of anything else. So it isn't all that useful but it does give you an overview of the map your on if the mini-map image exists and is in the configuration file.&lt;br /&gt;&lt;br /&gt;This isn't really required for 0.4.0 but it is one of those fun extras I throw in because it was fun to develop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1586102471432188076?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1586102471432188076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/07/minimap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1586102471432188076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1586102471432188076'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/07/minimap.html' title='MiniMap'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8715775110739848679</id><published>2009-06-30T17:40:00.002-04:00</published><updated>2009-06-30T17:46:04.002-04:00</updated><title type='text'>0.3.0 Released</title><content type='html'>Finally, the release that some have been waiting for a little bit. In truth I have probably been more excited about this release from a technical stand point because of all the advances required to accomplish the promised functionality.&lt;br /&gt;&lt;br /&gt;The binaries aren't packaged fancy they are just in a 7zip archive but that should work. As mentioned in my previous post I didn't produce a Mac binary like I intended to because of issues with the tools. I may create a binary later from the 0.3.0 branch if the tools show signs of improved stability.&lt;br /&gt;&lt;br /&gt;As always I created a branch for 0.3.0 however the branch doesn't include the license files that were added to the binary packages. These were and afterthought.&lt;br /&gt;&lt;br /&gt;You can of course pull them from the development version at any time. Those are unlikely to change.&lt;br /&gt;&lt;br /&gt;I meant to have this release out earlier but I decided to go see transformers with some friends instead. Oh well whats a couple extra hours of waiting.&lt;br /&gt;&lt;br /&gt;Alright signing out now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8715775110739848679?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8715775110739848679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8715775110739848679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8715775110739848679'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-released.html' title='0.3.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5486780219817963016</id><published>2009-06-30T14:00:00.003-04:00</published><updated>2009-06-30T14:14:32.927-04:00</updated><title type='text'>Mac attack</title><content type='html'>So, anyone checking the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;svn&lt;/span&gt; has noticed I have been making tweaks all over to allow the client &amp;amp; server to build on Mac &amp;amp; Linux.&lt;br /&gt;&lt;br /&gt;Linux was pretty easy at least on Gentoo. I just had to emerge all of the dependencies and boom the headers were all where I needed them. Gentoo is my favorite.&lt;br /&gt;&lt;br /&gt;I had to make a few small tweaks here and there but for the most part it was portable.&lt;br /&gt;&lt;br /&gt;Mac on the other hand has been like pulling teeth the whole way.&lt;br /&gt;&lt;br /&gt;I got a good chunk of the dependencies via fink. If memory serves I had to build all the rest from source which I hate doing manually.  So already at that point I had more work invested in mac then I did for Windows &amp;amp; Linux build environments put together.&lt;br /&gt;&lt;br /&gt;Then came the issues with the Mac version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;codeblocks&lt;/span&gt;. It kept crashing on me so again modifying the project files was like pulling teeth. I actually used a text editor a few times because I was having so many crashes.&lt;br /&gt;&lt;br /&gt;I finally got it to compile sometime around 4:00 AM this morning. However it was still not linking because it wasn't finding the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Irrlicht&lt;/span&gt; library which was clearly in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;linker's&lt;/span&gt; search directory. Ugh!&lt;br /&gt;&lt;br /&gt;So I called it a night and started on it again today. I'm having issues even using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;codeblocks&lt;/span&gt; at this point. As soon as I open it the thing crashes. So here is what I'm thinking. I'm gonna pause my work on the Mac binary because it has more to do with tool trouble than anything else so I'm just gonna wait for the next version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;codeblocks&lt;/span&gt; to come out for Mac.&lt;br /&gt;&lt;br /&gt;I could probably make an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;xcode&lt;/span&gt; project but I don't want to. I really only want to deal with one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;IDE&lt;/span&gt;/compiler. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Xcode&lt;/span&gt; uses &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;gcc&lt;/span&gt; so that wouldn't be a problem but then I would have to maintain two project files for each project. No thanks.&lt;br /&gt;&lt;br /&gt;So anyway those of you looking forward to a Mac release will have to wait a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5486780219817963016?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5486780219817963016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/mac-attack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5486780219817963016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5486780219817963016'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/mac-attack.html' title='Mac attack'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3568489385646603966</id><published>2009-06-27T22:31:00.002-04:00</published><updated>2009-06-27T22:34:34.336-04:00</updated><title type='text'>Few quick fixes.</title><content type='html'>I fixed a server bug that broke whisper again. It was basically just that I wasn't giving the character the user's name. Which is a hack anyway but required until the database stuff gets added.&lt;br /&gt;&lt;br /&gt;Also I made whisper case insensitive so now it is better than ever. I like bonuses.&lt;br /&gt;&lt;br /&gt;Alright I'm done for tonight I should be able to get another update out sometime Monday. No idea how long 0.3.0 will take though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3568489385646603966?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3568489385646603966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/few-quick-fixes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3568489385646603966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3568489385646603966'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/few-quick-fixes.html' title='Few quick fixes.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3490138681742260794</id><published>2009-06-27T21:43:00.002-04:00</published><updated>2009-06-27T21:53:51.590-04:00</updated><title type='text'>0.3.0 is near</title><content type='html'>I finally got the voice chat working as of this writing the code in SVN will now perform the promised 3d voice chat.&lt;br /&gt;&lt;br /&gt;So what is left for 0.3.0 you ask. Well for starters I need to do all of my cross compiling and make sure this thing still builds on Linux. Also I need to make it build on Mac now that I have one to work with.&lt;br /&gt;&lt;br /&gt;I'm sorry to say though that I'm not going to support BSD &amp;amp; Open Solaris. It isn't that I don't want to but I tinkered around with them in a VM and had troubles getting everything I needed installed. Some of the stuff I would probably end up building from source myself.&lt;br /&gt;&lt;br /&gt;And also I know how to compile stuff from source (obviously) I don't want to have to go through building dependencies. Of course if someone is willing to go through all of that work be my guest.&lt;br /&gt;&lt;br /&gt;I'm planning on building on Gentoo Linux for my Linux binary. I haven't decided if I will make an ebuild or not though. Depends entirely on how much work that would be. I wouldn't hold your breath as I have never made an ebuild so it would probably be dificult to produce a good quality one on my first attempt.&lt;br /&gt;&lt;br /&gt;The reason I'm mentioning the version of linux is that there is a good possibility there will be header path differences and such. Also some packages may not exist for your distro of choice so you may have to build from source or something. If you want to make your own binary that is.&lt;br /&gt;&lt;br /&gt;The other thing is I would like to tidy up the UI a bit so it looks a bit better for it's first binary release. First impressions are important after all.&lt;br /&gt;&lt;br /&gt;Alright back to work or sleep I'm not sure I do have church tomorrow and I don't code on Sunday so it may be Monday before I get anything else out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3490138681742260794?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3490138681742260794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-is-near.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3490138681742260794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3490138681742260794'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-is-near.html' title='0.3.0 is near'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8028273683619414424</id><published>2009-06-27T00:40:00.003-04:00</published><updated>2009-06-27T00:49:09.389-04:00</updated><title type='text'>Random crash Frustration.</title><content type='html'>I have been working on getting the voice chat to work and I thought I was close before because I got garbage to come out of the speakers.&lt;br /&gt;&lt;br /&gt;Well come to find out the data was getting big time corrupt. I have since fixed those issues however now I'm crashing when I use the voice chat feature. This is frustration because I get no error messages it just gives up the ghost. That is of course after one or two audio checksums have been taken. So it seems like it almost works twice and bites the dust.&lt;br /&gt;&lt;br /&gt;This makes no sense to me right now. I guess I need to step back from it and take a break. I did take a bit of brake before posting this. I added some slash commands including but not limited to "camp" My buddy Avery informed me that is his favorite mmorpg command so I thought I should add it.&lt;br /&gt;&lt;br /&gt;Slash commands are obiously not all that important at this point but it was a distraction I was hoping for an epiphany or something. Oh well I guess I need to just call it a night and dig in tomorrow when I get the chance.&lt;br /&gt;&lt;br /&gt;I also added a web browser class. The more I think about it the more I realize this is a must have feature for the game. Being able to point a user to an online help page allows a single point for help. Users can them access that information in or out of game. Also it is handy to be able to pull up a browser inside of the game while running full screen.&lt;br /&gt;&lt;br /&gt;I currently run in windowed mode so it isn't a big deal but I know some people who can't stand windowed mode for games.&lt;br /&gt;&lt;br /&gt;I saw someone already built an irrlicht Mozilla embedding example but it is a year old and looks like crap (no offense) I would have to rewrite it from scratch using the same libraries that the author used of course.&lt;br /&gt;&lt;br /&gt;I think the best way to do it would be to implement it as a GUI element. That way you could just throw it inside of a window element.&lt;br /&gt;&lt;br /&gt;Well anyhow sleep time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8028273683619414424?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8028273683619414424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/random-crash-frustration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8028273683619414424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8028273683619414424'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/random-crash-frustration.html' title='Random crash Frustration.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8027457370089598707</id><published>2009-06-26T02:09:00.002-04:00</published><updated>2009-06-26T02:21:41.695-04:00</updated><title type='text'>Voice chat on the way.</title><content type='html'>I'm getting pretty close to getting the voice chat feature to work. That is a good thing as that is the functionality promised for 0.3.0.&lt;br /&gt;&lt;br /&gt;Right now I'm getting sound when I should the problem is the sound is garbage. So I'm thinking that the message is corrupt somehow. The frequency, length, and such are fixed for voice streaming so I don't think it is a bad setting there.&lt;br /&gt;&lt;br /&gt;I suppose I could be capturing from the wrong device or something. That could get interesting.&lt;br /&gt;&lt;br /&gt;Anyway I'm probably gonna hit the sack and work on it tomorrow. I'm getting tired.&lt;br /&gt;&lt;br /&gt;One more thing though I added buffer recycling functionality to sound sources. That will keep streaming from eating up all the xram for those that have it.&lt;br /&gt;&lt;br /&gt;Also as usual I have added my standard set of bug fixes that I have already forgotten. I sure am glad I have source control lol.&lt;br /&gt;&lt;br /&gt;Also I split the sound sources amongst voice chat &amp;amp; misc sounds. The sound sources don't seem to like being switched back and forth between different sound types. That really is a shame though it makes my job that much harder.&lt;br /&gt;&lt;br /&gt;Some of you will have laugh when you see how I split up the sound sources. The number that are sent to the voice chat pool is the total divided by seven multiplied by three.&lt;br /&gt;&lt;br /&gt;As I was coding that Job from the Bible popped into my head. He had seven sons and three daughters. I just double checked. The reference is Job 1:2 if anyone cares.&lt;br /&gt;&lt;br /&gt;So, I guess I should call it the Job algorithm haha. But anyway that should to the trick. Misc sounds get over half that way.&lt;br /&gt;&lt;br /&gt;Alright this is enough work for tonight I'm gonna go shower and sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8027457370089598707?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8027457370089598707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/voice-chat-on-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8027457370089598707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8027457370089598707'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/voice-chat-on-way.html' title='Voice chat on the way.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4833480877856176029</id><published>2009-06-25T20:50:00.002-04:00</published><updated>2009-06-25T21:17:39.266-04:00</updated><title type='text'>Understand then fix.</title><content type='html'>So in programming there is kind of a rule something to the effect don't fix it if you don't understand the problem.&lt;br /&gt;&lt;br /&gt;The idea being if you don't clearly understand the problem you may only make it worse. Breaking this rule can of course end up not fixing the problem, making the problem worse, or create new problems.&lt;br /&gt;&lt;br /&gt;Well the bad news is tonight I broke that rule sorta. I was working on 0.3.0 like a good little programmer and noticed a huge regression. You couldn't see other players on the server. As a matter of fact the server was sending id 0 for all players.&lt;br /&gt;&lt;br /&gt;This has worked fine since 0.1.0 so I was of course doing diffs like mad trying to figure out what I had changed that broke it. And naturally I didn't find it. If this was easy I wouldn't learn as much right lol.&lt;br /&gt;&lt;br /&gt;So I did my normal thing and threw some cout calls in a few places. I know they have these things called debuggers but hey it's how I role. Plus I don't think the debugger in code blocks works very well.&lt;br /&gt;&lt;br /&gt;So anyway I traced it back to one of my enter map functions. The one where it inserts it into the characters collection on a given map. The problem was that it was fine in that function but all functions after it seemed to not get any of the character's properties. So I threw a little cout in that spit out the values from the collection right after insertion.&lt;br /&gt;&lt;br /&gt;Sure enough I got nothing but default values. I was calling insert so it shouldn't have been an issue. However I changed the call to access the nonexistent element via the character id and then assign the character.&lt;br /&gt;&lt;br /&gt;Now for those of you not familiar with the map class from the standard template library when you use [] to access an element that is not there it creates it. So I used that in this case to get my element created.&lt;br /&gt;&lt;br /&gt;The funny thing is that fixed the problem. Why I can't do an insert but using [] and assigning it works I don't know. As for the original problem my best guess is that it was copying the reference into the map and when the function that created the character went out of scope the character was cleaned up.&lt;br /&gt;&lt;br /&gt;So if that is the case maybe the assignment forces the copy operator or something. Oh well it works now and I almost understand it. Silly C++ with your endless quarks.&lt;br /&gt;&lt;br /&gt;But anyway I'm back on track for 0.3.0. This release will take a while. Not only am I adding a major new piece of functionality but I'm planning on putting out binary releases for multiple platforms. This means running test on all of the target platforms before I do my branch.&lt;br /&gt;&lt;br /&gt;That said I have made pretty good progress I have most of the voice chat functionality implemented. Of course I'm working out some bugs (and by bugs I mean it doesn't work at all but doesn't throw any exceptions) but the basics are there.&lt;br /&gt;&lt;br /&gt;Alright that is all for now I'm thinking about some cheesy pork rinds mmm salt covered fat with salty fat on top of it nomnomnom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4833480877856176029?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4833480877856176029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/understand-then-fix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4833480877856176029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4833480877856176029'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/understand-then-fix.html' title='Understand then fix.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8576958795061333416</id><published>2009-06-24T00:20:00.002-04:00</published><updated>2009-06-24T00:26:40.996-04:00</updated><title type='text'>0.2.0 Released</title><content type='html'>That's right 0.2.0 is now available.&lt;br /&gt;&lt;br /&gt;This is another source release but I plan to make a binary release for 0.3.0. That is the plan anyway.&lt;br /&gt;&lt;br /&gt;Now for the nuts &amp;amp; bolts. In 0.2.0 you can now use local chat to talk to all the users on the same map as you. Currently this means everyone. You can also broadcast to the whole server. Which for the time being is basically the same thing as local chat but I won't have to change the code later when that happens. The whisper feature I promised is also there. It even sends the user a message when the user they tried to whisper isn't online or does not exist.&lt;br /&gt;&lt;br /&gt;There are a few other tweaks here and there that have gone into this release but I don't think there are any milestones that got slipped in there.&lt;br /&gt;&lt;br /&gt;As is my custom I have made a branch for this release. I hope this release at least makes a good chat program for someone lol.&lt;br /&gt;&lt;br /&gt;That's all for tonight time for sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8576958795061333416?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8576958795061333416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/020-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8576958795061333416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8576958795061333416'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/020-released.html' title='0.2.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-219114532010382740</id><published>2009-06-21T22:31:00.002-04:00</published><updated>2009-06-21T22:37:21.602-04:00</updated><title type='text'>Fink on Mac OS X</title><content type='html'>After thought here. For those of you who don't know there is a piece of software called fink that installs all of your favorite open source Linux apps on Mac OS X. Or at least a good amount of them.&lt;br /&gt;&lt;br /&gt;Of course there is more to the application than just downloading them. You can actually build them from source if you have apple's dev tools installed. Also it is downloading modified versions of some of the packages that work on Mac OS X. I'm not sure about all the changes they had to make to make all of this work but good job folks.&lt;br /&gt;&lt;br /&gt;It kind of reminds me have gentoo's portage but for Mac OS X. So of course I instantly like it allot lol.&lt;br /&gt;&lt;br /&gt;But anyway I may have some dependencies from fink in my project. I haven't found binary packages for some of my dependencies so I'm thinking I will need to compile them using fink and apple's version of GCC. I think it is basically regular GCC4 though so I should be good to go.&lt;br /&gt;&lt;br /&gt;I'll also have to deal with bundles and all that fun Mac crap. Oh well learning experience. Not as much as my first crash course in Mac development but this one will be more productive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-219114532010382740?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/219114532010382740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/fink-on-mac-os-x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/219114532010382740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/219114532010382740'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/fink-on-mac-os-x.html' title='Fink on Mac OS X'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-6450402991203339548</id><published>2009-06-21T22:04:00.002-04:00</published><updated>2009-06-21T22:31:03.665-04:00</updated><title type='text'>0.3.0 roll out plans</title><content type='html'>I have allot of work to do before I can release 0.3.0. After all I'm only on version 0.1.0 right now. So I'm working toward 0.2.0. Also I plan to put allot more spit and Polish into 0.3.0 because I plan to make binary releases to platforms other than windows. Part of the reason for this is that 0.3.0 will be able to be used as a chat system of sorts. That isn't the ultimate goal but it becomes useful at that point.&lt;br /&gt;&lt;br /&gt;Also it will probably be a while before I do this again so I want to give people something to play with while I'm hard at work on newer versions. Or studying for college if I'm in college by that point. I may not even finish 0.3.0 before I start college although I would really like to.&lt;br /&gt;&lt;br /&gt;I'm thinking about actually implementing the user logic on the server and database so people can actually use it in a live environment. I haven't made up my mind on that yet though because that would take longer.&lt;br /&gt;&lt;br /&gt;Also my mapper is supposed to be back in town soon so the next release may have a nice map to run around in. Also it could be that we end up playing video games and don't do anything. You never know with us. I would say it is 50/50.&lt;br /&gt;&lt;br /&gt;But at any rate I'm on my way to having a mac build environment setup. I'm still not having any luck with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;bsd&lt;/span&gt; or open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;solaris&lt;/span&gt; though. I'm not even sure all of the libraries I need are ported to those platforms.&lt;br /&gt;&lt;br /&gt;The code should be relatively portable so it should be possible for me to build the libraries I need on the target platforms but that seems like a hack. I don't like doing that on systems that have proper package management systems. It should be able to just pull those libraries so I don't have to do that.&lt;br /&gt;&lt;br /&gt;However some of these may simply lack a maintainer but I don't really want to fill that role because this project is enough work as it is without complicating it.&lt;br /&gt;&lt;br /&gt;So at least for 0.3.0 the target platforms will probably be Windows, Linux, and Mac. Those are the three big guys anyway. I may do a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;linux&lt;/span&gt; 32 &amp;amp; 64 bit build but only because I have both laying around and they are the same &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;distro&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;gentoo&lt;/span&gt;) so it would be easy to do once I got it to build for one. Of course I may just make an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ebuild&lt;/span&gt; and see what happens. I mean that could allow me to get feedback from users on other architectures. Something that I haven't tested at all but it would be cool if it worked. I'm sure it would build for the most part and I have been pretty careful about using int32 or size_t instead of like int so all the types should be the correct sizes regardless of word size on the target platform.&lt;br /&gt;&lt;br /&gt;The exception to that is of course the size_t but I'm not passing that across that network that is only for internal values so that will actually be the word size if it is bigger that 32bit. Otherwise it will be 32bit so I know that I will always have 32bit in those cases.&lt;br /&gt;&lt;br /&gt;That should make it pretty safe to use on any platform. There would of course be a performance penalty on 16bit platforms but I don't see those being a popular target.  First of all because they are unlikely to have the graphics hardware to run the game anyway. They maybe have the ability to do the server stuff but I think it is more likely that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;sparc&lt;/span&gt; or x86 systems will be used for the servers. And x86 &amp;amp; x86_64 will probably be the most popular targets for the client.&lt;br /&gt;&lt;br /&gt;The older mac machines will probably be targets as well but I have no plans to support macs that are not running Intel compatible chips.&lt;br /&gt;&lt;br /&gt;But anyway the way this will probably play out is that I will have a source release with my normal branch in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;svn&lt;/span&gt;. Followed with a windows binary release because that is my main development platform.&lt;br /&gt;&lt;br /&gt;Then a week later the others should be out. I will probably be releasing them as I create &amp;amp; test them but I'm giving myself a week because I don't know what kind of issues I'm going to run into.&lt;br /&gt;&lt;br /&gt;On second thought I may just wait until I can build on every platform before making the release because I want the branch to build on all of the platforms.&lt;br /&gt;&lt;br /&gt;Also before I forget I guess there are some stability issues with code blocks on mac so I may end up using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;xcode&lt;/span&gt;. That is fine with me it actually works pretty good from what I can remember.&lt;br /&gt;&lt;br /&gt;I guess early users will need to just get what they need from the trunk &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;lol&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Running a project is hard work specially when you decide to take on something of this scale and support multiple platforms to boot.&lt;br /&gt;&lt;br /&gt;Oh well the next time a company with a team of programmers says they can't support a second platform I'll have every right to call them &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;noobs&lt;/span&gt; &amp;amp; hacks to their face. Although I probably wouldn't &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;haha&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Man after typing on a ergo keyboard for so long this is rough.&lt;br /&gt;&lt;br /&gt;Alright folks that is all for now. Keep an eye on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;svn&lt;/span&gt; and I'll try to get something for you guys to play with out soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-6450402991203339548?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/6450402991203339548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-roll-out-plans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6450402991203339548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/6450402991203339548'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/030-roll-out-plans.html' title='0.3.0 roll out plans'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1103004742527442401</id><published>2009-06-19T01:10:00.003-04:00</published><updated>2009-06-19T01:20:10.929-04:00</updated><title type='text'>Delays</title><content type='html'>As much as I would like to announce ground breaking progress. I haven't been very productive. At least not in regards to the project.&lt;br /&gt;&lt;br /&gt;I have been doing allot of PC repair type stuff. As a result I have also updated my cd case of tools &amp;amp; Operating systems. It now includes a couple flavors of BSD. BSD has always interested me since I heard about it a long time ago but I had never gotten it to install and work.&lt;br /&gt;&lt;br /&gt;That changed recently as I got a PCBSD install to work and it was quite nice. Unfortunately I couldn't get it to use multiple hard disks so I ended up replacing it with open suse.&lt;br /&gt;&lt;br /&gt;Next time I need to install an operating system on a single disk system though PCBSD is a definate possibility.&lt;br /&gt;&lt;br /&gt;As for the project the last progress I almost got basic chat working the other night. I still need some work in the message classes though I think because they don't seem to be working quite right. There are probably some other bugs that I just haven't uncovered yet.&lt;br /&gt;&lt;br /&gt;Also I got myself a mac for college so I'm probably going to be tinkering with that most of tomorrow if it comes. The truth is I also wanted it so I could make Mac releases.&lt;br /&gt;&lt;br /&gt;So the strait dope is I'm about a week behind because of all of this but I guess that happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1103004742527442401?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1103004742527442401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/delays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1103004742527442401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1103004742527442401'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/delays.html' title='Delays'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-444511018025592162</id><published>2009-06-15T20:03:00.002-04:00</published><updated>2009-06-15T20:08:36.924-04:00</updated><title type='text'>0.1.0 Released</title><content type='html'>That's right 0.1.0 is now available. The main features of this release are the ability to fake login select a fake character and move around. Also you can see other players connected to the same server.&lt;br /&gt;&lt;br /&gt;This may not sound like allot but it takes quite allot of effort.&lt;br /&gt;&lt;br /&gt;This is a source only release so if your waiting on a binary release I may wait until 0.3.0. Because at that point it will at least make a good 3d chat program. As of now it isn't possible to communicate really.&lt;br /&gt;&lt;br /&gt;The release is available in source control. I made a branch so this version can be downloaded at any time. I'm going to continue on toward 0.2.0 in the main branch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-444511018025592162?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/444511018025592162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/010-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/444511018025592162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/444511018025592162'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/010-released.html' title='0.1.0 Released'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3766145973387580839</id><published>2009-06-12T01:43:00.002-04:00</published><updated>2009-06-12T01:52:18.221-04:00</updated><title type='text'>Getting close to 0.1.0</title><content type='html'>I haven't gotten a whole lot done the last couple days I have been busy with some work unrelated to the project.&lt;br /&gt;&lt;br /&gt;However I added a small hack to the server that gives characters a fake id. That will allow them to be identified by other clients. Unless I have forgotten something the server is ready for 0.1.0 with the exception of the character creation screen which I plan to drop from the release. Forcing users to create characters that are not stored at all seems like a bother.&lt;br /&gt;&lt;br /&gt;So now the big thing left is creating models for other players that don't have them when the state change packet is received and delete them when said packet has the is leaving property set to true.&lt;br /&gt;&lt;br /&gt;I feel this release is close. Maybe some time this weekend if all goes well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3766145973387580839?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3766145973387580839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/getting-close-to-010.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3766145973387580839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3766145973387580839'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/getting-close-to-010.html' title='Getting close to 0.1.0'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4217981880466115300</id><published>2009-06-10T12:48:00.002-04:00</published><updated>2009-06-10T12:57:20.324-04:00</updated><title type='text'>Holy memory leak batman</title><content type='html'>I found a memory leak. Which is funny given my statement before about there being no known memory leaks.&lt;br /&gt;&lt;br /&gt;Well anyway down to the nuts and bolts. The issue was that even though the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;API&lt;/span&gt; docs for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;enet&lt;/span&gt; say once you pass an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;enet&lt;/span&gt; packet to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;api&lt;/span&gt; to send you don't need to worry about it. As a matter of fact it says you should not use destroy packet on it. However it would appear that it doesn't actually clean up the data in the packet.&lt;br /&gt;&lt;br /&gt;This is unfortunate however now that I know this I can work around it. Right now I'm flushing after the send call and then calling a delete on the pointer in the message union. The flushing ensures it has actually sent it and should be done with it more or less. However at this point I'm kind of guessing it makes a copy of your data. Otherwise it makes no sense that it wouldn't be cleaned up except if it was keeping it in case of a packet loss. In which case it should clean it up after the other other system responds.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But anyway so that memory leak is fixed. There is however a smaller memory leak somewhere else in the client code. However the server appears to have no memory leaks at this time(fingers crossed). The client leak could be about anywhere though I haven't figured out what event it corresponds to but it is relatively infrequent. It could be in one of my custom scene nodes or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4217981880466115300?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4217981880466115300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/holy-memory-leak-batman.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4217981880466115300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4217981880466115300'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/holy-memory-leak-batman.html' title='Holy memory leak batman'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-4984261868828350952</id><published>2009-06-09T23:06:00.002-04:00</published><updated>2009-06-09T23:33:35.138-04:00</updated><title type='text'>Sound Source management.</title><content type='html'>Alright, so guess what I got distracted by a sound source management.&lt;br /&gt;&lt;br /&gt;See, I found out that you can only have a limited number of sound sources. It is limited because each one represents a hardware sound source unless of course your using a software device. But in any case they are a limited resource.&lt;br /&gt;&lt;br /&gt;Now from what I was reading you could have anywhere from like 14 to hundreds. Fun times. Well anyway the general consensus among posts I saw on the topic was that the best way to handle it is to allocate all of your source up front.  Basically create sources until you get an openal error and that is your max. It sounds like a big hack and it is but I see no way to query the api for the max number of supported sources.&lt;br /&gt;&lt;br /&gt;Also if you allocate on demand there is always that chance you won't be able to get a source.&lt;br /&gt;Another thing most of the people agreed on was that you have to create some sort of priority system to handle giving the sources out.&lt;br /&gt;&lt;br /&gt;Well, my solution was to use a priority queue adapter from the STL and over loaded less than operator. A source that isn't doing anything is always lower priority than one that is. And if there are no idle sources a priority value is checked.&lt;br /&gt;&lt;br /&gt;At least that is how it is supposed to work I haven't tested it all that much. My sound plays that's good enough for now. My guess is that the queue won't stay perfectly sorted because the status of the sound source changes in between push and pop calls.&lt;br /&gt;&lt;br /&gt;However All things equal the first playing source will be returned to the end of the idle sources. each additional one will be returned to the end of the idle ones. So in theory the first source used will be the first idle source to be reused. Which should give it plenty of time to do it's thing.&lt;br /&gt;&lt;br /&gt;If it does indeed work out like that then no additional work from me should be required to make this thing work well. I really love reusable code. People who want to rewrite everything should be punched in the face.&lt;br /&gt;&lt;br /&gt;But anyway this new audio system sports from new features as well. I was having problems with alut so I tossed it and now I'm setting up the context &amp;amp; device myself. This allows me to do some fallback stuff to make sure the user gets something even if it is a software device.&lt;br /&gt;&lt;br /&gt;Also I can log when things like that fall through. The main reason I dumped alut though is that the sample loading functions seem to be next to worthless. I was using a deprecated version of one in my OpenAL scene node. I never changed it and that worked fine. However when I tried the shiny new one it figuratively gave me the finger.&lt;br /&gt;&lt;br /&gt;Now part of the issue with the old method was giving it the frequency and such.  Which it should be able to figure out if it is the one loading the header information. But anyway I also didn't want to use something that could be dropped from the api completely at any time.&lt;br /&gt;&lt;br /&gt;So I added sndfile to the project. It is a library for just reading &amp;amp; writing audio files. The author seems more geared toward Linux but there is a windows version and it works pretty good.&lt;br /&gt;&lt;br /&gt;The license is LGPL so you have to open source changes to the library but it is still safe to create closed source projects that link against it.&lt;br /&gt;&lt;br /&gt;I know what your thinking blah blah blah. Well including this library adds support for a desent sized collection of audio file formats including ogg/vorbis. Which by the way I will probably be using primarily.&lt;br /&gt;&lt;br /&gt;Now sndfile doesn't support mp3 for the same reason I'm going to try to avoid it in the project. There are patent issues in some countries. Using an unemcumbered format will serve the project much better as it widens the userbase. Granted this project is only availible in one language but hey it's a start.&lt;br /&gt;&lt;br /&gt;Oh, also I didn't know this but if you have openal in automatic mode it using X-Ram so I'm taking advantage of xram if the computer running it has it. That makes me happy again I love reusable code. Saves so much time. And also makes my code do cool things I didn't think of.&lt;br /&gt;&lt;br /&gt;Oh, before I forget there is one issue that I haven't done anything with. I'm not cleaning up the sources when the application shutsdown. I'm sure killing the context &amp;amp; device does the trick but I feel like a hack relying on that.&lt;br /&gt;&lt;br /&gt;I think I'm gonna sack out early ish tonight may have someone calling about a job sometime this week wouldn't want to miss that call.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-4984261868828350952?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/4984261868828350952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/sound-source-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4984261868828350952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/4984261868828350952'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/sound-source-management.html' title='Sound Source management.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5825547400606800201</id><published>2009-06-06T22:29:00.002-04:00</published><updated>2009-06-06T22:43:19.891-04:00</updated><title type='text'>VirtualBox</title><content type='html'>Ok, for those of you who don't know Virtual Box is an open source virtual machine. Similar to VMware. One notable difference is that they have a free open source version that has 3d acceleration for OpenGL. What that means is for example you could actually play a game in a virtual machine as long as it uses OpenGL and not DirectX.&lt;br /&gt;&lt;br /&gt;The down side is of course that most games these days seem to use DirectX.&lt;br /&gt;&lt;br /&gt;However the game I'm working on can use DirectX or OpenGL via the irrlicht engine. And I'm currently using OpenGL. So what this means for the project is that when the time comes I can install various different operating systems inside different virtual machines and create builds for a wide selection of operating systems and actually test them.&lt;br /&gt;&lt;br /&gt;If I tried to test them without hardware acceleration it would be painfully slow even running bare metal. So inside a virtual machine would be even worse.&lt;br /&gt;&lt;br /&gt;The short version of the story is I can make releases for different operating systems without needing to actually install all of those operating systems on my system.&lt;br /&gt;&lt;br /&gt;http://www.virtualbox.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5825547400606800201?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5825547400606800201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/virtualbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5825547400606800201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5825547400606800201'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/virtualbox.html' title='VirtualBox'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-7977501029969290900</id><published>2009-06-06T21:23:00.002-04:00</published><updated>2009-06-06T21:45:54.197-04:00</updated><title type='text'>Linkers hate me</title><content type='html'>I have been making pretty rapid progress as of late. And because I have been unable to install linux on my main computer I have been developing on windows.&lt;br /&gt;&lt;br /&gt;It has been working just fine but today I decided to check to see if my project still builds on Linux. I mean one of my project goals is to have this thing build on as many platforms as possible and Linux happens to be my operating system  of choice.&lt;br /&gt;&lt;br /&gt;So, um guess what it didn't build at all both the client and server failed.&lt;br /&gt;&lt;br /&gt;The first problem was that I included enet in the project instead of using a library. This was mostly because making the library on windows was a pain in the butt. However that requires a couple windows only libraries to be linked. And of course on the Linux side the linker would fail because it couldn't find either of those libraries.&lt;br /&gt;&lt;br /&gt;So to solve that problem I build the library on the windows side and removed the enet sources from the project. I also modified the linker options. That solved that problem. That worked because I already had the enet package installed on my linux computer.&lt;br /&gt;&lt;br /&gt;Next on the list is the postgresql stuff I added on the server. I used mixed case on the include and of course that isn't correct. So I made it all lower case and installed the postgresql virtual package and it that part worked.&lt;br /&gt;&lt;br /&gt;Now for the real problem. The openSSL stuff that I just added to hash the password wasn't linking. That code is in both the client and server because they both use the login request message.&lt;br /&gt;&lt;br /&gt;See appearently on windows the library is called eay32 and on Linux it is called crypto. Sigh, well as you can imagine this is a bit of a problem. So My solution is not quite as simple as the others.&lt;br /&gt;&lt;br /&gt;I modified my projects for the client and the server and broke it up into 4 targets instead of two. There are now release &amp;amp; debug targets for both win32 &amp;amp; Linux. This allows me to pass different libraries to the linker and also different compiler flags. I can also define things for using in conditional compiling later.&lt;br /&gt;&lt;br /&gt;So now that I have done this you need to switch the one of the linux targets to build on linux and one of the windows targets to build on windows. Previously you could build for either with the same target. However that is now proving to be inpratical.&lt;br /&gt;&lt;br /&gt;So in the end I guess the moral to the story is that the trick to cross platform code has more to do with the linker &amp;amp; compiler than the code. Because I'm linking against cross platform libraries but I have to use the build tools to account for some differences in the envirnments.&lt;br /&gt;&lt;br /&gt;Just so all of you know I'm probably going to be lazy about testing this on platforms other than win32 for a while. Probably at least up until I get 0.3.0 out the door. Thats going to be a while though so don't hold your breath.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-7977501029969290900?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/7977501029969290900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/linkers-hate-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7977501029969290900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/7977501029969290900'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/linkers-hate-me.html' title='Linkers hate me'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-8397783156104602252</id><published>2009-06-06T21:09:00.003-04:00</published><updated>2009-06-06T21:15:09.646-04:00</updated><title type='text'>Memory leak.</title><content type='html'>While showering the other night(aka other morning) I realized that I had a few memory leaks in the message code.&lt;br /&gt;&lt;br /&gt;Before when process message was called it created a new message container of the correct type but it was never cleaned up. Now after it calls the next version of process message I call dispose on it.&lt;br /&gt;&lt;br /&gt;There were a few other fix ups of the same kind I think. I'll have to look at my commit history I don't remember anymore.&lt;br /&gt;&lt;br /&gt;Anyway as of now as far as I know there are no memory leaks. If anyone spots some in my code shoot me an email or something. Fixing such things will only get harder as the code base grows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-8397783156104602252?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/8397783156104602252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/memory-leak.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8397783156104602252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/8397783156104602252'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/memory-leak.html' title='Memory leak.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1517602409213015907</id><published>2009-06-06T01:11:00.002-04:00</published><updated>2009-06-06T01:19:48.557-04:00</updated><title type='text'>Fake Authentication.</title><content type='html'>I actually completed one of the goals needed for 0.1.0 gasp.&lt;br /&gt;&lt;br /&gt;I Got fake authentication added to the client and server. There are of course a few gotchas.&lt;br /&gt;&lt;br /&gt;1. The login screen doesn't force the user to wait for response.&lt;br /&gt;2. The Server always allows it doesn't even look at password.&lt;br /&gt;3. The Client's hash function does nothing right now so passwords are sent in clear text.&lt;br /&gt;4. I'm only setting an is logged in flag. Later I will need the user id so I can poll the database for valid characters.&lt;br /&gt;&lt;br /&gt;But that said implementing this was relatively pain free. That encourages me. I'm hoping that all of the remaining 0.1.0 features will be mostly pain free. I don't see that happening but hey a guy can dream.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1517602409213015907?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1517602409213015907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/fake-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1517602409213015907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1517602409213015907'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/fake-authentication.html' title='Fake Authentication.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-5263938495036919674</id><published>2009-06-05T01:56:00.003-04:00</published><updated>2009-06-05T02:37:12.550-04:00</updated><title type='text'>The New Deal.</title><content type='html'>I'm changing the road map somewhat.&lt;br /&gt;&lt;br /&gt;Chat will no longer be part of 0.1.0 as it will be in the next release.&lt;br /&gt;&lt;br /&gt;I may still have that release and 0.1.0 out before I go back to school but really we are talking about two milestones which should really be in different releases. Plus I don't want to wait that long to make a release.&lt;br /&gt;&lt;br /&gt;So the new road map is a follows.&lt;br /&gt;&lt;br /&gt;0.1.0&lt;br /&gt;    Movement(Player can move around and see other players.)&lt;br /&gt;    Authentication(Player can login although credentials will not be validated.)&lt;br /&gt;    Character Creation(Actually make character creation work.)&lt;br /&gt;0.2.0&lt;br /&gt;    Chat(Players can chat using world chat, broadcast, and whisper.)&lt;br /&gt;0.3.0&lt;br /&gt;    Voice Chat(Players can talk to other players on the same map.)&lt;br /&gt;0.4.0&lt;br /&gt;    Map Change(Players can actually move between maps.)&lt;br /&gt;0.5.0&lt;br /&gt;    Party(Players can form parties and use party chat.)&lt;br /&gt;0.6.0&lt;br /&gt;    Guilds(Players can form guilds and use guild chat.)&lt;br /&gt;0.7.0&lt;br /&gt;    NPC(Players can see and talk to NPC.)&lt;br /&gt;0.8.0&lt;br /&gt;    Quest(Players can pickup and complete quests from NPCs.)&lt;br /&gt;0.9.0&lt;br /&gt;    Monster(Monsters will spawn and can be attacked.)&lt;br /&gt;0.10.0&lt;br /&gt;    Skills(Some basic skills will be implemented also skills will level.)&lt;br /&gt;0.11.0&lt;br /&gt;    Stats(Stats will level when stimulated.)&lt;br /&gt;0.12.0&lt;br /&gt;    Clan(Players will have primary &amp;amp; secondary clan which effect combat.)&lt;br /&gt;0.13.0&lt;br /&gt;    Real Authentication(This means actually checking password against database.)&lt;br /&gt;0.14.0&lt;br /&gt;    Load Maps(Load maps from database. This includes the stuff on them.)&lt;br /&gt;0.15.0&lt;br /&gt;    Load/Save Character (So now it won't go to the bit bucket when you logout.)&lt;br /&gt;0.16.0&lt;br /&gt;    Items(Add a few basic items including a sword of some sort.)&lt;br /&gt;0.17.0&lt;br /&gt;    Real Monster AI (Make them able to attack back and do it well.)&lt;br /&gt;0.18.0&lt;br /&gt;    Encounter Molding (Make spawn's more form fit to the players in the area.)&lt;br /&gt;0.19.0&lt;br /&gt;    Create Setting GUI(Will spit out client.cfg)&lt;br /&gt;0.20.0&lt;br /&gt;    Finish Patcher GUI(Will actually patch.)&lt;br /&gt;0.21.0&lt;br /&gt;    Release Candidate(enough said.)&lt;br /&gt;1.0.0&lt;br /&gt;    First Release(aka party time.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-5263938495036919674?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/5263938495036919674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/new-deal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5263938495036919674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/5263938495036919674'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/new-deal.html' title='The New Deal.'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3123738302567167485</id><published>2009-06-05T01:45:00.002-04:00</published><updated>2009-06-05T01:55:56.801-04:00</updated><title type='text'>Client Config</title><content type='html'>While working out some details in my head regarding the movement logic needed for 0.1.0 I realized that having the server hard coded wasn't going to fly once I was in that phase.&lt;br /&gt;&lt;br /&gt;So, my first thought was ok I'll just read it in from a plain text file. I mean all I need is a host name I don't need anything fancy.&lt;br /&gt;&lt;br /&gt;Of course I realized that wasn't an elegant solution to the problem and before you know it I was coding a configuration class.&lt;br /&gt;&lt;br /&gt;I used the irrlicht built in xml parser so it wasn't that hard to make a nice xml based configuration system. I created the logic for loading server information and for now I'm using the first one it finds as the default.&lt;br /&gt;&lt;br /&gt;Now that worked so well in fact I decided to make the resolution and other display settings configurable. I remember someone else doing something like that on the forum but I think that was in .net and was tied to a GUI. I'm trying to make this in such a way that I can use it in a wxwidgets based Configuration Utility later.&lt;br /&gt;&lt;br /&gt;Much to my surprise it worked beautifully. I didn't even have to spend lots of time debugging it just worked. I was a happy camper.&lt;br /&gt;&lt;br /&gt;So now here is the bottom line to all of this. You can now configure what server you connect to and what display settings are used by modifying the client.cfg file. This means no more rebuilds to test different display settings and no rebuild to switch servers.&lt;br /&gt;&lt;br /&gt;For me this means I don't need the entry in my host file I was using to point the client to the server I wanted. lol I'm such a hack.&lt;br /&gt;&lt;br /&gt;But anyway this may just mark the beginning of more and more run time configuration. I currently have no plans to create the GUI I was talking about or adding more configuration options. But as always I make no promises I get distracted lol.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3123738302567167485?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3123738302567167485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/client-config.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3123738302567167485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3123738302567167485'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/client-config.html' title='Client Config'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-161311604889080393</id><published>2009-06-05T01:08:00.002-04:00</published><updated>2009-06-05T01:23:01.241-04:00</updated><title type='text'>Voice Chat</title><content type='html'>So, guess what I got distracted with. That's right voice chat. I was doing some reading on the OpenAL API and noticed it had support for both streaming and audio capture.&lt;br /&gt;&lt;br /&gt;So of course first thing I think of is voice chat for the game. So in my excitement I pounded out a nice chunk of code related to voice chat.&lt;br /&gt;&lt;br /&gt;The idea of it being that you would hear people within ear shot and OpenAL would take care of the direction modification &amp;amp; volume relative to distance.&lt;br /&gt;&lt;br /&gt;The game's networking code is already designed to be relatively low latency so I should be able to pull this off.  However there are a couple tricks.&lt;br /&gt;&lt;br /&gt;One is Managing all of those OpenAL resources. I'm pretty sure there are a limit to the number of sources etc you can have. I'm not sure if those are just active ones aka ones playing or if it is a hard limit in the API. So I don't know if just creating them in the scene nodes will work like I want it too.&lt;br /&gt;&lt;br /&gt;Second is making my messages efficient.  I believe voip only sends data when it is not dead air. I would like to replicate that as best as I can so it will work correctly. However I don't know how to manipulate the sound buffer. So at least for now the voice chat is started and stopped with the middle mouse button. If the user hits the button right before they speak and lets off right after then it should be relatively efficient with the exception of the dead space in normal speak.&lt;br /&gt;&lt;br /&gt;So now that I got everyone all excited I have some bad news. All of the work I did is worthless until I get all the movement logic completed. Also there is quit allot more work that needs to be done to the actual voice chat code to make it work.&lt;br /&gt;&lt;br /&gt;For one I'm not processing voice chat messages client side and the server isn't even looking at them. Also the Client isn't sending voice chat messages and I haven't created an object to contain the wave data.&lt;br /&gt;&lt;br /&gt;So I have some basic bits in place but not even close to enough to make this thing work yet.&lt;br /&gt;&lt;br /&gt;I plan to implement this the rest of the way in the future but I would like to get my actual 0.1.0 goals completed before I start going for bonus items.&lt;br /&gt;&lt;br /&gt;No guarantee I won't see some cool code and get distracted again though. Sorry folks it's how I roll.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-161311604889080393?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/161311604889080393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/voice-chat.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/161311604889080393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/161311604889080393'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/voice-chat.html' title='Voice Chat'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3305756388099704827</id><published>2009-06-03T17:56:00.002-04:00</published><updated>2009-06-03T18:16:24.555-04:00</updated><title type='text'>PostgreSQL</title><content type='html'>Here I go again getting detracted.&lt;br /&gt;&lt;br /&gt;I deciced to go with PostgreSQL for my database. This desision is in part because the license is commercial friendly but also because the database is very feature rich and capable of handling large amounts of data.&lt;br /&gt;&lt;br /&gt;The general idea being that the game server acts as a state machine of sorts and it saves it's data back to the database on a regular interval. And of course when the player logs out thier data would be saved then as well.&lt;br /&gt;&lt;br /&gt;I've only added some basic stubs for the data access class. I'm planning on just throwing all the database stuff in there. Normaly I would break it out into a class for each type of thing but in the past when I did that I ended up just creating instances of other data access classes in others to handle complex data structures containing other complex data structures.&lt;br /&gt;&lt;br /&gt;The issue is just that there is no clean division because by nature all of the data is linked in one way or another. Now that said I would probably still try to break it up in some way for my own sanity but I'm just using it as a storage backend so simple saving, loading, and creating is all I'm doing. There are no searches or anything of that nature that you would have in a business application.&lt;br /&gt;&lt;br /&gt;That may change but I like the one class approach at least for now.&lt;br /&gt;&lt;br /&gt;I'm gonna have to cut this effort short for obvious reasons but I can at least link some of the stubs elsewhere in the server to the new data access stubs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On a somewhat unrelated note I tracked down and fixed the message corruption issue I was having. So I can start creating more message types.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3305756388099704827?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3305756388099704827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/06/postgresql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3305756388099704827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3305756388099704827'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/06/postgresql.html' title='PostgreSQL'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-1424662431720611876</id><published>2009-05-30T01:12:00.002-04:00</published><updated>2009-05-30T01:20:48.301-04:00</updated><title type='text'>Enet progress</title><content type='html'>I was able to make some progress with enet. My client now connects to the server and I send packets to the server it receives them and responds to them. The movement message anyway.&lt;br /&gt;&lt;br /&gt;I realized one flaw in my response packet though. I'm not currently passing the id of the mesh(player) to move on the screen.&lt;br /&gt;&lt;br /&gt;I'm not actually moving the player based off of server authority yet but that will be the next step. I'm going to have to rethink a few details on the client side.&lt;br /&gt;&lt;br /&gt;The server will need some changes as well so it populates the id when it sends the response.&lt;br /&gt;&lt;br /&gt;I will probably use a set or map on the client with the id as the key and the mesh as the value. Of course all of them will need to be added to the scene but that should be the easy part.&lt;br /&gt;&lt;br /&gt;I'm going to crash early tonight &amp;amp; shave.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-1424662431720611876?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/1424662431720611876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/05/enet-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1424662431720611876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/1424662431720611876'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/05/enet-progress.html' title='Enet progress'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5698798818674322378.post-3610474316986704029</id><published>2009-05-29T05:19:00.002-04:00</published><updated>2009-05-29T05:22:41.978-04:00</updated><title type='text'>Enet troubles</title><content type='html'>So I have enough of my networking code complete that I should be able to make sure it is connecting and report the movement data sent via cout.&lt;br /&gt;&lt;br /&gt;However what actually happens is these events appear to never happen even though both the client and server are polling.&lt;br /&gt;&lt;br /&gt;There was an issue with the port number but I fixed that and still no go.&lt;br /&gt;&lt;br /&gt;The packet deal doesn't surprise me but the connection issue is troubling.&lt;br /&gt;&lt;br /&gt;I need to get some sleep I'm clearly not getting anywhere this morning.&lt;br /&gt;&lt;br /&gt;I hate it when I hit a brick wall with a new library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5698798818674322378-3610474316986704029?l=techtinker.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techtinker.blogspot.com/feeds/3610474316986704029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techtinker.blogspot.com/2009/05/enet-troubles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3610474316986704029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5698798818674322378/posts/default/3610474316986704029'/><link rel='alternate' type='text/html' href='http://techtinker.blogspot.com/2009/05/enet-troubles.html' title='Enet troubles'/><author><name>disks86</name><uri>http://www.blogger.com/profile/16531411505483860113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_2KhQymRffJc/SnJlnr_MFxI/AAAAAAAAABc/AcKpSX4JQjc/S220/Me2009Suit.jpg'/></author><thr:total>0</thr:total></entry></feed>
