<?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-1380608214470097229</id><updated>2011-04-21T19:25:14.459-07:00</updated><category term='Best Practices'/><title type='text'>Forever Coder</title><subtitle type='html'>A blog about coding in the game industry and in particular working with Darkstar.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1380608214470097229.post-6559414097905887948</id><published>2007-06-07T09:05:00.000-07:00</published><updated>2007-06-07T09:06:51.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>SGS Best Practices - Understand what is going on under the hood.</title><content type='html'>Ok, so this isn't really an SGS specific comment, but more of advice when dealing with frameworks in general.&lt;br /&gt;&lt;br /&gt;One thing I've seen from a lot of people is that they get their hands on a new framework, and while they can write applications using it, they really don't understand what is going on under the hood.  SGS isn't magic, but it does help solve a lot of problems inherit in multiuser game server design.  These solutions are not without their limits and prices.  Just like I suggest anyone that uses any of the standard Collection objects be familiar with the general idea of how the data structures they are based on work, I suggest you peer a bit under the hood of SGS and see how it ticks.  This will of course become easier once SGS is made Open Source, but that isn't the only way to get more familiar with SGS.  &lt;br /&gt;&lt;br /&gt;Dig into the class hierarchy and documentation, and try to get a clear picture in your head how it's structured.  Even without code access you can make educated guesses about how it works.  Focus on the main classes: ManagedObject, ManagedReference, Task, Channel, DataManager, TaskManager, and ChannelManager.  Besides classes, get familiar with SGS Transactional contracts, since they bind all these individual classes into atomic actions.  Everything that it accomplishes is grounded in patterns and solutions available to all java developers, not just SGS users.  Don't be afraid to try stuff out, experiment, play around, and remember, write lot's of unit tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1380608214470097229-6559414097905887948?l=forevercoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/6559414097905887948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380608214470097229&amp;postID=6559414097905887948' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/6559414097905887948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/6559414097905887948'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/2007/06/sgs-best-practices-understand-what-is.html' title='SGS Best Practices - Understand what is going on under the hood.'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1380608214470097229.post-6346385341782689379</id><published>2007-06-04T22:12:00.000-07:00</published><updated>2007-06-04T22:15:10.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>SGS Best Practices - Introduction</title><content type='html'>I'm going to be doing a series of posts on what I feel are some SGS Best Practices.  I know a lot of people have asked a lot of questions on the forums, and I'm going to try to summarize some common questions and the answers to those question.  Please remember that SGS is a moving target at the moment.  Except for the SGS team, there really are no expects.  So take everything I write with a grain of salt, and don't hesitate to question what it.  Advice is always nice, but advice followed blindly leads you to ruin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1380608214470097229-6346385341782689379?l=forevercoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/6346385341782689379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380608214470097229&amp;postID=6346385341782689379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/6346385341782689379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/6346385341782689379'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/2007/06/sgs-best-practices-introduction.html' title='SGS Best Practices - Introduction'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1380608214470097229.post-8204429169787313172</id><published>2007-06-03T12:24:00.000-07:00</published><updated>2007-06-03T12:25:55.226-07:00</updated><title type='text'>Darkstar Fanboy</title><content type='html'>Ok, so it all started with GDC 2007.  I had my floor pass, I wondered around a bit, checking out the "scenery" and also the cool projects on the expo floor.  I remember seeing Project Darkstar's booth, a bunch of computers and guys in lab coats.  I'd heard of it in passing, It was inevitable, I'm a java developer at a game company.  To be honest I really wasn't expecting much from Sun, so I didn't even bother walking over to the booth.  &lt;br /&gt;&lt;br /&gt;Now GDC passes, and I'm back hard at work.  Me and my fellow Java engineers from time to time like to talk (and complain) about a variety of tech topics.  This weeks started heading toward the ongoing discussion of how much better a game server would be if written in Java.  As we all know (or should know) Java has hit it's stride in performance, it's on par with anything C/C++ can dish out and in general is much quicker to develop, test, and debug.  I'll wait to another post to rant on this topic, but suffice it to say we all agreed Java might be the future in game server tech if any game company would give it a chance.&lt;br /&gt;&lt;br /&gt;So I'm a curious guy, and I realized I wasn't being true to myself.  Here I am arguing for Java in the game industry and I hadn't even researched or looked at what was available.  I decided to give Darkstar a chance, and read over some of the documentation.  In my mind, I had assumed Sun had taken a standard App server and sort of optimized it for game services.  A re-use of tired old tech, and I wasn't to enthused about the idea.&lt;br /&gt;&lt;br /&gt;Boy was I wrong.  Ok, let me say at the moment I'm still in my Darkstar Fanboy stage.  You know what I'm talking about, you see them at conventions or waiting 2 weeks early for a movie.  They're fun to make fun of yet often quite annoying in person because that's all they talk about.  Yep, that's me at the moment.  I'm sure it will wear off, but I'm guessing I can be annoying with my enthusiasm over Darkstar, hence the whole blog! &lt;br /&gt;&lt;br /&gt;So I guess after all that talk I should at least explain why I like Darkstar.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It's new - It's not a rehash of App server technology, yet it's built on well proven Enterprise methodologies&lt;/il&gt;&lt;br /&gt;&lt;li&gt;It’s Java - proven, fast, rapid development.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;It’s simple - reducing code complexity and bugs.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;It’s reliable - built-in data integrity.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;It’s scalable - designed to scale according to user usage patterns, not forced by geographic boundaries.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;It’s fault tolerant - Individual machines can fail without impact on users.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Extensible API allows integration of custom services.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Transparent - All code is open sourced, meaning we have the power of the community and Sun supporting it.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Versatile Clients - Simple client API supports heterogeneous clients.  C/C++ support coming soon.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Hot Server Patching - with Darkstar and Java, the server can be patched and easily diagnosed without bringing the system down.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Shorter Time to Market - leveraging Darkstar and existing Java technology for rapid development will reduce server development time.&lt;/il&gt;&lt;br /&gt;&lt;li&gt;Talent - untapped market of future Java server developers&lt;/il&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Well that's it in a nutshell.  In short Darkstar rocks.&lt;br /&gt;&lt;br /&gt;Of course I've yet to see it in a production environment.  We have a long way ahead of us before it's widely adopted, but I'm convinced it's one of the best solutions for developing large scale MMO's that's currently available.  It offers features and ease of development that nothing on the market can provide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1380608214470097229-8204429169787313172?l=forevercoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/8204429169787313172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380608214470097229&amp;postID=8204429169787313172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/8204429169787313172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/8204429169787313172'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/2007/06/darkstar-fanboy.html' title='Darkstar Fanboy'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1380608214470097229.post-3568863294297946034</id><published>2007-06-03T12:07:00.000-07:00</published><updated>2007-06-03T12:09:22.317-07:00</updated><title type='text'>What's in a name?</title><content type='html'>Have you ever had a problem naming a project?  Some projects are simple and easy to name, the name is obvious yet sometimes a bit clinical.  But some projects come along and you don't want some thing simple.  You'd rather have an elegant name, that gave a sense of interest to your project.  Take Darkstar for instance.  Personally I think it's a pretty cool name.  But the official title is SGS, Sun Gaming Server.  Yeah, that's a bit dry.  &lt;br /&gt;&lt;br /&gt;So here I sit getting ready to start a new project and I need a name for it.  At first I think about what my project will do.  It's a game framework.  It works within Darkstar.  I want it to be powerful, easy to use, and extensible.  Besides just being an internal company project, I'd like for it to be an open source project as well, at least part of it.  So what do I choose for a name?&lt;br /&gt;&lt;br /&gt;I asked some of my coworkers and we sat around coming up with names.  Some were silly, some were serious, some were corny, and some still make me giggle.  I still don't know if any of them just scream cool or have that wow factor.  So what is a guy to do?  For many writers a thesaurus is a handy helper, but I figured I could do one better so I hit Google Sets.  If you haven't played with it you should check it out.  It's been in Google labs forever.  You basically give it a list of words or phrases and it asks the all knowing internet for similar words or phrases.  It's like a thesaurus on steroids.  Put in "first" and "second" and it will give you "third".  Any set of things and it will try it's best to give you some more similar things.&lt;br /&gt;&lt;br /&gt;So here I sit, with words and phrases gleaned from the 'net and I still don't have a name for my project yet.  Sometimes I think naming is the hardest part, and if I can just pick one the rest of the project will be so much easier.  Maybe I should just pick the first word that comes to mind . . . .&lt;br /&gt;&lt;br /&gt;hmmm . . . somehow "Project Crouton" just doesn't inspire me at the moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1380608214470097229-3568863294297946034?l=forevercoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/3568863294297946034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380608214470097229&amp;postID=3568863294297946034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/3568863294297946034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/3568863294297946034'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/2007/06/what-is-in-name.html' title='What&apos;s in a name?'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1380608214470097229.post-1711417214357895297</id><published>2007-06-03T10:31:00.000-07:00</published><updated>2007-06-03T10:33:32.116-07:00</updated><title type='text'>First time for everything . . .</title><content type='html'>Well, this is my first time to actually write a blog.  Okay, so maybe not my first time, I mean I've had websites before but none used any kind of official "blogging" software.  It's been awhile no matter what, so please be patient as I remember how to communicate in something other than a programming language  . . .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1380608214470097229-1711417214357895297?l=forevercoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://forevercoder.blogspot.com/feeds/1711417214357895297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1380608214470097229&amp;postID=1711417214357895297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/1711417214357895297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1380608214470097229/posts/default/1711417214357895297'/><link rel='alternate' type='text/html' href='http://forevercoder.blogspot.com/2007/06/first-time-for-everything.html' title='First time for everything . . .'/><author><name>CodeMonkey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://cellar.org/pictures/redrobot.gif'/></author><thr:total>0</thr:total></entry></feed>
