<?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-6958310958031547406</id><updated>2012-01-04T22:42:54.850+01:00</updated><category term='angelscript patterns'/><category term='angelscript antipatterns'/><category term='FOnline 2238 Developers Blog'/><category term='web interface'/><category term='testing angelscript'/><category term='factions terminal bases'/><category term='terminal'/><category term='factions'/><category term='management'/><category term='gathering'/><title type='text'>FOnline: 2238</title><subtitle type='html'>FOnline: 2238 Developers Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fonline2238.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3790648636942249868</id><published>2012-01-04T22:38:00.000+01:00</published><updated>2012-01-04T22:42:54.864+01:00</updated><title type='text'>Server forecast for Friday 06-Jan-2012: Wipe with heavy data loss</title><content type='html'>&lt;div style="text-align: justify;"&gt;COMMERCIAL: This server forecast is brought to you by "Rotators", the world leader in donation beggings &amp;amp; solutions!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;FORECAST: on Friday, 6th of January, we may count with some heavy wipe followed by data loss on global scale. The wipe will most probably pass the Central and Western Europe at 09:00 PM (21:00), causing complete data loss for everyone. The unstable post-wipe conditions may last for the next two days, but we believe there will be no unexpected data loss during that time.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We advise you to gear up properly, including protective suits and equipment, take a lot of meds with you and go out. There's no need not to enjoy the next few days until the wipe hits us.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Don't forget to let the Brahmin out and burn down your accomodation!&lt;br /&gt;&lt;br /&gt;Until our next forecast - have a nice time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3790648636942249868?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3790648636942249868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3790648636942249868'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2012/01/server-forecast-for-friday-06-jan-2012.html' title='Server forecast for Friday 06-Jan-2012: Wipe with heavy data loss'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7169338676769087491</id><published>2011-12-23T17:51:00.005+01:00</published><updated>2011-12-23T18:35:52.015+01:00</updated><title type='text'>Please read: a personal appeal from the FOnline: 2238 Developer Lisac Twok</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-mS6JneqM0cg/TvS4Wh-BndI/AAAAAAAAABU/2D4ob3zACho/s1600/test.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/-mS6JneqM0cg/TvS4Wh-BndI/AAAAAAAAABU/2D4ob3zACho/s200/test.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5689374926490934738" /&gt;&lt;/a&gt;&lt;br /&gt;I feel like living the last of my days in a polluted, unclean world, infested with bugs, glitches and crashes.&lt;br /&gt;&lt;br /&gt;Imagine the world where every human being on the planet could wipe their virtual reality as they want, whenever they want. Although we're currently far away from that vision, it doesn't mean we have to give up on our dreams! Wipe, my brothers and sisters, wipe is our reality.&lt;br /&gt;&lt;br /&gt;With the latest features being tested and discussed, with those last bugs being squashed or pulverised with pulse rifle, with each and every stinking breath of the stuck NPCs that break your quests - we are one step closer to our vision! As I write these words, the critical amount of bits and bytes are being accumulated in Paris, waiting to come into contact with a void function that shall release the Big Bang and bring us the next wipe, the salvation! The last of our days are coming, beware!&lt;br /&gt;&lt;br /&gt;Not soon, but very soon, the wipe will bring the end of days as we know it and bring a new life to the brave world that has to be born on the ashes of the old one. Very soon.&lt;br /&gt;&lt;br /&gt;Gather your forces. Wake up your sleeping moles. Send a telegram to Rangers. Take your minigun from the rusty tribal chest. Get your granpa stand by your side. Because, very, very soon...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;It's about to wipe.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7169338676769087491?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7169338676769087491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7169338676769087491'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/12/please-read-personal-appeal-from.html' title='Please read: a personal appeal from the FOnline: 2238 Developer Lisac Twok'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-mS6JneqM0cg/TvS4Wh-BndI/AAAAAAAAABU/2D4ob3zACho/s72-c/test.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-4082777037232756202</id><published>2011-11-19T10:55:00.002+01:00</published><updated>2011-11-19T11:30:29.589+01:00</updated><title type='text'>Wanted: Donations - Dead or Alive</title><content type='html'>&lt;div style="text-align: justify;"&gt;Like the title says, we are in dire need of donations for keeping the server running for the upcoming three months. The deadline is 6th December and the server fundings are currently short for ~80 €. Any amount is greatly appreciated and shall help the developers to concentrate on finishing the new features for the upcoming wipe, rather than to see their efforts being hampered by failing to oblige a quarter invoice for the server maintenance.&lt;br /&gt;&lt;br /&gt;As always, Cvet &amp;amp; Rotators are grateful for your donations, as well as for any other great work and feedback provided by the FOnline communities.&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/6958310958031547406-4082777037232756202?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4082777037232756202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4082777037232756202'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/11/wanted-donations-dead-or-alive.html' title='Wanted: Donations - Dead or Alive'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-993519958695921150</id><published>2011-10-14T13:37:00.000+02:00</published><updated>2011-10-14T15:39:08.025+02:00</updated><title type='text'>Improving the vintage</title><content type='html'>Our old and rusty faction terminal, the very first feature of 2238 could use some improvements. While we started the project few years ago, we couldn't hope for client scripts, nor for easy scripting client-side GUI. The only possibility was to use existing dialog functionalities.&lt;br /&gt;&lt;br /&gt;Over the time it became obvious, that using such 'interface' is really big pain, and the usability of our game is not up to modern standards by a mile or two. But we have left that part unchanged, as there were other things to do (and still are). The upcoming wipe will not change it drastically, but it will surely improve the way factions are managed.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Multiple bases&lt;/h3&gt;&lt;h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-5qdVZaLXFjI/TpddQf4oN0I/AAAAAAAAAfI/JX4x5D544rc/s1600/screen.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://3.bp.blogspot.com/-5qdVZaLXFjI/TpddQf4oN0I/AAAAAAAAAfI/JX4x5D544rc/s320/screen.jpg" alt="" id="BLOGGER_PHOTO_ID_5663097594459993922" border="0" /&gt;&lt;/a&gt;&lt;/h3&gt; There were so many factions created since the last wipe that we've run out of names. Several times. Most of them were only created to alleviate one problem - a faction is meant to have only one base, and all members have access to it, some were created when factions were creating an alliance, and some only because some rich player wanted private workbench and whores.&lt;br /&gt;&lt;br /&gt;Of course, not all problems will be fixed immediately, but we're going to allow one faction to own multiple hideouts.&lt;br /&gt;&lt;h3&gt;Access&lt;/h3&gt;&lt;br /&gt;To simplify things, the access will be resolved on per-rank and per-status basis. This means it won't be possible to do it per-player and per-faction (not yet at least), but still, that simple modification should make life of faction leaders much, much easier, and it should increase the importance of proper rank assignment.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Easier status change&lt;/h3&gt;&lt;br /&gt;We've also added the ability to create list of known factions. Such list is then used to alter the status of all members of said faction at once.It should work well with per-status access for bases. While we still have basic statuses: friend/neutral/enemy/invited, the system should allow for more so we could improve one that. Question is, whether it's gonna be worked on, or whether web-faction-terminal will takeover.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;br /&gt;So why we haven't reworked it from the scratch, possibly creating client-side interface for it? Well, there are few reasons. First of course are, the plans for web faction terminal (which does not rule out easy client-side interface alongside with web interface). The other is that we're still working on GUI internals, our GUI code differs from the default SDK, and we're working on a ways to make them compatible. Sometimes it's good to work on internals first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-993519958695921150?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/993519958695921150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/993519958695921150'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/10/improving-vintage.html' title='Improving the vintage'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-5qdVZaLXFjI/TpddQf4oN0I/AAAAAAAAAfI/JX4x5D544rc/s72-c/screen.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6819193026558564634</id><published>2011-09-14T00:21:00.000+02:00</published><updated>2011-09-14T12:25:34.767+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing angelscript'/><title type='text'>Living without client</title><content type='html'>&lt;a href="http://fonline2238.blogspot.com/2011/09/testing-your-server-scripts.html"&gt;Recently&lt;/a&gt; I've written about the possibility to test the features by writing code, that test them. As I've started doing some refactoring in our code, I immediately wanted to use that feature. Let's see how it worked out...&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Gathering, once again&lt;/h3&gt;&lt;br /&gt;As we already mentioned, we are changing (again) the way resources will be gathered. This of course required yet-another-refactor of that part of code. Last time I was doing this, it was rather boring task: refactor script of one facility, start server, login, spawn some of those facilities, spawn myself needed item, use it, check. Rinse and repeat (sometimes you may hot-reload the script, but you need to still test it manually).&lt;br /&gt;&lt;br /&gt;This time I decided to write set of test cases for every 'use event' that results in resource being acquired. And then, those tests will check the stuff for me, so that I do not even need to fire up the client. Nifty!&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as"&gt;class Plant : IFacility&lt;br /&gt;{&lt;br /&gt;    Item@ item;&lt;br /&gt;    uint16 resource;&lt;br /&gt;    uint batch;&lt;br /&gt;&lt;br /&gt;    Plant(Item&amp;amp; item, uin16 resource, uint batch)&lt;br /&gt;    {&lt;br /&gt;         item.SetEvent(ITEM_EVENT_USE_ON_ME, "_UseItem");&lt;br /&gt;         item.SetEvent(ITEM_EVENT_SKILL, "_UseSkill");&lt;br /&gt;         item.SetEvent(ITEM_EVENT_FINISH, "_Finish");&lt;br /&gt;&lt;br /&gt;        @this.item = item;&lt;br /&gt;        this.batch = batch;&lt;br /&gt;        this.resource = resource;&lt;br /&gt;        this.batch = batch;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    int get_Amount() { return item.Val1; }&lt;br /&gt;    void set_Amount(int val) { item.Val1 = val; }&lt;br /&gt;&lt;br /&gt;    bool UseItem(Critter&amp;amp; cr, Item&amp;amp; usedItem)&lt;br /&gt;    {&lt;br /&gt;        uint pid = usedItem.GetProtoId();&lt;br /&gt;        if(pid == PID_KNIFE || pid == PID_COMBAT_KNIFE || pid == PID_LIL_JESUS_WEAPON || pid == PID_THROWING_KNIFE)&lt;br /&gt;        {&lt;br /&gt;             if(IsOverweighted(cr))&lt;br /&gt;            {&lt;br /&gt;                cr.SayMsg(SAY_NETMSG, TEXTMSG_GAME, STR_OVERWEIGHT);&lt;br /&gt;                return true;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                cr.AddItem(resource, batch);&lt;br /&gt;                cr.SayMsg(SAY_NETMSG, TEXTMSG_TEXT, text);&lt;br /&gt;            }&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        else return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is an excerpt from a class that represents plant facility that we may cut with knife to use the needed resources. It's represented in-game as an item, and we are initializing it in item script in following way:&lt;br /&gt;&lt;pre class="brush: as"&gt;void item_init(Item&amp;amp; item, bool firstTime)&lt;br /&gt;{&lt;br /&gt;    AddFacility(item, Plant(item, PID_FIBER, 2));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It uses the pattern I've described in &lt;a href="http://fonline2238.blogspot.com/2011/08/what-would-be-point-of-having.html"&gt;following &lt;/a&gt;post. The Plant constructor assigns the events to the item:&lt;br /&gt;&lt;pre class="brush: as"&gt;// critter uses skill on facility&lt;br /&gt;bool _UseSkill(Item&amp;amp; item, Critter&amp;amp; cr, int skill)&lt;br /&gt;{&lt;br /&gt;    IFacility@ facility = GetFacility(item);&lt;br /&gt;    if(valid(facility)) return facility.UseSkill(cr, skill);&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;// critter uses item on facility&lt;br /&gt;bool _UseItem(Item&amp;amp; item, Critter&amp;amp; cr, Item@ usedItem)&lt;br /&gt;{&lt;br /&gt;    if(valid(usedItem))&lt;br /&gt;    {&lt;br /&gt;        IFacility@ facility = GetFacility(item);&lt;br /&gt;        if(valid(facility)) return facility.UseItem(cr, usedItem);&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;// :&amp;gt;&lt;br /&gt;void _Finish(Item&amp;amp; item, bool deleted)&lt;br /&gt;{&lt;br /&gt;    IFacility@ facility = GetFacility(item);&lt;br /&gt;    if(valid(facility)) RemoveFacility(item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Testing stuff&lt;/h3&gt;&lt;br /&gt;First thing we would probably like to test is, whether critter really receives the items if using proper tool on that facility.Let's first prepare a helper that's gonna greatly reduce the amount of repeated code:&lt;br /&gt;&lt;pre class="brush: as"&gt;void mock_CritterAddItem(Critter&amp;amp; cr, uint16 pid, uint count)&lt;br /&gt;{&lt;br /&gt;    CallExpectation("CritterAddItem_" + pid + "_" + count);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Fixture&lt;br /&gt;{&lt;br /&gt;    Critter@ cr;&lt;br /&gt;    Item@ tool;&lt;br /&gt;    Item@ item;&lt;br /&gt;&lt;br /&gt;    Fixture(uint16 tool, string@ script)&lt;br /&gt;    {&lt;br /&gt;        @cr = MockCritter(1);&lt;br /&gt;        Mock("Critter::AddItem", "mock_CritterAddItem");&lt;br /&gt;        @this.tool = MockItem(tool);&lt;br /&gt;        @this.item = MockItem(1); // this pid does not matter&lt;br /&gt;        item.SetScript(script);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    IFacility@ get_Facility() { return GetFacility(item); }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And now, the first test:&lt;br /&gt;&lt;pre class="brush: as"&gt;void test_PlantFruitGivesProperResource()&lt;br /&gt;{&lt;br /&gt;    Fixture fix(PID_KNIFE, "prod_plant_fiber@item_init");&lt;br /&gt;    fix.Facility.Amount = 100;&lt;br /&gt;    ExpectOnce("CritterAddItem_" + PID_FIBER + "_" + 2);&lt;br /&gt;&lt;br /&gt;    fix.item.EventUseOnMe(fix.cr, fix.tool);&lt;br /&gt;&lt;br /&gt;    VerifyExpectations();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The most important part is the mock for &lt;span style="font-family: courier new;"&gt;Critter::AddItem&lt;/span&gt;, which just stores the expectation named in following manner: &lt;span style="font-family: courier new;"&gt;CritterAddItem_PID_COUNT&lt;/span&gt;. In above test function, we're preparing a context consisting of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;critter&lt;/li&gt;&lt;li&gt;knife&lt;/li&gt;&lt;li&gt;item representing the plant&lt;/li&gt;&lt;/ul&gt;We invoke the event that would be normally invoked when player or npc would use a knife on the plant (&lt;span style="font-family: courier new;"&gt;EventUseOnMe&lt;/span&gt;). The call process normal behavior, but when it encounters call to &lt;span style="font-family: courier new;"&gt;Critter:AddItem&lt;/span&gt; it calls our mock instead. So we expect that our function is gonna call this function with &lt;span style="font-family: courier new;"&gt;PID_FIBER&lt;/span&gt; and &lt;span style="font-family: courier new;"&gt;2&lt;/span&gt; as parameters. Looking into the code of &lt;span style="font-family: courier new;"&gt;Plant::UseItem&lt;/span&gt;, we see that indeed it should work. &lt;span style="font-family: courier new;"&gt;Plant::batch&lt;/span&gt; is equal to 2, so it's gonna execute exactly what we wanted. Running the test confirms that. Yay!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Code is already bugged&lt;/h3&gt;&lt;br /&gt;Oh great:( I'm writing some code snippets that already contain bugs. So what? Let's fix them, but first let's write a test that confirms them, check if it fails, and then fix the bug and re-check the test:&lt;br /&gt;&lt;pre class="brush: as"&gt;void test_PlantFruitEmpty()&lt;br /&gt;{&lt;br /&gt;    Fixture fix(PID_KNIFE, "prod_plant_fiber@item_init");&lt;br /&gt;    fix.Facility.Amount = 0;&lt;br /&gt;    ExpectNonce("CritterAddItem_" + PID_FIBER);&lt;br /&gt;&lt;br /&gt;    fix.item.EventSkill(fix.cr, -1);&lt;br /&gt;&lt;br /&gt;    VerifyExpectations();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Since there are gonna be no timeouts on characters, the facilities itself should somehow limit the amount of resources that we can obtain (and they will be regenerated over time). We've already had implemented some &lt;span style="font-family: courier new;"&gt;Amount&lt;/span&gt; property in our &lt;span style="font-family: courier new;"&gt;Plant &lt;/span&gt;class, but the code didn't care about it. And this test proves that - we expect that &lt;span style="font-family: courier new;"&gt;AddItem&lt;/span&gt; is not gonna be called with &lt;span style="font-family: courier new;"&gt;PID_FIBER&lt;/span&gt; (and whatever count) at all, but it is, because we do not check for amount left in &lt;span style="font-family: courier new;"&gt;UseItem&lt;/span&gt; method. Let's fix it:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as"&gt;            // ...&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                if(this.Amount &amp;gt; 0)&lt;br /&gt;                {&lt;br /&gt;                    cr.AddItem(resource, batch);&lt;br /&gt;                    cr.SayMsg(SAY_NETMSG, TEXTMSG_TEXT, text);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            // ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And let's run the test again. It succeeds! We've fixed a bug, we tested it. Without doing manual labor.&lt;br /&gt;&lt;br /&gt;The method I'm describing here, really makes me happy developer, as I do not need to spend time on manual testing, and also I am preparing more and more tests that's gonna test whether existing features are still working in the future (you know, some change in other area of code can really break the other part of code, in an unexpected way, better catch at least some of such bugs).&lt;br /&gt;&lt;br /&gt;There is still one bug left in the code (probably much more, I wrote this post without compiler). I'm leaving it for readers to find out and write test code that proves it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6819193026558564634?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6819193026558564634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6819193026558564634'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/09/living-without-client.html' title='Living without client'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-481237594075540339</id><published>2011-09-09T11:04:00.017+02:00</published><updated>2011-09-09T11:45:22.775+02:00</updated><title type='text'>Walking the way of bombs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-mPsHv4vG91Y/TmnZgkBdPfI/AAAAAAAAAE0/qAvenoEx40w/s1600/CrazyBomber.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 91px; height: 127px;" src="http://3.bp.blogspot.com/-mPsHv4vG91Y/TmnZgkBdPfI/AAAAAAAAAE0/qAvenoEx40w/s400/CrazyBomber.gif" alt="" id="BLOGGER_PHOTO_ID_5650286360961826290" border="0" /&gt;&lt;/a&gt;It isn't exactly news that various towns in the wasteland are racked with the crazy nature of suicide bombers. In real life and in FOnline: 2238. This particular way of entertainment is in almost all cases only entertaining for a very small minority of people and due to this, discussions internally and &lt;a href="http://fonline2238.net/forum/index.php?topic=18336.0"&gt;externally&lt;/a&gt; are kind of an unofficial sporting event by now.&lt;br /&gt;&lt;br /&gt;Anyway, to make it short: In the future we want to change the way explosives are working and used in the game, to limit (but not totally remove) the amount of suicide runs. To accomplish this, we internally agreed on the following ideas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Guards can "sniff" activated explosives (C4, Dynamite, and placed Landmines).&lt;/li&gt;&lt;li&gt;The player &lt;span style="font-weight: bold;"&gt;can't&lt;/span&gt; activate explosives (C4, Dynamite, and placing Landmines) whenever a guard is around or if the player is in guard range. (It simply doesn't work, with an entry in the message log.)&lt;/li&gt;&lt;li&gt;The player &lt;span style="font-weight: bold;"&gt;can&lt;/span&gt; activate explosives (C4, Dynamite and placing Landmines on the ground) whenever a guard is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; around or if the player is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; in guard range.&lt;/li&gt;&lt;/ul&gt;The few rules should result in harder suicide runs, without making them impossible, because the players action now will be as the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The PC has to activate the explosives &lt;span style="font-style: italic;"&gt;far away&lt;/span&gt; from guard NPCs,&lt;/li&gt;&lt;li&gt;then the PC has to run up to their targets (NCR bazaar....),&lt;/li&gt;&lt;li&gt;and then &lt;span style="font-style: italic;"&gt;hopefully&lt;/span&gt; explode there before a guard can kill the bomber and take the explosives (disarming them).&lt;/li&gt;&lt;/ol&gt;These simple changes should make the game better than with the current system (guard NPCs attack players with active explosives), which is pretty much useless, as especially dynamite can be triggered in around one second and nobody is able to react on it this fast.&lt;br /&gt;&lt;br /&gt;Of course, the subject is still open for discussion and suggestions in the forum (for example, there were ideas about involving demolition expert profession in this process). Also we aren't quite sure about when exactly we are able to take this over into the game. It probably won't happen before the next wipe, but I'll hope we can push it afterwards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-481237594075540339?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/481237594075540339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/481237594075540339'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/09/walking-way-of-bombs.html' title='Walking the way of bombs'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-mPsHv4vG91Y/TmnZgkBdPfI/AAAAAAAAAE0/qAvenoEx40w/s72-c/CrazyBomber.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-682349353449018413</id><published>2011-09-06T13:37:00.006+02:00</published><updated>2011-09-06T21:24:24.634+02:00</updated><title type='text'>Testing your server scripts</title><content type='html'>I've finally gotten around the way to unit test FOnline scripts. I'm happy about it, though it's still a prototype, and I've only written few tests just to try it out.&lt;br /&gt;&lt;br /&gt;Why test your code and why should we care? Well, it's very popular approach nowadays, to write a code that tests your code, just to be sure everything works as expected (and it's hard to keep track of everything with large codebase). It's common misconception that's not feasible for games, after all, how can you test something as complex as interactive program - and even worse - with multiple players?&lt;br /&gt;&lt;br /&gt;The answer is that you're not writing a code to test your whole game. You're not gonna write a bot that plays it, does all the quests and check if everything still works (and even looks for holes in the walls, though that'd actually be cool). You write the code to test only portions of it, the small pieces, the units. Hence the name: &lt;a href="http://en.wikipedia.org/wiki/Unit_testing"&gt;unit testing&lt;/a&gt;. There's of course lots of materials on it over the internet, so we're not going to dive into the details, I just describe what were the problems, and how we solved it, so that we can finally try unit tests.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Isolating the code&lt;/h3&gt;&lt;br /&gt;When you look at the code you'd like to test, first thing that come to mind is that it's probably too complex and involves too much dependencies to be easily testable. Let's look at the example:&lt;br /&gt;&lt;pre class="brush: as"&gt;bool critter_use_item(Critter&amp;amp; cr, Item&amp;amp; item, Critter@ targetCr, Item@ targetItem, Scenery@ targetScen, uint param)&lt;br /&gt;{&lt;br /&gt;   bool isPlayer=cr.IsPlayer();&lt;br /&gt;   bool useOnSelf=(not valid(targetCr) &amp;amp;&amp;amp; not valid(targetItem) &amp;amp;&amp;amp; not valid(targetScen))&lt;br /&gt;&lt;br /&gt;   // Radio&lt;br /&gt;   if(FLAG(item.Flags,ITEM_RADIO) &amp;amp;&amp;amp; useOnSelf)&lt;br /&gt;   {&lt;br /&gt;       if(isPlayer) EditRadioSettings(cr,item);&lt;br /&gt;           return true;&lt;br /&gt;   }&lt;br /&gt;   // ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Say we need to test that when player uses the radio item, he can edit its settings. Unfortunately, to invoke &lt;span style="font-family:courier new;"&gt;critter_use_skill&lt;/span&gt; int this context we need:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;player&lt;/li&gt;&lt;li&gt;item&lt;/li&gt;&lt;/ul&gt;OK, we may easily spawn radio, but how can we spawn player? Scripting subsystem does not allow us to do this. We could just spawn critter, but then we see script cares about &lt;span style="font-family:courier new;"&gt;IsPlayer()&lt;/span&gt; condition. And then, how do we test whether player actually saw the edit radio interface or not? There is that elusive &lt;span style="font-family:courier new;"&gt;EditRadioSettings &lt;/span&gt;function being invoked there, maybe we could somehow detect that it's been called? But how?&lt;br /&gt;Due to above limitations, unit testing your code seems just not feasible. Surely, there must be some solutions, we just need to go out and learn how the world is doing this.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Mocks&lt;/h3&gt;&lt;br /&gt;The concept is simple. If you need to provide something for the tested code, that's not the part of the test itself but constitutes to the test context, provide a mock. A substitute for real object, a substitute for a function that's gonna allow us to isolate the tested code to the form that may be safely run from within unit test context. As far as above example goes, we would need three mocks:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;player - Critter object with overriden IsPlayer() method that's returning true (another mock actually), or with fields set in a way that &lt;span style="font-family:courier new;"&gt;IsPlayer()&lt;/span&gt; is returning true&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;an item - Item object with fields telling us it's a radio&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;a function to detect that &lt;span style="font-family:courier new;"&gt;EditRadioSettings &lt;/span&gt;has been called&lt;/li&gt;&lt;/ul&gt;But we can't do this in AngelScript. Not without any modifications.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Mock library&lt;/h3&gt;At first I wanted to write some library that would be able to load the script, compile it and execute test functions providing overriden implementations for functions we wanted to mock. However, the AngelScript engine does not allow to re-register any function, so that once we've got our engine set up, we can't register any mocks. We thought of some workarounds, but after some time I decided to modify the server source directly (its angelscript source, to be precise), I suspected it would be very minor modification - so that maintain costs are minimal in the future (keeping it up to date with every server update).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Tests Runner server&lt;/h3&gt;After some fiddling in AngelScript engine code, I found out that I can easily 'redirect' function call to another script function (whether the original call was meant to invoke script function, or native (engine registered) one. Moreover, it turned out that method calls can be simply redirected to function calls (providing the first argument is the object passed), without any extra work! This way call to &lt;span style="font-family:courier new;"&gt;bool Critter::IsDead()&lt;/span&gt; could be handled by &lt;span style="font-family:courier new;"&gt;bool critter_IsDead(Critter&amp;amp; cr)&lt;/span&gt;. Nice!&lt;br /&gt;How does it affect our testing capabilities? To put it simply, we ended up with solution that may be used for testing generally, not only for unit tests. Unit tests are designed to test your small pieces of code out there, but hence we are running our tests in full fledged server, we may as well test the system more broadly, we may check how different pieces interact together - whether it works as a whole or not (though I admit, it wasn't my initial goal - I just wanted simple unit testing facility, not &lt;a href="http://en.wikipedia.org/wiki/Integration_testing"&gt;integration tests&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;But let's get back to the example. Let's start from the last mock we needed, namely, a function substitute for &lt;span style="font-family:courier new;"&gt;EditRadioSettings&lt;/span&gt;. Say, we just want to know, whether the function has been called or not. Let's mock it, and make it so our substitute will indicate that's been called:&lt;br /&gt;&lt;pre class="brush: as"&gt;void mock_EditRadioSettings()&lt;br /&gt;{&lt;br /&gt; CallExpectation("EditRadioSettings");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For above example to work, we need to know what &lt;span style="font-family:courier new;"&gt;CallExpectation &lt;/span&gt;function is doing. It simply increases the call counter, that's stored in some dictionary under the index that's been passed as argument. Later on, we may check that the counter is equal to 1 - that means our function has been called as expected. With such dictionary at hand, we should also define more helpers: &lt;span style="font-family:courier new;"&gt;Expect(funcname)&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;VerifyExpectations()&lt;/span&gt;. First one is used to remember the fact, that we want the function &lt;span style="font-family:courier new;"&gt;funcname &lt;/span&gt;to be called, and the latter (called at the end of the test), will check it. In fact, we should have the ability to specify the numbers of the call we're expecting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;ExpectOnce(funcname)&lt;/span&gt; - &lt;span style="font-family:courier new;"&gt;VerifyExpectations &lt;/span&gt;will succeed only if function has been called once&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Expect(funcname, count)&lt;/span&gt; - success only if called &lt;span style="font-family:courier new;"&gt;count&lt;/span&gt; times&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ExpectNonce(funcname) - success if hasn't been called at all&lt;/li&gt;&lt;/ul&gt;Once we've got our mock and our helpers ready, we're gonna substitute our real function:&lt;br /&gt;&lt;pre class="brush: as"&gt;Mock("EditRadioSettings", "mock_EditRadioSettings")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This function will remember that we want to redirect the call to &lt;span style="font-family:courier new;"&gt;EditRadioSettings&lt;/span&gt; to a function &lt;span style="font-family:courier new;"&gt;mock_EditRadioSettings&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ok, what about other mocks? We said that we want an item, and a critter with specific properties and/or we may provide mocks for their methods as well. For this I've implemented simple &lt;span style="font-family:courier new;"&gt;MockCritter &lt;/span&gt;and &lt;span style="font-family:courier new;"&gt;MockItem&lt;/span&gt; functions that spawn the needed objects with only basic properties filled, but for the case of this example, let's assume those are just clean objects - with all properties zeroed out, rest will be handled by method mocks:&lt;br /&gt;&lt;pre class="brush: as"&gt;bool mock_True()&lt;br /&gt;{&lt;br /&gt; return true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And now, our test function (with needed mocks) in full glory:&lt;br /&gt;&lt;pre class="brush: as"&gt;bool mock_True()&lt;br /&gt;{&lt;br /&gt; return true;&lt;br /&gt;}&lt;br /&gt;void mock_EditRadioSettings()&lt;br /&gt;{&lt;br /&gt; CallExpectation("EditRadioSettings");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void IfPlayerUsesRadioEditRadioSettingsShouldBeCalled()&lt;br /&gt;{&lt;br /&gt; // prepare&lt;br /&gt; Critter@ player = MockCritter();&lt;br /&gt; Mock("Critter::IsPlayer", "mock_True");&lt;br /&gt; Item@ radio = MockItem();&lt;br /&gt; radio.Flags = ITEM_RADIO;&lt;br /&gt; Mock("EditRadioSettings", "mock_EditRadioSettings");&lt;br /&gt;&lt;br /&gt; // call tested function&lt;br /&gt; critter_use_item(cr, radio, null, null, null, 0);&lt;br /&gt;&lt;br /&gt; // verify&lt;br /&gt; VerifyExpectations();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Voila! Now, when we call &lt;span style="font-family:courier new;"&gt;critter_use_item&lt;/span&gt;, it will first call &lt;span style="font-family:courier new;"&gt;Critter::IsPlayer()&lt;/span&gt;, which returns true, even if our Critter structure might have not indicated this, but our mock did. Later, it will check the flags (we've set it on our mocked item) and call the &lt;span style="font-family:courier new;"&gt;EditRadioSettings&lt;/span&gt;, which in fact calls &lt;span style="font-family:courier new;"&gt;mock_EditRadioSettings&lt;/span&gt;. This sets our expectations counter to 1, which is then verified by &lt;span style="font-family:courier new;"&gt;VerifyExpectations&lt;/span&gt;. And then it announces success - we've got our first trivial unit test passed!&lt;br /&gt;&lt;br /&gt;The solution we've got is in very early stage, I'm gonna try and involve it in some of the 2238 code testing. We will see if it turns out to be useful.&lt;br /&gt;&lt;br /&gt;Enough of this mockery for now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-682349353449018413?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/682349353449018413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/682349353449018413'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/09/testing-your-server-scripts.html' title='Testing your server scripts'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1639312481719819088</id><published>2011-08-28T19:10:00.003+02:00</published><updated>2011-08-28T19:11:32.729+02:00</updated><title type='text'>Server issues</title><content type='html'>We're having some problems with the server. We hope to solve it today, but there's no guarantee.&lt;br /&gt;&lt;br /&gt;Thanks for your patience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1639312481719819088?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1639312481719819088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1639312481719819088'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/server-issues.html' title='Server issues'/><author><name>Ghosthack</name><uri>http://www.blogger.com/profile/16339437872106906594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6517983311581865473</id><published>2011-08-25T15:00:00.004+02:00</published><updated>2011-08-25T15:29:54.577+02:00</updated><title type='text'>Faction data - asynchrony</title><content type='html'>This is gonna be another post from the series on new approach to the faction data storage, and most technical one. It's gonna describe process of creating a native extension for FOnline server application, that will allow communication with external database, in our case, CouchDB. It's already implemented and is being tested, so I guess I can safely write about it.&lt;br /&gt;The endeavour was quite an interesting one with lots of crazy ideas, few dead-ends, but eventually the solution turned out to be nice and clean.&lt;br /&gt;&lt;br /&gt;So, for those interested in hacking the guts of server application, extending it to perform things you haven't imagine, let's read!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Data synchronization&lt;/h3&gt;First, we need to make brief summary, of what we want to accomplish. It's been described in previous posts, basically, we need a way to synchronize some game data (players properties, variables) with the data stored in CouchDB. As with every communication, there are two directions we may want to communicate:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;server asks CouchDB for data it needs to synchronize&lt;/li&gt;&lt;li&gt;CouchDB tells server that it may want to synchronize&lt;/li&gt;&lt;/ul&gt;Since we'd rather extend server application, than to write additional tier for CouchDB that would communicate with server, we of course choose the first approach. The data we need to synchronize are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;factions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;players' documents from factions databases&lt;/li&gt;&lt;/ul&gt;So basically we may need two functions to do this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;GetFactions &lt;/span&gt;- gets all factions with their properties&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;GetPlayerFile &lt;/span&gt;- gets player file stored in certain faction database&lt;/li&gt;&lt;/ul&gt;Let's focus now on the first one.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Main factions database&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Z8pFuDiMMbM/TlZNoJtF79I/AAAAAAAAAEs/XQrsVBV_2Kc/s1600/Alien_Archivist.png"&gt;&lt;img style="float:left; margin:0 0 0px 0px;cursor:pointer; cursor:hand;width: 240px; height: 240px;" src="http://2.bp.blogspot.com/-Z8pFuDiMMbM/TlZNoJtF79I/AAAAAAAAAEs/XQrsVBV_2Kc/s400/Alien_Archivist.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5644784535150653394" /&gt;&lt;/a&gt; Info on our fac tions is going to reside in central database, called &lt;span style="font-style: italic;"&gt;fac&lt;/span&gt;&lt;span style="font-style: italic;"&gt;tions&lt;/span&gt;. This database is going to contain documents for each of the registered faction (for simplicity sake, we're not going to write about registering new faction process). Example document:&lt;br /&gt;&lt;pre class="brush: js"&gt;{&lt;br /&gt; "_id": "Brotherhood Of Steel",&lt;br /&gt; "id": 2,&lt;br /&gt; "database": "brotherhood_of_steel"&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The&lt;span style="font-family:courier new;"&gt; _id&lt;/span&gt; field is the unique identifier for the document, so it's also the faction name. The &lt;span style="font-family:courier new;"&gt;id&lt;/span&gt; (without leading underscore) is the number assigned during registration process, and is the number any member of that faction carries on his player character, so that game logic may react appropriately. The &lt;span style="font-family:courier new;"&gt;database &lt;/span&gt;field is the name of the faction database, that reside on the same CouchDB server. It needs to be different than the faction name, cause CouchDB does not allow certain characters in database names.&lt;br /&gt;&lt;br /&gt;In-game, our factions are going to be represented by following class:&lt;br /&gt;&lt;pre class="brush: as"&gt;class Faction&lt;br /&gt;{&lt;br /&gt; int id;&lt;br /&gt; string name;&lt;br /&gt; string database;&lt;br /&gt;&lt;br /&gt; Faction(int id, const string&amp;amp; name, const string&amp;amp; database_name)&lt;br /&gt; {&lt;br /&gt;     this.id = id;&lt;br /&gt;     this.name = name;&lt;br /&gt;     this.database = database_name;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; int get_Id() const { return this.id; }&lt;br /&gt; string get_Name() const { return this.name; }&lt;br /&gt; string get_Database() const { return this.database; }&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And we're storing the objects of that class in some array. So, the only thing we need, is indeed a &lt;span style="font-family:courier new;"&gt;GetFactions&lt;/span&gt; function, that would just fetch data from &lt;span style="font-style: italic;"&gt;factions&lt;/span&gt; database and fill up our array.&lt;br /&gt;&lt;br /&gt;But before we dive into code, let's pause for a moment. It is external storage, it's http protocol. By no means it's going to be fast. We can't just write an extension function that is going to perform http request and return the results so that we can process them further in scripts. It would block the server during the call for at least few miliseconds, but it could even be few seconds, it depends. We need a way for asynchronous calls.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Asynchronicity&lt;/h3&gt;What's that, and why it's not The Police album? The principles of asynchronous calls are very simple. The call is being performed, and the function immediately returns to the place from where it's been called, allowing main thread to resume its job without waiting for function results (while the function that's been called asynchronously is being executed in other thread). Great, but we &lt;span style="font-weight: bold;"&gt;are&lt;/span&gt; interested in those results, so we need a way to operate on them. Traditionally, this issue is being solved by &lt;span style="font-style: italic;"&gt;callbacks&lt;/span&gt;. To put it simply, you are defining another function, that will be called when our function that has been called asynchronously finishes its execution. Such callback takes what's been returned by the asynchronous function as its argument, and perform whatever logic we wanted to be performed on that result in the first place.&lt;br /&gt;&lt;br /&gt;But we're not at home still, let's check it. This is going to be our hypothetical extension function, that is going to perform http requets to CouchDB, and return data for further processing (pseudocode, native):&lt;br /&gt;&lt;pre class="brush: cpp"&gt;void AsyncGetFactions(callback)&lt;br /&gt;{&lt;br /&gt; QueueThreadPoolTask(task, callback);&lt;br /&gt;}&lt;br /&gt;void task(callback)&lt;br /&gt;{&lt;br /&gt; string res = CouchDB::Get("factions");&lt;br /&gt; callback(res);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is how asynchronous functions look like. They only queue the task to be performed later on &lt;span style="font-weight: bold;"&gt;other &lt;/span&gt;thread. The function is taking a callback as an argument, performs http &lt;span style="font-family:courier new;"&gt;GET &lt;/span&gt;request, and calls the callback to operate on data. But we want our callback to be AngelScript function, what we may do about it? Common solution in FOnline scripting, is to pass the name of the function as string(pseudocode, AngelScript):&lt;br /&gt;&lt;pre class="brush: as"&gt;AsyncGetFactions("callback");&lt;br /&gt;&lt;br /&gt;void callback(const string&amp;amp; result)&lt;br /&gt;{&lt;br /&gt; // operate on what's been returned. It's JSON, but we're not going to dive into that matter now&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Familiar? Should be - &lt;span style="font-family:courier new;"&gt;CreateTimeEvent &lt;/span&gt;works this way. We may rework our native extension to something like this:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;&lt;/pre&gt;&lt;pre class="brush: cpp"&gt;void AsyncGetFactions(const string&amp;amp; callback)&lt;br /&gt;void AsyncGetFactions(callback)&lt;br /&gt;{&lt;br /&gt; QueueTask(task, callback);&lt;br /&gt;}&lt;br /&gt;void task(callback)&lt;br /&gt;{&lt;br /&gt; string res = CouchDB::Get("factions");&lt;br /&gt; CallAngelScriptFunction(callback, res);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The last line uses a function, that would fetch the function from AngelScript engine, knowing its name, and would call it passing our result as argument.&lt;br /&gt;&lt;br /&gt;But hey, something is still wrong here. Remember the &lt;span style="font-family:courier new;"&gt;task &lt;/span&gt;is being executed in another thread. Whoops, and a big one. That means our callback function will be executed on that other thread as well, which means simultaneously with whatever other game logic is being executed at that time. This of course may lead to the data corruption, hard to track errors, unexpected behaviour, all that fun. What can we do about it? Traditionally, you may assure that the function that's going to be run in parallel with main code, does not operate on the same variables that the main logic thread does. But that would be very hard to achieve, after all, for our callback we would probably like to reuse whatever code we alredy have in our codebase, and I bet most of it is not thread-safe at all. Is there something that can save our asses in our quest to achieve our goal?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Message passing concurrency&lt;/h3&gt;Some clever folks found out, that to avoid problems with multithreaded code, it's best to avoid the code that's simultaneously executed and operates on same set of data - brilliant, isn't it. Instead, it's better to have totally separated units, and only have them communicating between by passing messages to each other.&lt;br /&gt;Notice, that we may safely run our game logic in parallel with CouchDB http request, as those are totally separated. It's when we want to operate on data returned, when we're running into problems. So why not return the data somehow to the server application, and let server logic be the one responsible for reading it and performing the funcionality? That way, the callback logic will be executed by main thread, so no problems here. For that, we need a queue with messages, that we will be using to exchange data between our asynchronous functions, and the server logic. Then we're gonna be able to leave the message (from the other thread), and fetch the message (from main logic thread) to further operate on it (still in main logic thread). That way, the only structure shared between threads will be the queue itself, but it's not a problem to write such thing to be perfectly thread safe:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;void PushMessage(msg)&lt;br /&gt;{&lt;br /&gt; lock(messages);&lt;br /&gt; messages.push(msg);&lt;br /&gt; unlock(messages);&lt;br /&gt;}&lt;br /&gt;msg FetchMessage()&lt;br /&gt;{&lt;br /&gt; lock(messages);&lt;br /&gt; msg = messages.pop();&lt;br /&gt; unlock(messages);&lt;br /&gt; return msg;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Above pseudocode shows us, how we can synchronize the reads and writes on our queue, to assure that only one thread is accessing them at a time. The way we do it depends on libraries we're gonna use, I do not want to dive into the details here, but the principles are the same:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lock puts a lock on some structure&lt;/li&gt;&lt;li&gt;unlock takes that lock away from it&lt;/li&gt;&lt;li&gt;there may be only one lock at the structure at a given time, so next call to lock (performed from other thread) is going to be blocked and wait till it's being unlocked&lt;/li&gt;&lt;/ul&gt;That gives us thread-safety for the queue. Let's use it now:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: cpp"&gt;void AsyncGetFactions()&lt;br /&gt;{&lt;br /&gt; QueueThreadPoolTask(task, callback);&lt;br /&gt;}&lt;br /&gt;void task()&lt;br /&gt;{&lt;br /&gt;string res = CouchDB::Get("factions");&lt;br /&gt;// iterate over res content, to send message for every faction contained there&lt;br /&gt;for(...)&lt;br /&gt;   PushMessage(new Message(MESSAGE_FACTION, res));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And in script:&lt;br /&gt;&lt;pre class="brush: as"&gt;void UpdateFactions() // we could call it from main@loop() for example&lt;br /&gt;{&lt;br /&gt; AsyncGetFactions();&lt;br /&gt;&lt;br /&gt; while(true)&lt;br /&gt; {&lt;br /&gt;     Message@ msg = FetchMessage();&lt;br /&gt;     if(!valid(msg)) break;&lt;br /&gt;&lt;br /&gt;     if(msg.type == MESSAGE_FACTION)&lt;br /&gt;         ProcessFaction(msg.res);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;void ProcessFaction(string res)&lt;br /&gt;{&lt;br /&gt; // parse our input, determine faction properties, check if already in array&lt;br /&gt; // if not, add it there, otherwise - update&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Notice, that we're calling &lt;span style="font-family:courier new;"&gt;AsyncGetFactions &lt;/span&gt;in each loop and after that we're fetching all messages. But the messages won't probably arrive at that moment, for that we will have to wait. And, while we are waiting, there is no point in calling &lt;span style="font-family:courier new;"&gt;AsyncGetFactions &lt;/span&gt;over and over again. We need to orchestrate somehow our calls, we can do this with simple boolean switches:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as"&gt;bool GettingFactions = false;&lt;br /&gt;&lt;br /&gt;void UpdateFactions()&lt;br /&gt;{&lt;br /&gt;if(!GettingFactions)&lt;br /&gt;    AsyncGetFactions();&lt;br /&gt;&lt;br /&gt;while(true)&lt;br /&gt;{&lt;br /&gt;    Message@ msg = FetchMessage();&lt;br /&gt;    if(!valid(msg)) break;&lt;br /&gt;&lt;br /&gt;    if(msg.type == MESSAGE_FACTION)&lt;br /&gt;        ProcessFaction(msg.res);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It's that simple. But we need a way to notice the game logic about the fact, that our asynchronous extension has finished with getting factions. For this, we will extend it to send yet another message, after all faction messages have been sent:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;void task()&lt;br /&gt;{&lt;br /&gt; string res = CouchDB::Get("factions");&lt;br /&gt; // iterate over res content, to send message for every faction contained there&lt;br /&gt; for(...)&lt;br /&gt;   PushMessage(new Message(MESSAGE_FACTION, res));&lt;br /&gt; PushMessage(new Message(MESSAGE_GET_FACTIONS_DONE));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And then in scripts, we will switch our variable:&lt;br /&gt;&lt;pre class="brush: as"&gt;void UpdateFactions()&lt;br /&gt;{&lt;br /&gt;if(!GettingFactions)&lt;br /&gt;AsyncGetFactions();&lt;br /&gt;&lt;br /&gt;while(true)&lt;br /&gt;{&lt;br /&gt;    Message@ msg = FetchMessage();&lt;br /&gt;    if(!valid(msg)) break;&lt;br /&gt;&lt;br /&gt;    if(msg.type == MESSAGE_FACTION)&lt;br /&gt;        ProcessFaction(msg.res);&lt;br /&gt;    if(msg.type == MESSAGE_GET_FACTIONS_DONE)&lt;br /&gt;        GettingFactions = false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By setting &lt;span style="font-family:courier new;"&gt;GettingFactions &lt;/span&gt;to false, we're indicating that we are no longer running &lt;span style="font-family:courier new;"&gt;AsyncGetFactions &lt;/span&gt;in the background, so we can safely call it again next time. And our loop is chewing whatever messages arrive there all the time. All in parallel, all in thread-safety.&lt;br /&gt;&lt;br /&gt;I hope it was interesting read, maybe not too detailed and with lots of pseudocode, but I did want to show the idea, not the implementation specifics.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6517983311581865473?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6517983311581865473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6517983311581865473'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/faction-data-asynchrony.html' title='Faction data - asynchrony'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Z8pFuDiMMbM/TlZNoJtF79I/AAAAAAAAAEs/XQrsVBV_2Kc/s72-c/Alien_Archivist.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7338905394443254189</id><published>2011-08-21T18:18:00.006+02:00</published><updated>2011-08-21T19:40:09.228+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angelscript antipatterns'/><title type='text'>Tremendous bug!</title><content type='html'>It didn't take you long to find out what was wrong in the solution I presented in &lt;a href="http://fonline2238.blogspot.com/2011/08/what-would-be-point-of-having.html"&gt;http://fonline2238.blogspot.com/2011/08/what-would-be-point-of-having.html&lt;/a&gt;. In fact, you were faster than me fixing it, after the bug introduced by it occured on 2238 server.&lt;br /&gt;&lt;br /&gt;Let's start from beginning. In first iteration of gathering (called &lt;span style="font-style: italic;"&gt;production&lt;/span&gt;) back then, we needed a notion of &lt;span style="font-style: italic;"&gt;facility &lt;/span&gt;that player could use to obtain some resource. A facility could be one item (item pretending to be scenery object actually, it had to be item because of the scripting possibilities), or collection of items. So, a barrel in Modoc was one facility and all the plants somewhere on the crop could be one facility as well. And when the player obtained some resources from it, we needed to apply timeout for it (store it on the item somewhere). Also, we needed even more scripting possibilities - rotgut still for example. Perfect situation to use the wrapping pattern:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as"&gt;interface IFacility&lt;br /&gt;{&lt;br /&gt;bool CheckTimeout();&lt;br /&gt;void Use(Critter&amp;amp; cr);&lt;br /&gt;}&lt;br /&gt;class BarrelFacility : IFacility&lt;br /&gt;{&lt;br /&gt;Item@ barrel;&lt;br /&gt;BarrelFacility(Item&amp;amp; item)&lt;br /&gt;{&lt;br /&gt;    this.item = item;&lt;br /&gt;}&lt;br /&gt;bool CheckTimeout()&lt;br /&gt;{&lt;br /&gt;    return item.Val1 &amp;gt; __FullSecond;&lt;br /&gt;}&lt;br /&gt;void Use(Critter&amp;amp; cr)&lt;br /&gt;{&lt;br /&gt;    if(CheckTimeout())&lt;br /&gt;    {&lt;br /&gt;        // give junk&lt;br /&gt;        item.Val1 = __FullSecond + 60; // 60 seconds of barrel cooldown&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Of course above code is simplification, and we needed to wrap the item for other reasons as well - for example having one facility object per many items, but it's not the point of that post to explain all of it.&lt;br /&gt;So, we were adding the &lt;span style="font-family:courier new;"&gt;BarrelFacility &lt;/span&gt;objects in barrel script:&lt;br /&gt;&lt;pre class="brush: as"&gt;void item_init(Item&amp;amp; item, bool)&lt;br /&gt;{&lt;br /&gt;AddFacility(BarrelFacility(item));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And we had that global array of &lt;span style="font-family:courier new;"&gt;IFacility &lt;/span&gt;objects. I didn't implement removal procedure, simply because, all those facilities were in towns and other fixed locations. So, they were destroyed only when server was being shut down, and were created only on server start. Additionaly, because of the fact there was only few of them, and I think I haven't got any unused &lt;span style="font-family:courier new;"&gt;Item::ValX&lt;/span&gt; field, I haven't been storing the index to the array for fast fetch (like I wrote in previous blogpost on that), but I was iterating over whole array to find proper object. It hadn't got big performance impact, but one day we decided we need to change the system: we introduced facilities into encounters. &lt;span style="font-weight: bold;"&gt;Boom!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, that was it - the &lt;span style="font-family:courier new;"&gt;IFacility &lt;/span&gt;objects were created very often, and never being destroyed. The array was growing and growing, and the fetching procedure was &lt;span style="font-family:courier new;"&gt;O(n)&lt;/span&gt; in complexity instead of &lt;span style="font-family:courier new;"&gt;O(1)&lt;/span&gt;. Terrible stuff. When players started to jumping into encounters, after some time the array was so big that every time someone wanted to use facility, the algorithm had to go through thousands of iterations to find proper index in the array. And the appending was quite painful as well - the underlying &lt;span style="font-family: courier new;"&gt;array &lt;/span&gt;object needs to copy all elements on resize, as it does not reserve space up-front.&lt;br /&gt;&lt;br /&gt;And that caused a lag. The Lag in fact, it was so big that it had destroyed the fun from early beta days. And we haven't fixed it that fast. To put it simply - I forgot that the objects are never removed, and found that out later... A little embarassing, I know, but now, when looking at it after such amount of time - it's quite funny to recall.&lt;br /&gt;&lt;br /&gt;And quite funny story about 2238 development I think.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7338905394443254189?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7338905394443254189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7338905394443254189'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/tremendous-bug.html' title='Tremendous bug!'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3825012470423197998</id><published>2011-08-17T23:55:00.015+02:00</published><updated>2011-08-22T12:55:30.631+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angelscript patterns'/><title type='text'>Wrapping a wrap</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-vVjoIXW6dj8/Tk_9C7DD99I/AAAAAAAAAEk/hpz9ApdOXOo/s1600/cevlenin2.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 230px; height: 290px;" src="http://4.bp.blogspot.com/-vVjoIXW6dj8/Tk_9C7DD99I/AAAAAAAAAEk/hpz9ApdOXOo/s400/cevlenin2.png" alt="" id="BLOGGER_PHOTO_ID_5643007084770621394" border="0" /&gt;&lt;/a&gt;What would be the point of having developer's blog, if there wouldn't be anything on programming. Oh yeah, that's where the things got hot. This is where it works, this is where it fails.&lt;br /&gt;&lt;br /&gt;Since launch of the SDK, probably lots of people started struggling with that fancy scripting language - AngelScript. I remember I did. Experienced some successes, failures, helped finding some bugs, worked my way out through this language, started appreciating it, started even liking it (now I see it was indeed quite a good choice). That's why I think we could from time to time talk about scripting in FOnline SDK, talk about the AngelScript, share some common pitfalls, solutions that worked out good, and even the ones that weren't.&lt;br /&gt;&lt;br /&gt;Of course basics of angelscripting is required, there won't be any tutorials whatsoever.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Objects&lt;/h3&gt;Blah blah blah, everything you can model in your OO language is an object, yeah, we already know that and it sucks (I'm getting a little bit off topic right here). Ok, it does not suck, in fact we're gonna often rely heavily on that fact, and we're gonna put large part of our logic into objects. And we're gonna tie those objects to the in-game objects (critters, items, scenery, maps, locations).&lt;br /&gt;&lt;br /&gt;Say we've got a class for objects that are gonna make us some nice abstraction layer over default &lt;span style="font-family:courier new;"&gt;item &lt;/span&gt;functionality:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as"&gt;class SuperFoo&lt;br /&gt;{&lt;br /&gt; Item@ item;&lt;br /&gt; SuperFoo(Item&amp;amp; item)&lt;br /&gt; {&lt;br /&gt;     @this.item = item;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; void Bar()&lt;br /&gt; {&lt;br /&gt;     item.Val0++;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What's going on here? We wrap an item type in some class, and we're adding some useless code to operate on it? Why the hell would we want it? Well, think about the &lt;span style="font-style: italic; font-weight: bold;"&gt;interface &lt;/span&gt;you've just gained and you can use throughout your scripts. You may now call: &lt;span style="font-family:courier new;"&gt;something.Bar()&lt;/span&gt; instead of &lt;span style="font-family:courier new;"&gt;item.Val0++&lt;/span&gt;, which shows &lt;span style="font-weight: bold;"&gt;what &lt;/span&gt;you want to do, and not &lt;span style="font-weight: bold;"&gt;how &lt;/span&gt;are you going to do. That's the difference if you want to write good code. Less imperative, less verbosity, less bugs (yes, I know that example suck, and you would want that for far more reasons - think about having some additional data, that's not stored on the wrapped item, but it's one of the class' fields - it's not saved anywhere, but still may be useful).&lt;br /&gt;&lt;br /&gt;Wait, did someone say &lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;?&lt;br /&gt;&lt;pre class="brush: as"&gt;interface ISuperFoo&lt;br /&gt;{&lt;br /&gt;    void Bar();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Oh great, now we've got the interface that allows us to call &lt;span style="font-family:courier new;"&gt;Bar()&lt;/span&gt;. And we don't even know what's called in the implementation class (in fact, we don't care, this is what interfaces are for).&lt;br /&gt;&lt;br /&gt;So far so good, but FOnline scripting engine works in a way, that you can attach your functionality to the handlers for default events.&lt;br /&gt;&lt;br /&gt;Let's start of course, from creating an object. If we want to attach it to the item, we need to do this in the &lt;span style="font-family:courier new;"&gt;item_init&lt;/span&gt; handler.&lt;br /&gt;&lt;pre class="brush: as"&gt;void item_init(Item&amp;amp; item, bool firstTime)&lt;br /&gt;{&lt;br /&gt;    SuperFoo@ foo = SuperFoo(item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yeah, whoops. We're gonna loose the reference to the newly created &lt;span style="font-family:courier new;"&gt;foo&lt;/span&gt; object as soon as we leave the function. Unacceptable, we need to store it somewhere.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Object Managers&lt;/h3&gt;This is also common solution. If you've got many objects in your program, you need to manage them somehow, store the references to them, maintain their lifetime, give the references(via interaface) to those interested.&lt;br /&gt;We're gonna use basic generic &lt;span style="font-family:courier new;"&gt;array &lt;/span&gt;type for that.&lt;br /&gt;&lt;pre class="brush: as"&gt;&lt;br /&gt;array&amp;lt;superfoo@&amp;gt; Foos;&lt;br /&gt;&lt;br /&gt;ISuperFoo@ GetFoo(const Item&amp;amp; item)&lt;br /&gt;{&lt;br /&gt; for(uint i = 0; i &amp;lt; Foos.length(); i++)  &lt;br /&gt; {&lt;br /&gt;     if(Foos[i].item.Id == item.Id)&lt;br /&gt;         return Foos[i];&lt;br /&gt; }&lt;br /&gt; return null;&lt;br /&gt;}&lt;br /&gt;void AddFoo(Item item)&lt;br /&gt;{  &lt;br /&gt; Foos.insertLast(SuperFoo(item));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Oh what a horrible piece of code we've just made. Yes, we've got our array, and function to add an object for an item (which we can use in &lt;span style="font-family:courier new;"&gt;item_init&lt;/span&gt;) and get the interface of such object for existing item. But there is that horrible loop in GetFoo, we need to scrap that. The best would be, if we could perform fetch with direct index to our array. We can do that, if we're able to store the index, at which our &lt;span style="font-family:courier new;"&gt;Foo&lt;/span&gt; is located in the array. Let's store it in &lt;span style="font-family:courier new;"&gt;Item::Val1&lt;/span&gt; field:&lt;br /&gt;&lt;pre class="brush: as"&gt;void AddFoo(Item&amp;amp; item)&lt;br /&gt;{&lt;br /&gt;    Foos.insertLast(SuperFoo(item));&lt;br /&gt;    item.Val1 = Foos.length() - 1; // here we've got index to our array stored&lt;br /&gt;}&lt;br /&gt;ISuperFoo@ GetFoo(const Item&amp;amp; item)&lt;br /&gt;{&lt;br /&gt;    if(item.Val1 &amp;lt; Foos.length())&lt;br /&gt;        return Foos[item.Val1];&lt;br /&gt;    else&lt;br /&gt;        return null;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and our item_init will now look like:&lt;br /&gt;&lt;pre class="brush: as"&gt;void item_init(Item&amp;amp; item, bool)&lt;br /&gt;{&lt;br /&gt;    AddFoo(item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, we're now adding our SuperFoo object every time we call item_init, and we can fetch it in any script module (any module that imports this function of course), by obtaining an interface, that's not coupled in any way to the implementation class, nor coupled to the item object. Nifty.&lt;br /&gt;&lt;br /&gt;We can use our interface in following manner:&lt;br /&gt;&lt;pre class="brush: as"&gt;void item_init(Item&amp;amp; item, bool)&lt;br /&gt;{&lt;br /&gt;    AddFoo(item);&lt;br /&gt;    item.SetEvent(ITEM_EVENT_USE, "_FooUse");&lt;br /&gt;}&lt;br /&gt;bool _FooUse(Item&amp;amp; item, Critter&amp;amp; crit, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)&lt;br /&gt;{&lt;br /&gt;    ISuperFoo@ foo = GetFoo(item);&lt;br /&gt;    if(valid(foo)) foo.Bar();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The _FooUse function is where this solution shines. We call our method via interface(we may even pass some parameters given to us by the engine), and we do not care of what's going on inside.&lt;br /&gt;&lt;br /&gt;Now, there is still something wrong with that solution, first who find out what, gets a candy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3825012470423197998?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3825012470423197998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3825012470423197998'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/what-would-be-point-of-having.html' title='Wrapping a wrap'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-vVjoIXW6dj8/Tk_9C7DD99I/AAAAAAAAAEk/hpz9ApdOXOo/s72-c/cevlenin2.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1908183705729740141</id><published>2011-08-16T11:57:00.008+02:00</published><updated>2011-08-16T12:35:10.042+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gathering'/><title type='text'>Gathering? Waiting?</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Oh, that's certainly hot topic. Countless debates, unlimited flames, and cause of infinite hate, frustration, suicides, recession.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Changes are iminent, be it cooldown time reduction or even changing approach to whole system. We'd like to present you couple of ideas that you might want to discuss - yeah like it hasn't been done before countless of times! Jokes aside, let's check it out.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-CcHkFXOkTNU/TkpHkV75bkI/AAAAAAAAAYs/hDusnKjbhx4/s1600/1313490496-clip-144kb.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/-CcHkFXOkTNU/TkpHkV75bkI/AAAAAAAAAYs/hDusnKjbhx4/s320/1313490496-clip-144kb.jpg" alt="" id="BLOGGER_PHOTO_ID_5641400172924202562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Scavenging&lt;/h3&gt;&lt;span style="font-family:verdana;"&gt;During early times of open beta, the gathering for resources worked in slightly different manner. You were looking for various materials on the worldmap, there was a chance for particular resource being generated. After you've acquired it, there was no cooldown. This ended in constant entering/looking around/leaving, which was not only rather boring, but also highly farmable. However, the worldmap and encounters are playing big part in Fallout games, so we could tweak that approach, and use it once again:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;attach a chance to various zones to spawn various materials (be it junk, ore or whatever)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;disable ability to reroll material spawn when you force-enter from worldmap (that means you need to wander around and wait for next encounter check)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;That leaves us with a system in which we still could calculate the average time in which a player is obtaining particular resource: encounter check is being performed every 5 sec, it's easy to calculate values on that.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What are the pros of such approach? &lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;no cooldown - or rather, it's being hidden&lt;/li&gt;&lt;li&gt;corelating materials with encounters, that means, due to the level of difficulty, some zones could spawn high quality resources&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;How about the cons?&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;it's all about encounters once again, may be frustrating to look around with no luck&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Hunting&lt;/h3&gt;&lt;span style="font-family:verdana;"&gt;Well, but we could as well stay with current cooldowns, but we need a way for players to reduce them. Somewhat entertaining way, though that's subjective. For that, we could add items that reduce timeout - say food. You could obtain food by hunting (encounters again), or you could buy it at traders. That's additional task your player needs to do, but that's optional (well, some may find it mandatory, if they want to have the most out of it).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Pros:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;additional activities&lt;/li&gt;&lt;li&gt;a way to reduce cooldown&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;Cons:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;The cooldowns stay (albeit reduced)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;That's all for now. I think we don't need to encourage discussion, it's unavoidable!&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1908183705729740141?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1908183705729740141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1908183705729740141'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/gathering-waiting.html' title='Gathering? Waiting?'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-CcHkFXOkTNU/TkpHkV75bkI/AAAAAAAAAYs/hDusnKjbhx4/s72-c/1313490496-clip-144kb.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-4675823910808964751</id><published>2011-08-14T10:08:00.009+02:00</published><updated>2011-08-18T10:15:41.327+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='factions terminal bases'/><title type='text'>Bases visibility</title><content type='html'>In previous posts I've explained how we're gonna use the documents stored in faction database (a.k.a. &lt;span style="font-style: italic;"&gt;files&lt;/span&gt;) to remember various info, such as what bases are accessible, and what are not the the given player (whether it's a member or not).&lt;br /&gt;&lt;br /&gt;I've focused on synchronization aspect, and I will follow that in this post, as the technical side of it affects how it's gonna work for you.&lt;br /&gt;&lt;br /&gt;This is gonna be our hypothetical player's file:&lt;br /&gt;&lt;pre class="brush: js"&gt;{&lt;br /&gt;"_id": "scypior",&lt;br /&gt;"faction": "The Unity",&lt;br /&gt;"bases": [ "bunker" ]&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this case it's of no importance whether this record is stored in The Unity's database and it's record for a member, or whether it's in some other database and we just want to specify the bases this player can access.&lt;br /&gt;&lt;br /&gt;With such file, server is gonna synchronize its data in following manner:&lt;br /&gt;- compare the incoming file with previous one, detect if any new base appeared on the list, or if any base got removed from that list&lt;br /&gt;- take the list of new entries in &lt;span style="font-family:courier new;"&gt;bases&lt;/span&gt; list, fetch their location id numbers knowing their names (checking if such base really exist and belong to that faction), mark those locations as visible for given player&lt;br /&gt;- take the list of removed entries, do the above magic for location id and mark those locations as invisible&lt;br /&gt;&lt;br /&gt;Notice the difference to the current system, that was caused solely by the technical changes - the visibility is set/unset when the server synchronize the data, while currently, on the following events:&lt;br /&gt;- invited member enters location (visibility set)&lt;br /&gt;- non-member slain in the base location (visibility unset)&lt;br /&gt;&lt;br /&gt;The change in first case, may make players happy actually - no more tedious inviting, everything is done automagically. While I certainly do not like when magic happens in game, it's often needed to avoid frustration (and you've got already shattered nerves...), so it's good.&lt;br /&gt;&lt;br /&gt;The other case however, might also be liked (&lt;span style="font-style: italic;"&gt;oh no, he may come and kill us in our base, better quickly revoke his access!!!&lt;/span&gt;), but I very much liked the fact you needed to kill that unwanted player on your own ground to settle things, so I could think of solution for this, if it is really needed.&lt;br /&gt;&lt;br /&gt;What are your thoughts on that matter?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-4675823910808964751?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4675823910808964751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4675823910808964751'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/bases-visibility.html' title='Bases visibility'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1655266477995735032</id><published>2011-08-11T22:53:00.013+02:00</published><updated>2011-08-12T23:29:03.139+02:00</updated><title type='text'>Revolutionizing Faction Terminal Data</title><content type='html'>&lt;span style="font-family:verdana;"&gt;This is the second part of the series on crazy ideas for factions terminal. In the previous post I described why the changes were needed, also I've shown why we could be potentially interested in externalizing faction databases and make them sitting on top of CouchDB, thus 'freeing' the data and handing it to the  players, while providing html interface for everyone to use.&lt;br /&gt;&lt;br /&gt;Let's think now about the faction terminal/database, and the data that lives there. Basically, it's all about players. The main part of it is just a list of players - members, and non-members as well. Currently, each player record (let's call it &lt;span style="font-style: italic; font-weight: bold;"&gt;file&lt;/span&gt; for future reference) contains:&lt;br /&gt;- faction to which described player belongs to&lt;br /&gt;- status, i.e. his relation to the faction that owns the database&lt;br /&gt;- rank - call it a 'level of importance' for the faction the player belongs to&lt;br /&gt;&lt;br /&gt;Notice how some of that data does not really affect gameworld. For example, the status - if the player is the enemy for your gang, the gameworld (npcs, monsters and other script-driven aspects of the game) does not care about that fact. But should it be the terminal of an NPC faction, then such status matters.&lt;br /&gt;&lt;br /&gt;Ok, so what we've got here is some kind of &lt;span&gt;file&lt;/span&gt;&lt;span&gt; for a player&lt;/span&gt;. Essentially, a document, so it should really be a breeze trying to put that in the CouchDB. Using JSON, as this is the notation used for CouchDB, our file would look like:&lt;br /&gt;&lt;pre class="brush: js"&gt;&lt;br /&gt;{&lt;br /&gt;   "_id": "scypior",&lt;br /&gt;   "faction": "The Unity"  &lt;br /&gt;   "status": "enemy",&lt;br /&gt;   "rank": 4&lt;br /&gt;}*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;*Of course the interface will be reponsible for handling this format, the UI layer should look better:)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I think I don't need to get into the details of JSON format, it really looks intuitive.&lt;br /&gt;&lt;br /&gt;The first field in our file structure is the &lt;span style="font-family:courier new;"&gt;_id&lt;/span&gt;. It's identified in such way, because this is how CouchDB handle documents, it does not allow you to have more than one document with same id. So, choosing a player name for that field seems like good idea in FOnline case.&lt;br /&gt;The other fields - this is where we are trying to describe the faction the player belongs to, his status within our ranks and his rank in his own structures. For purpose of this example, assume it's record for non-member.&lt;br /&gt;&lt;br /&gt;We may fill up our faction database (remember, each faction holds its own database in CouchDB ecosystem) with thousands of files, but what does it really do? Surely, some aspect of it is to store data for players information, but it cannot only serve that case. Game itself might be interested in some of that data. Of course, the most important should be the &lt;span style="font-style: italic;"&gt;faction&lt;/span&gt; field. Ok, what we should do about it? We need a way for a server to fetch the data it's interested in, and react accordingly. We need &lt;span style="font-style: italic;"&gt;synchronization. &lt;/span&gt;And we need the server to decide what kind of data it needs.&lt;br /&gt;&lt;br /&gt;It definitely needs data describing the faction membership. So how we could work with that data? Surely we cannot just fetch the file document from database, and act upon it. We cannot change the player's faction, just because it was said so in some database, can we? Well, in one case: if the player's faction is the same as the one we're currently grabbing data from, and the document on that player states otherwise. That means someone (someone with permission for that database) has changed the faction on his member hence we need to clear faction on that player (not change it to the one that's in file now).&lt;br /&gt;&lt;br /&gt;What about acquiring faction membership? Currently, we need to accept an invitation. This won't change - if player attempts to join some faction, we first are gonna check if his file in that faction database describes his status as &lt;span style="font-style: italic;"&gt;invited&lt;/span&gt;. Then we can proceed with membership change.&lt;br /&gt;&lt;br /&gt;If we're keeping with current system, there is also one field left - &lt;span style="font-style: italic;"&gt;rank&lt;/span&gt;. As we've said previously, it does not really matter when the database belongs to a gang. After all, those files are read by players, so they might want to set those ranks to any values they want. But say, we're now talking about NPC faction database. The mechanics for reputations in game decrease your reputation with regard to some faction, if you attack its members. The amount of reputation deduced depends on the rank of the victim. So in that case, we should impose restrictions on the values that may be used for members in such NPC faction.&lt;br /&gt;&lt;br /&gt;But so far, that's the very same functionality we've already had, let's see how we could implement new functionality.&lt;br /&gt;&lt;br /&gt;Multiple bases. Oh yeah, that's something needed. Say, we acquire the base somehow (it doesn't matter how, whether it will be just 'buying' from some NPC (like now), or whether it will be built like a house from resources (not saying something like that is there:) ). Of course we would like to manage the players, that have access to those bases. To recognize a base, we need to name it. Once we've got a name, we may just fill some additional field in the player file, that's showing us to what bases he's got access to:&lt;br /&gt;&lt;br /&gt;&lt;pre class='brush: js'&gt;&lt;br /&gt;{&lt;br /&gt;    "_id": "scypior",&lt;br /&gt;    "faction": "The Unity",&lt;br /&gt;    "status": "enemy",&lt;br /&gt;    "rank": 4,&lt;br /&gt;    "bases": [ "dacha", "bunker", "depot" ]&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Oh great, not only we are stating that player scypior is the enemy, but also we're giving him an access to our bases? Well, our bad. But that's not important here, we've filled that data, and we want the server to react (show the green circles on his worldmap). For this, the data needs to keep up with the standard of course, otherwise, server won't have any idea what we mean. Synchronization procedure in this case might look like this:&lt;br /&gt;- take the &lt;span style="font-family:courier new;"&gt;bases&lt;/span&gt; list&lt;br /&gt;- check if the names of the bases are describing locations that really belong to given faction we're fetching the file from&lt;br /&gt;- take the player that the file describes&lt;br /&gt;- mark those locations as visible for him&lt;br /&gt;Similarily it should work for bases that are no longer visible for him (some kind of blacklist), it needs to be in different list.&lt;br /&gt;&lt;br /&gt;Ok, so far - great. But you may ask - I was saying a lots about customization, about freeing the data and handing it to the players. But so far, the data was needed to be laid down in some standard format, otherwise server would have not know what to do with it, and hence, such additional data was useless.&lt;br /&gt;&lt;br /&gt;That's true, because players cannot customize the way server works. What they can customize however, is what the terminal is showing and what it does for them, players. I already said that we may put whatever data we want there, display it in the terminal (by customizing some html) - various messages, notes, other info, but that's not very connected to the gameworld. Would be good, if such database would contain info on some gameworld elements that are of interest to us (and within our permissions). Following ideas are hypothetical, but we could just fill the faction database with lots of data and let players decide what to use and how to use.&lt;br /&gt;&lt;br /&gt;For example, imagine we would like to know what items are in which base. If the server would tirelessly help us filling it, we could use such info, and make various inventories etc.&lt;br /&gt;&lt;br /&gt;But that may be a lots of data to cope with. What do you think? What would be useful to see out there in those terminals? Or maybe it's not needed at all?&lt;br /&gt;&lt;br /&gt;PS. Next time, I may describe some inner details of how one can implement communication with such external source, that could be useful for those of you interested in FOnline modding, or maybe I will follow the musings about the customization, we will see...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1655266477995735032?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1655266477995735032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1655266477995735032'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/revolutionizing-faction-terminal-data.html' title='Revolutionizing Faction Terminal Data'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-902175881863590897</id><published>2011-08-10T08:40:00.010+02:00</published><updated>2011-08-10T08:53:47.560+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web interface'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='factions'/><category scheme='http://www.blogger.com/atom/ns#' term='terminal'/><title type='text'>Revolutionizing Faction Terminal</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Faction management, isn't it the main and central thing of this game? Or wait, shouldn't it be? After all it's common knowledge, that it's been called &lt;span style="font-style: italic;"&gt;Faction Mod&lt;/span&gt; from the beginning. And one of the first thing implemented, was that 'handy' faction terminal that allowed you to invite other players to the base, build structures of your gang, store data about outer world (other players).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;But it has not worked as expected, and many things changed since then. First and foremost, it was build around the standard dialog interface functionality, due to the limitations that was imposed during that time. Because of that, managing faction became tedious and annoying task. Also, it turned out that players do not need all those functionality - not always they need to have four ranks for their members, sometimes maybe they would like to have more than one leader, maybe they would also like to have their radio channel changing randomly automatically. Maybe they also would like to have customized messaging system, in which everyone could post a message on the terminal, to be later read by others. Lots of possibilities, but the main issue was usability. That meant it required changes, or even complete overhaul.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Lots of time has passed, and the engine has grown up to the point almost everything is possible (with varying amount of work). But still, we have not improved that core functionality - chasing other stuff, or simply because of lack of time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I started to think about the changes quite time ago, and wanted also to expose that stuff to the world by providing web interface for players (along with account management). First, I wanted to put emphasis on that, so that once registered playername always belong to some account, and it cannot be taken after wipe. And on top of that, I wanted to reimplement the very same functionality we've got in faction terminal, but also expose it to the web interface and store data in some persistent, wipe-safe storage (&lt;span style="font-style: italic;"&gt;SQL&lt;/span&gt; database to be precise).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I started implementing it, but soon I realized it needs some amount of customization, otherwise it might just fail the same way as old system did - providing some useless functionality, being used only partially etc. Of course, I began to think how to inject some flexibility into it - that seemed to be lot of work. Then I stumbled upon something, that entirely changed my ideas and made me to start implementing it almost from a scratch again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Document databases, namely - &lt;a href="http://couchdb.apache.org/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;CouchDB&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To those interested, CouchDB is non-relational database, that allows you to store your data in form of documents in &lt;a href="http://json.org/"&gt;&lt;span style="font-style: italic;"&gt;JSON&lt;/span&gt;&lt;/a&gt; format (Javascript Object Notation). That means - no relations, only documents. Hey - that sounds good, after all, faction terminal is just a database where you store documents, right? In traditional SQL approach, you would have something like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:verdana;"&gt;table &lt;span style="font-style: italic;"&gt;Factions&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;table &lt;span style="font-style: italic;"&gt;Players&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;connected with relation 1 to many. Then, if you want to fetch all players records stored in faction A, you need to join those 2 tables to prepare output records. Oh nice, this is what the world is doing since ages, it works. But why to impose such rigidness on that, in non-relational database, you would just create database for faction A, and store documents about players there. Nice!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;But that's not all. It turned out that CouchDB, because of the fact its protocol is HTTP, is able to serve HTML (and other HTTP content) directly. So I can build web interface (web application) in it, no need for additional tier, no need for additional dependencies. Great? Yeah, I started to love it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Now, another surprise - it's designed in a way, that each web application is stored in some database, right? And previously, we stated that we will do it the way that each faction would have its own database. That means, each faction could have its own, fully customized web interface (of course, default one is gonna be provided). And it requires only HTML + Javascript knowledge.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ok, that all sounds fine, but also it feels a bit dangerous. We are allowing players to store the data they want, and we also want to server (gameworld) react to it in proper way. So we need some way of communication, between CouchDB and FOnline server. Seems hard, but part of it already works.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hopefully, this is the first part of the series about new factions interface. Please note, that's not yet stated when it's gonna be finalized and introduced. To my excuse, I've got real reasons why it's taking so long:)&lt;br /&gt;&lt;br /&gt;In next post we will dissect how it might work and how the data will be synchronized, or maybe I'm gonna throw in some technical details, just for fun.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-902175881863590897?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/902175881863590897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/902175881863590897'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/08/revolutionizing-faction-terminal.html' title='Revolutionizing Faction Terminal'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-8781329227490839569</id><published>2011-04-19T23:24:00.008+02:00</published><updated>2011-04-20T00:18:56.991+02:00</updated><title type='text'>The Vault Dweller dissects FOnline: 2238!</title><content type='html'>&lt;div style="text-align: justify;"&gt;It took months after the launch of FOnline: 2238 before The Vault Dweller of the NMA decided to try it out. One way or another, &lt;a href="http://www.nma-fallout.com/article.php?id=58364"&gt;his FOnline: 2238 review is finally up on the NMA&lt;/a&gt;. The review itself did get old in the meantime, simply because everlasting new features were added recently, while publishing of the review was delayed for the reasons unknown to us - nonetheless, it is good to hear an opinion of such an unbiased reviewer, no matter what.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.nma-fallout.com/article.php?id=58364"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 140px; height: 117px;" src="http://www.nma-fallout.com/fallout1/character/perks/images/FRIENFOE.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We appreciate the effort the VD made in order to write this article; the least we can do to show our appreciation is to read it ourselves, as well as to recommend it to you. In the end, we also do hope that our endeavors shall inspire him during his perilous article writing journeys in the days to come.&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/6958310958031547406-8781329227490839569?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8781329227490839569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8781329227490839569'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/04/vault-dweller-dissects-fonline-2238.html' title='The Vault Dweller dissects FOnline: 2238!'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-4604093208865544978</id><published>2011-02-28T21:03:00.010+01:00</published><updated>2011-02-28T21:20:52.674+01:00</updated><title type='text'>Development Diary: These damn animations</title><content type='html'>So, this one is a small one. Everyone is waiting for the next smaller update-- hey, we too! Anyway, to not abandon this place, here is some insight on what is the reason why it takes and took us so long:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-KuBK_H_6ow4/TWwAwqlyXrI/AAAAAAAAADc/KVeZF_GyETs/s1600/2238devanimation.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-KuBK_H_6ow4/TWwAwqlyXrI/AAAAAAAAADc/KVeZF_GyETs/s320/2238devanimation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5578834874471702194" /&gt;&lt;/a&gt;&lt;br /&gt;Right now, we are fighting some little ugly problems with the animations of killed critters. That is, flipping around on death, not working flamethrower attack animations and so on and so on. This is, in fact, the last thing we have to do until the next update can get out of the cage. We aren't sure if we can handle the flamer attack animation in the short time, but at least killed critters will stop flipping around while getting killed.&lt;br /&gt;&lt;br /&gt;Also as the one or the other might have heard already, we are adding a new armor item. It's a sand colored robe, created by x'il (who also worked on the long hair and bald head dude), some of you might know it already from the Fallout modding community. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-ib_s8w0DGWM/TWwBiKTCC3I/AAAAAAAAADk/fMgUTMbiCc8/s1600/2238devrobe.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-ib_s8w0DGWM/TWwBiKTCC3I/AAAAAAAAADk/fMgUTMbiCc8/s320/2238devrobe.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5578835724796562290" /&gt;&lt;/a&gt;&lt;br /&gt;The robe will be available for cheap money at most of the traders in the wasteland. Let's not be that blue anymore all together! Switch yer bluesuit to the new sandsuit and be a hipster too!&lt;br /&gt;&lt;br /&gt;Additionally and as always, we made lots of map changes, dialog fixes and so on. I'll guess various changes on the maps will be the most obvious ones. You for sure will recognize it in the game after the update has been done.&lt;br /&gt;&lt;br /&gt;So far, that's it for now.&lt;br /&gt;&lt;br /&gt;Stay tuned for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-4604093208865544978?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4604093208865544978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4604093208865544978'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/02/development-diary-this-damn-animations.html' title='Development Diary: These damn animations'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-KuBK_H_6ow4/TWwAwqlyXrI/AAAAAAAAADc/KVeZF_GyETs/s72-c/2238devanimation.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-5778683888655555076</id><published>2011-02-14T15:07:00.003+01:00</published><updated>2011-02-14T15:13:31.658+01:00</updated><title type='text'>WIP: 3D Model Screenshots</title><content type='html'>To post something new in here, we got three screenshots of some of the new work in progress 3d models for you guys. Animations and models are 100% community work.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://media.moddb.com/images/games/1/13/12174/fo-ca.png"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/fo-ca.png" /&gt;&lt;/a&gt; &lt;a href="http://media.moddb.com/images/games/1/13/12174/fo-enviro.png"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/fo-enviro.png" /&gt;&lt;/a&gt; &lt;a href="http://media.moddb.com/images/games/1/13/12174/fo-metl.png"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/fo-metl.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-5778683888655555076?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/5778683888655555076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/5778683888655555076'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2011/02/wip-3d-model-screenshots.html' title='WIP: 3D Model Screenshots'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1980875180472497575</id><published>2010-12-17T17:52:00.004+01:00</published><updated>2010-12-17T18:09:46.135+01:00</updated><title type='text'>Update and a new video by Cryofluid</title><content type='html'>&lt;div style="text-align: justify;"&gt;After weeks of quirky bugs in the town control system, we are happy to notify our faithful community that we finally have managed to squish them. After the server maintenance and the latest restart, as of yesterday, it's not only the town control that has been fixed - the server stability has been vastly improved as well. Due to occasional crashes we had to start an investigation of the problems. The issues have been addressed and certain updates for several OS components were installed, which, in return, have brought some additional stability to the server.&lt;br /&gt;&lt;br /&gt;We would also like to use this opportunity to announce the implementation of the first big faction in 2238: the Brotherhood of Steel. Although somewhat 'modest' update with 'only' 6 new quests and a further faction development line depending on the global events, this is the first step into the new direction the development of this game is about to take. You will be, of course, notified abut any changes in good time, so everyone can test the new feature(s) intensively, providing us the valuable feedback needed for the necessary adjustments in the future.&lt;br /&gt;&lt;br /&gt;So, there is a reason for celebration, right? Just when we needed it most, Cryofluid stroke again with his new video. There is a bit of everything in it: FOnline 2238 factions history, current relations between new and old gangs on the server, a Christmas note, an homage to a great movie (or maybe two), a parody. Not sure what the hell is that all about? &lt;a href="http://fonline2238.net/forum/index.php?topic=11931.0"&gt;Seek the knowledge&lt;/a&gt;. Alternatively, you can always visit &lt;a href="http://www.fonline.fr"&gt;www.fonline.fr&lt;/a&gt; and browse through the virtual room created by our supporters from France. Anyway, long story short - here's the new video we all have been waiting for:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-936cc16b0f2b39a9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v4.nonxt4.googlevideo.com/videoplayback?id%3D936cc16b0f2b39a9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330108896%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5C0C6E474A6DB619EBB332575418AB259B50EA72.6F2199CF212D478405FCFB86B2AEB3E699FD05D4%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D936cc16b0f2b39a9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DM2tsSGnXG5a8kDDOV56nGqrqSzE&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v4.nonxt4.googlevideo.com/videoplayback?id%3D936cc16b0f2b39a9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330108896%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5C0C6E474A6DB619EBB332575418AB259B50EA72.6F2199CF212D478405FCFB86B2AEB3E699FD05D4%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D936cc16b0f2b39a9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DM2tsSGnXG5a8kDDOV56nGqrqSzE&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In other news, the community has been working on various art  presentations, inspired by the world of FOnline 2238, but we shall leave  this for another update. Merry Christmas and see you again with the  next update just before the 2010 ends!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1980875180472497575?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1980875180472497575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1980875180472497575'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/12/update-and-new-video-by-cryofluid.html' title='Update and a new video by Cryofluid'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2307348630464208789</id><published>2010-12-01T18:59:00.004+01:00</published><updated>2010-12-03T13:50:33.631+01:00</updated><title type='text'>FOnline: 2238 among 100 best indie games 2010</title><content type='html'>Even in 2010, FOnline: 2238 has managed once again to find its place among the best indie games of the year. &lt;a href="http://www.indiedb.com/events/2010-indie-of-the-year-awards/top100"&gt;We have made it to the top 100&lt;/a&gt;, being placed in the Massively Multiplayer category along with "MoonForge", thus reaching the second voting phase.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.indiedb.com/events/2010-indie-of-the-year-awards" title="Vote for us in the 2010 Indie of the Year Awards"&gt;&lt;img src="http://media.indiedb.com/images/groups/1/5/4039/ioty_2010_250px.png" border="0" alt="Indie of the Year Awards" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Although it already was a great success for this game to be chosen by the players to be the &lt;a href="http://www.moddb.com/events/2009-mod-of-the-year-awards/features/players-choice-indie-game-of-the-year-2009"&gt;4th best indie game in 2009, thus winning the unofficial title of the best released indie title in the same year&lt;/a&gt;, it would be honour for everyone - the faithful players, the lazy developers, the corrupted game masters, the bizzare community - to confirm how rock-solid FOnline: 2238 is.&lt;br /&gt;&lt;br /&gt;Moreover, I would be personally more than happy if all of us could show it to the current game industry that fun and gaming is not always necessarily pegged to shiny graphics, furious action, sheer amount of explosions or unstoppable corporational propaganda channeled through the modern video gaming "journalism". This is a good opportunity to send them a message that the fun factor is determined by players themselves and not by in-the-face served products and biased reviews. &lt;a href="http://www.youtube.com/watch?v=s-_c6V0U-4k"&gt;Come on you apes, you wanna live forever?!&lt;/a&gt; (Jean Rasczak)&lt;br /&gt;&lt;br /&gt;You can vote for FOnline:2238 on our &lt;a href="http://www.moddb.com/games/fonline-2238"&gt;ModDB&lt;/a&gt;/&lt;a href="http://www.indiedb.com/games/fonline-2238"&gt;IndieDB&lt;/a&gt; profile pages. There is exactly 12 days, 23 hours, 05 minutes and 47 seconds of time at your disposal (and counting).&lt;br /&gt;&lt;br /&gt;As always, thank you for your support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-2307348630464208789?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2307348630464208789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2307348630464208789'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/12/fonline-2238-among-100-best-indie-games.html' title='FOnline: 2238 among 100 best indie games 2010'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7461970069981851983</id><published>2010-11-01T17:19:00.016+01:00</published><updated>2010-11-08T10:36:55.557+01:00</updated><title type='text'>Community strikes back</title><content type='html'>The creativity of our faithful community can't be hindered, it can't be disputed. That very same creativity gave the birth to the new fan video based on the world of FOnline: 2238 - &lt;span style="font-weight:bold;"&gt;On the Way to Broken Hills&lt;/span&gt; by &lt;span style="font-weight:bold;"&gt;Cryofluid&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It is just too cool not to put it here. Enjoy! (High quality versions can be found &lt;a href="http://www.youtube.com/watch?v=7p5rYeOZq-E"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-4e4e4b3aa22e814f" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v8.nonxt3.googlevideo.com/videoplayback?id%3D4e4e4b3aa22e814f%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330108896%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D545E5439412CE291132F89C9B172B4109123A165.1F4BB3E02BA725174B379BF082340E2305322867%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4e4e4b3aa22e814f%26offsetms%3D5000%26itag%3Dw160%26sigh%3DSsjSWqI9BuJuaqWZWO6dlcrVAdc&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v8.nonxt3.googlevideo.com/videoplayback?id%3D4e4e4b3aa22e814f%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330108896%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D545E5439412CE291132F89C9B172B4109123A165.1F4BB3E02BA725174B379BF082340E2305322867%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4e4e4b3aa22e814f%26offsetms%3D5000%26itag%3Dw160%26sigh%3DSsjSWqI9BuJuaqWZWO6dlcrVAdc&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7461970069981851983?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7461970069981851983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7461970069981851983'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/11/community-strikes-back.html' title='Community strikes back'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-9075872630323395580</id><published>2010-08-30T22:28:00.000+02:00</published><updated>2010-08-30T22:29:32.621+02:00</updated><title type='text'>Changelog 30/08/2010 and Server Wipe</title><content type='html'>The summer is over, bugs have been fixed, features have been added. Also the server has been wiped and it is needed to create new characters to play again. In the following, the new changelog can be seen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;FIXES:&lt;/span&gt;&lt;br /&gt;- Many.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;FEATURES:&lt;/span&gt;&lt;br /&gt;- Repairing cars requires tools and more skill than previously.&lt;br /&gt;- Zooming is now possible by holding the Z key combined with using the scroll wheel on your mouse, or alternatively pressing page up/down.&lt;br /&gt;- ~disbandparty away_team can be used to disband only party members that are outside of your current map (not location).&lt;br /&gt;- Followers will now automatically reload their weapon while they are idle (this assumes they have spare ammo of course).&lt;br /&gt;- Added active Vault City turrets.&lt;br /&gt;- Be sure to visit the arena facility north-west of Hub.&lt;br /&gt;- Having active Stealth Boy in one of active slots gives 60 sneak, while having active motion sensor (in an active slot) gives +2 Perception for the purpose of sneakers detection (it's not capped at 10).&lt;br /&gt;- Get purple robes from the Children of the Cathedral.&lt;br /&gt;- Four new quests (Lorraine in Audytum, Elmer at Necropolis watershed, Iguana Pete at he Hub, BoS Initiate trainer at lost Hills)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;CHANGES (WIP):&lt;/span&gt;&lt;br /&gt;- TC base countdown time has been changed to 15 minutes.&lt;br /&gt;- Car prices adjusted, now works in a similar fashion to mercenary prices.&lt;br /&gt;- Car left on the worldmap is visible only to its passengers.&lt;br /&gt;- The travelling speed on the worldmap has been decreased.&lt;br /&gt;- It's a lot easier to avoid encounters while in a car. Outdoorsman is not applied while in a car.&lt;br /&gt;- Namecolorizing works only on players sharing the same faction.&lt;br /&gt;- Picking up items from the ground while sneaked demands successful steal test. The weight is checked.&lt;br /&gt;- Looting bodies while sneaked has 50% chance of desneaking.&lt;br /&gt;- Looting containers and bodies by "take all" always desneaks.&lt;br /&gt;- Sneak penalties based on fov: 135, 95, 55, 15 depending on direction.&lt;br /&gt;- Widened the side drawbridges in Gunrunners stronghold, added antiblock to front drawbridge, guards will loot the bodies now.&lt;br /&gt;- Reworked several drugs:&lt;br /&gt;  * Jet: +2 AP, -1 Ch, -2 Str, -15% DR&lt;br /&gt;  * Psycho: +15% DR, +1 Str, +1 En, -2 Pe&lt;br /&gt;  * Buffout: +2 Str, +2 En, -1 Ag&lt;br /&gt;  * Mentats: +2 Int, +2 Ch&lt;br /&gt;  * Beer: +5% DR, +1 Ch, -2 Pe&lt;br /&gt;  * Nukacola: +1 Ag&lt;br /&gt;  * Cigarettes: +1 Pe, -1 Ch&lt;br /&gt;  * Positive effects of the above drugs last 30 real minutes, after which time they subside with no negative effects, unless the player gets addicted. The addiction lasts for 1 real hour and reduces AP by 1.&lt;br /&gt;  * Only one dose of any addictive drug (or beer) is allowed at a time&lt;br /&gt;- Armor Piercing ammo DT divider reduced from 5 to 3.&lt;br /&gt;- Fast Shot trait works only with weapon modes that have aimed shot capability.&lt;br /&gt;- Weapon changes:&lt;br /&gt;  * 10mm Pistol increased to 8-15 damage&lt;br /&gt;  * .223 Pistol increased to 25-30 damage&lt;br /&gt;  * Assault Rifle increased to 14-23 damage, increased to 12 shots per burst and magazine increased to hold the same number of bursts in normal and extended.&lt;br /&gt;  * 7.62mm Ammo increased to 12/10 damage mod&lt;br /&gt;  * 10mm JHP DR increased to +27&lt;br /&gt;  * FN FAL increased to 14-22 damage&lt;br /&gt;  * Combat Shotgun increased to 20-28 damage&lt;br /&gt;  * H&amp;K CAWs increased to 6 shots per burst, magazine increased to 18&lt;br /&gt;  * Jackhammer increased to 20-31 damage, magazine increased to 15&lt;br /&gt;  * 10mm SMG increased to 8-15 damage&lt;br /&gt;  * p90c increased to 13-19 damage&lt;br /&gt;  * Tommy Gun increased to 12 shots per burst, magazine increased to 60&lt;br /&gt;  * Grease Gun increased to 12 shots per burst, magazine increased to 48&lt;br /&gt;  * Light Support Weapon increased to 22-37 damage&lt;br /&gt;  * Plasma Rifle range increased to 30&lt;br /&gt;  * Molotov Cocktail increased to 16-24 damage&lt;br /&gt;  * Frag Grenade increased to 5AP and 30-50 damage&lt;br /&gt;  * Flamer increased to 50-85 damage&lt;br /&gt;  * Improved Flamer increased to 70-125 damage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;RECOMMENDATIONS:&lt;/span&gt;&lt;br /&gt;- Update the game, make sure you receive the new DATs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;EXTRA NOTES:&lt;/span&gt;&lt;br /&gt;- Any questions about GMs activity should be asked using overseer2238@gmail.com. The person operating this email (call him/her The Overseer) has access to all logs containing GM activity (logs are also more detailed now). He/she has been chosen from outside the GM team and his/her identity will remain unknown to anyone but the developers team. This email is now the only proper place for objections and inquiries concerning GMs.&lt;br /&gt;- faction008.dat is deprecated at the time of this update. It can be safely deleted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;TO DO:&lt;/span&gt;&lt;br /&gt;- Overhaul of the npc factions: Domination Wars, Factions Scenarios.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-9075872630323395580?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/9075872630323395580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/9075872630323395580'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/08/changelog-30082010-and-server-wipe.html' title='Changelog 30/08/2010 and Server Wipe'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-415208707291559232</id><published>2010-03-25T20:15:00.001+01:00</published><updated>2010-03-25T20:15:52.223+01:00</updated><title type='text'>Changelog 25/03/2010 and Server Wipe</title><content type='html'>The third time in 8 months of time, the server has been full wiped, due to client and server improvements and a fresh game economy. Also the game server will be pleased with a big content update, which includes new jobs, quests and other game mechanics. Read the full changelog below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FIXES:&lt;/strong&gt;&lt;br /&gt;- Doctors check for poison and radiation level properly.&lt;br /&gt;- Fixed waterpump in scrapheap base.&lt;br /&gt;- Fixed timeouts for 'upgrades'. Check how they behave with deteriorated/broken items.&lt;br /&gt;- Item dismantling not possible during combat.&lt;br /&gt;- Day pass bug - day pass was becoming obsolete after bartering with some trader.&lt;br /&gt;- Fixed many follower-related bugs.&lt;br /&gt;- Fixed Bonus Rate of Fire.&lt;br /&gt;- First aid and Doctor impossible to use during turn-based combat.&lt;br /&gt;- Fixed about 70-80 more larger or smaller bugs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FEATURES:&lt;/strong&gt;&lt;br /&gt;- We introduced the first 3d models from Interplay's canned Van Buren. These are among others: Rats, Desert Stalker, Radtoads, Deathclaws, the Venus Mantrap and more.&lt;br /&gt;- There are now a few mining locations, where it's possible to mine ore and minerals.&lt;br /&gt;- Abandoned mines are for sale in certain places.&lt;br /&gt;- It's now possible to trade (give) slaves to other players.&lt;br /&gt;- Random fetcher quests, currently only available from Monte Carlo in Boneyard.&lt;br /&gt;- New quests available in Hub bar, speak to Risto.&lt;br /&gt;- New job available, lifting boxes at local caravans in a number of towns. The job is tough, but the caps are good.&lt;br /&gt;- Certain locations are colored by their function. For example, faction bases are blue.&lt;br /&gt;- Green contours for followers (note: they are still red right after being spawned. Relog helps).&lt;br /&gt;- Some new locations, explore. Smiley&lt;br /&gt;- Some treasures are now hidden in the game world.&lt;br /&gt;- Three new faction bases added (2 generic, 1 via quest).&lt;br /&gt;- One new car is added.&lt;br /&gt;- Added NCR Ranger armor.&lt;br /&gt;- Various encounter and city maps overhauled.&lt;br /&gt;- Added barbers to at least Klamath and Vault City (Changes male hair between short and long. Visual needs to be "refreshed" with armor change.)&lt;br /&gt;- Holodisks can now be used to read and store data.&lt;br /&gt;- Doors can be smashed by producing an explosion at most one hex far from it. Metal doors may require more than one attempt. Doors in towns will regenerate in 30 minutes.&lt;br /&gt;- Various new quests:&lt;br /&gt;   * Some basic stuff for starter.&lt;br /&gt;   * Abandoned Bunker, Scout in Junktown.&lt;br /&gt;   * It came from the desert, Dr. Wong in San Francisco.&lt;br /&gt;   * Stranded Rust, Trapper in Klamath.&lt;br /&gt;   * The sad wife, Woman in the Hub.&lt;br /&gt;   * The Rail Line Gang, Gunther in the NCR.&lt;br /&gt;   * Medical investigation, Dr. Andrew in Vault City.&lt;br /&gt;   * A Man's Job, Hammilton in the Boneyard.&lt;br /&gt;   * Montag's Water Pump, Montag in the Boneyard.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CHANGES (WIP):&lt;/strong&gt;&lt;br /&gt;- A lot of item prices are adjusted.&lt;br /&gt;- New instanced starting locations.&lt;br /&gt;- Reputation gain for selling items at traders.&lt;br /&gt;- Player can send distress calls only for 10 minutes of encounter map lifetime. Every player who dies on visible encounter forgets the location.&lt;br /&gt;- New/modified TC again. Closely follows this suggestion.&lt;br /&gt;- Added ~timeouts command to toggle showing of nonzero timeouts on the screen.&lt;br /&gt;- Suicide command (works only when you're knocked out): ~cuttheveins .&lt;br /&gt;- Limit for a sum of all profession levels increased to 4.&lt;br /&gt;- Sneaking:&lt;br /&gt;   * Sneak penalties for angle are no longer reducing the skill by a percent of total amount, but are substracting 0, 25, 50 or 75 points from it, depending on the look direction (back, back-side, front-side, front resp.).&lt;br /&gt;   * When the check for seeing a sneaked opponent is being done, observer's field of view is reduced (for the purpose of checking this one opponent) by 50%, 40%, 20% and 0% depending on the look direction.&lt;br /&gt;   * See change for a Ghost perk too.&lt;br /&gt;- Flagging and flag-related issues:&lt;br /&gt;   * Flags are retained, but no longer visible for everyone. All flagged individuals are valid targets.&lt;br /&gt;   * Stealing: guards won't attack the thief, he will be flagged if he either fails with stealing or is spotted by them, they will say if he is. The victim will be informed in such case in the log.&lt;br /&gt;   * Blocking: guards won't attack the blocker, they will be fine with giving warnings and flagging him. "Pushing" option has beed added, temporarily accessible only via alt+click menu (the followers menu). It will move the blocker by one hex from the previous position (one has to be on a hex next to his and the blocker have to be formally flagged as blocking).&lt;br /&gt;   * Attacking, holding explosives: same as before.&lt;br /&gt;   * Wielding weapons and drugs: guards reaction time increased to 15 seconds.&lt;br /&gt;- Ghost perk: 30% sneak bonus instead of 20%, added everytime the check is made. Can increase the skill above 300%.&lt;br /&gt;- Critical tables reworked again. They are now in the middle of vanilla FO2 tables and pre-wipe tables.&lt;br /&gt;- Slightly decreased impact of luck on aimed critical hit bonus.&lt;br /&gt;- Cumulative timeout for gathering (up to 20 minutes).&lt;br /&gt;- Weakened timeout after first aid, no xp for removing it.&lt;br /&gt;- Tent garbaging delay increased to 4 weeks.&lt;br /&gt;- Gangs with their bases are being removed after 4 weeks of not being used (terminal not accessed by a member).&lt;br /&gt;- Slaves are not counted towards encounter scaling, and other followers have two "free" slots, so each follower above that limit counts as player.&lt;br /&gt;- When entering wasteland from worldmap, player may face random encounters too (with twice as small chance as normal wandering).&lt;br /&gt;- The crafting mechanics have been reworked. This includes shortened timeouts, cumulative timeouts (20 minutes), high/low quality materials and lower prices.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VANILLA INHERITED CHANGES:&lt;/strong&gt;&lt;br /&gt;- Several improvements to the server performance and stability.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt;&lt;br /&gt;- Use the Updater to get the new client and game files. After the update, you have to login at least once in order to regenerate the default.cache file. If you just see burning people, restart the client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-415208707291559232?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/415208707291559232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/415208707291559232'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/03/changelog-25032010-and-server-wipe.html' title='Changelog 25/03/2010 and Server Wipe'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6133320012379249261</id><published>2010-03-06T11:29:00.002+01:00</published><updated>2010-03-06T11:57:14.800+01:00</updated><title type='text'>Jumping into the 3d era</title><content type='html'>&lt;strong&gt;FOnline: 2238 Announcement, Jumping into the 3d era&lt;/strong&gt;&lt;br /&gt;(or: how we learned to not be that flat anymore.)&lt;br /&gt;&lt;br /&gt;A long time has passed since we released our last developer video and really, it was about time this changed. The new developers video features a topic that we have been working on for some months and we are proud to finally have it in a shape to present it to the public: 3D models. &lt;br /&gt;&lt;br /&gt;We decided to move the FOnline engine from a pure 2d to a 2.5d engine, due to the fact that sprite editing is a long and tiresome job. With every change on the player characters, it is nesaccary to edit more than 10.000 single images, even if it's something simple like a different hair color or a new armor type. The use of 3D models helps us in developing more and diversified content in a shorter timer span and still keep the look and feel of the original games.&lt;br /&gt;&lt;br /&gt;After the release of the first 3d model converter for the Van Buren models (Van Buren - the code name of the cancled Fallout 3 by Interplay, for the ones who don't know it), we thought it was a great idea to reuse the material we could get out of the tech demo that has been released in 2007. Even if not complete, the build featured character models with already more than 90 animations and a lot customisations for body type or hair and beard styles. &lt;br /&gt;&lt;br /&gt;In the third developers video, Anton "Cvet" Tsvetinskiy, FOnline main programmer, is talking about the details of how the new 3d critters are working and will work in the future of FOnline: 2238. Check it out:&lt;br /&gt;&lt;br /&gt;&lt;object width="540" height="405" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="true" /&gt;&lt;param name="src" value="http://www.moddb.com/media/embed/241804" /&gt;&lt;embed src="http://www.moddb.com/media/embed/241804" type="application/x-shockwave-flash" wmode="transparent" width="540" height="405" allowfullscreen="true" allowscriptaccess="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/videos/fonline-2238-developers-video-22"&gt;Videos &amp; Audio - FOnline: 2238 Game - Mod DB&lt;/a&gt; or &lt;a href="http://www.youtube.com/watch?v=I0NtCHSjNoc"&gt;YouTube&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first update-wave will introduce 3d models for the animal creatures, such as models for the rats, ants, venus mantrap, thorn slinger, desert stalker or the lovely rad toads. Also a big content update is going to hit the server, which includes new game features and quests for both, PvP and PvE-friends. &lt;br /&gt;&lt;br /&gt;In combination with this, the server has to undergo a full wipe. This will happen in approx one or two weeks at most, when the update will be available on the public server.&lt;br /&gt;&lt;br /&gt;As an appendix, beside the video, here are some actual ingame screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-1.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation7" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-2.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation6" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-3.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation5" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-4.png" alt="3d model presentation" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation4" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-5.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation3" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-6.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation2" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-7.png" alt="3d model presentation" /&gt;&lt;/a&gt; &lt;a href="http://www.moddb.com/games/fonline-2238/images/3d-model-presentation1" target="_blank" title="3d model presentation - Mod DB"&gt;&lt;img src="http://media.moddb.com/cache/images/games/1/13/12174/thumb_300x150/2238-3d-8.png" alt="3d model presentation" /&gt;&lt;/a&gt;&lt;br /&gt;- Cvet &amp; Rotators&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6133320012379249261?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6133320012379249261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6133320012379249261'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/03/jumping-into-3d-era.html' title='Jumping into the 3d era'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2234988805701985018</id><published>2010-02-06T21:29:00.003+01:00</published><updated>2010-02-06T21:31:03.484+01:00</updated><title type='text'>ModDB awards 2009 - We've made the 4th</title><content type='html'>The ModDB awards for the best indie game released and unreleased in the year 2009 are over now and we've made &lt;a href="http://www.moddb.com/events/2009-mod-of-the-year-awards/features/players-choice-indie-game-of-the-year-2009"&gt;the 4th place&lt;/a&gt;! It's not that bad to loose against &lt;a href="http://www.moddb.com/games/natural-selection-2"&gt;Natural Selection 2&lt;/a&gt;, &lt;a href="http://www.moddb.com/games/overgrowth"&gt;Overgrowth&lt;/a&gt; and &lt;a href="http://www.moddb.com/games/0-ad"&gt;0 A.D.&lt;/a&gt; to be honest.&lt;br /&gt;&lt;br /&gt;Thank's to everyone who has voted!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-2234988805701985018?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2234988805701985018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2234988805701985018'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/02/moddb-awards-2009-weve-made-4th.html' title='ModDB awards 2009 - We&apos;ve made the 4th'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7939944315510481546</id><published>2010-02-03T13:14:00.002+01:00</published><updated>2010-02-03T15:53:36.151+01:00</updated><title type='text'>Donation info</title><content type='html'>Hello,&lt;br /&gt;&lt;br /&gt;We decided it's a time to clarify a bit more on the costs of server upkeeping. When we moved, we chose to acquire fairly cheap server, because we knew that server application requirements are not high. We've run into few problems at the beginning, but now we think it serves us pretty well (just to remind, server application unstability is not caused by the hardware).&lt;br /&gt;&lt;br /&gt;So, the monthly fee we need to pay for the machine, is &lt;b&gt;60&lt;/b&gt; euro (including PayPal fees). We've paid for 3 months, and we are running it 2 months already. So far we've gathered 93 euro, so we need a bit more.&lt;br /&gt;&lt;br /&gt;That's why we are kindly reminding you to donate few caps from time to time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7939944315510481546?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7939944315510481546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7939944315510481546'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/02/donation-info.html' title='Donation info'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-4333273748107107722</id><published>2010-01-09T18:31:00.002+01:00</published><updated>2010-01-09T18:35:08.146+01:00</updated><title type='text'>New FOnline: 2238 installer released</title><content type='html'>No more complicated procedures, no more installation of additional software in order to keep everything in one place and updated - the FOnline: 2238 Client Setup is here at last.&lt;br /&gt;&lt;br /&gt;The setup comes with the Launcher application included, which provides viewing changelogs, one-click update to the latest version of the client as well as simple configuring of your game preferences. The setup is extremely easy to use, intuitive and user-friendly, thus we hope our users will find it very useful, especially our new players.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_aM0Vx0XIIwM/S0i-O1M_XWI/AAAAAAAAADE/YJQ_DVDaIkE/s1600-h/moddbinstaller.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_aM0Vx0XIIwM/S0i-O1M_XWI/AAAAAAAAADE/YJQ_DVDaIkE/s200/moddbinstaller.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5424794913176771938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Currently, you can download the installer from ModDB (preferred) or our server:&lt;br /&gt;&lt;a href="http://www.moddb.com/games/fonline-2238/downloads/fonline-2238-client-setup"&gt;ModDB&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fonline2238.net/FOnline2238Client.exe"&gt;FOnline2238.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We would like to thank Mr. Wolna for helping us with the launcher.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-4333273748107107722?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4333273748107107722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4333273748107107722'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/01/new-fonline-2238-installer-released.html' title='New FOnline: 2238 installer released'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aM0Vx0XIIwM/S0i-O1M_XWI/AAAAAAAAADE/YJQ_DVDaIkE/s72-c/moddbinstaller.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-543544340177474169</id><published>2010-01-06T17:50:00.009+01:00</published><updated>2010-01-07T11:12:14.584+01:00</updated><title type='text'>ModDB awards 2009 - Vote for FOnline in Phase 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;After passing the initial voting phase, FOnline: 2238 has reached the second voting phase and is competing with other famous indie titles for the title "The Best Indie Game of 2009". We are currently among the Top 100 Mods and Indie games. As always, we count on your support and hope that the word about FOnline: 2238 will be spread throughout the cyber-space in the time to come.&lt;br /&gt;&lt;br /&gt;Feel free to &lt;a href="http://www.moddb.com/events/2009-mod-of-the-year-awards/top100"&gt;visit the ModDB website again&lt;/a&gt; and vote for FOnline: 2238 - just click on "Indie Games" in the TOP 100 BEST RELEASED MODS &amp; INDIES and confirm your vote once you see the name. Your votes will have more influence on the final result if you are registered user and if you are logged in when voting. The 2nd voting phase has started!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.moddb.com/games/fonline-2238" title="Vote for FOnline: 2238 in the 2009 Indie Game of the Year Awards"&gt;&lt;img src="http://media.moddb.com/images/groups/1/3/2444/igoty_2009_125px.png" alt="Indie Game of the Year Awards" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-543544340177474169?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/543544340177474169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/543544340177474169'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2010/01/after-passing-initial-voting-phase.html' title='ModDB awards 2009 - Vote for FOnline in Phase 2'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7563973512322116393</id><published>2009-12-27T10:41:00.005+01:00</published><updated>2009-12-27T13:10:53.581+01:00</updated><title type='text'>....Aaaand up</title><content type='html'>Hopefully, everything is up and running and it will remain so.&lt;br /&gt;&lt;br /&gt;Remember, you need to run Updater even if there is no changelog whatsoever. Client exe needs to be updated.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fonline2238.net"&gt;www.fonline2238.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7563973512322116393?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7563973512322116393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7563973512322116393'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/aaaand-up.html' title='....Aaaand up'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6204414069829364113</id><published>2009-12-27T10:19:00.002+01:00</published><updated>2009-12-27T10:23:29.014+01:00</updated><title type='text'>Server waking up</title><content type='html'>We've finally managed to overcome technical problems. Without diving into details, basically - HDD had given up the ghost. We (I mean, lazy French technicians squad) needed to replace it in the middle of Christmas...&lt;br /&gt;&lt;br /&gt;But now we're there again, for now only forum + wiki, but FOnline server is going up in a minutes.&lt;br /&gt;&lt;br /&gt;And let's hope it won't happen again. Why should it? In the meantime, check the post beneath this one. And vote.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6204414069829364113?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6204414069829364113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6204414069829364113'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/server-waking-up.html' title='Server waking up'/><author><name>scypior</name><uri>http://www.blogger.com/profile/01268110504843405526</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6432518592867580876</id><published>2009-12-26T22:49:00.005+01:00</published><updated>2010-01-06T18:02:54.056+01:00</updated><title type='text'>ModDB awards 2009 - Vote for FOnline</title><content type='html'>&lt;div style="text-align: justify;"&gt;Traditionally, year's end is the time for &lt;a href="http://www.moddb.com/"&gt;ModDB&lt;/a&gt; to start their famous 'Mod of the Year' awards. This includes everything concerning the entertainment software released in the 2009 by non-corporate teams: mods, indie games, home-brewed additions and much, much more. Everyone can vote for their favourite piece of entertaining bytes, and we would like to use this opportunity to call our faithful community to join us over at our &lt;a href="http://www.moddb.com/games/fonline-2238"&gt;moddb profile&lt;/a&gt; and vote for FOnline: 2238.&lt;br /&gt;&lt;br /&gt;The prizes provided for the best titles in 2009 may prove to be an additional motivation for any development team out there, including Cvet and Rotators. We thank you in advance  for your support and wish all of us together to achieve something that we can be proud of.&lt;br /&gt;&lt;br /&gt;Awards. Awards never change...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.moddb.com/games/fonline-2238" title="Vote for FOnline: 2238 in the 2009 Indie Game of the Year Awards"&gt;&lt;img src="http://media.moddb.com/images/groups/1/3/2444/igoty_2009_125px.png" alt="Indie Game of the Year Awards" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6432518592867580876?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6432518592867580876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6432518592867580876'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/moddb-awards-2009-vote-for-fonline.html' title='ModDB awards 2009 - Vote for FOnline'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-4564614244718305315</id><published>2009-12-24T20:36:00.004+01:00</published><updated>2009-12-24T21:04:24.341+01:00</updated><title type='text'>Problems with the new server</title><content type='html'>Yeah, as you guys could see already, we have some bigger troubles with the server once again. Not the greatest time for this, especially because it's christmas now and time is not available en mass. We hope to get the server running again as soon as possible, but we are very dependent of the support, and the support is a bit... yeah, slow... right now.&lt;br /&gt;&lt;br /&gt;That's the status in the moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-4564614244718305315?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4564614244718305315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/4564614244718305315'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/problems-with-new-server.html' title='Problems with the new server'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7024509991797588447</id><published>2009-12-22T23:25:00.003+01:00</published><updated>2009-12-22T23:31:06.888+01:00</updated><title type='text'>New server, new forum</title><content type='html'>&lt;div style="text-align: justify;"&gt;Our new server IP is 94.23.237.127, port as usual 2238.&lt;br /&gt;&lt;br /&gt;We have set up new domain as well, altogether with our new forum - visit &lt;a href="http://www.fonline2238.net/forum/"&gt;http://www.fonline2238.net/forum/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to everyone for their donations - moving to a new server and starting our new forum would be impossible without those.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7024509991797588447?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7024509991797588447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7024509991797588447'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/new-server-new-forum.html' title='New server, new forum'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2733137984046858862</id><published>2009-12-22T00:05:00.005+01:00</published><updated>2009-12-22T12:56:54.569+01:00</updated><title type='text'>New FOnline: 2238 Forums</title><content type='html'>A small announcement beside all the other stuff: We have been working on a new forum now for some time, and now we are ready to release it. The NMA forum will still be open for a while, but soon locked, when we think it's the right time.&lt;br /&gt;&lt;br /&gt;The new forum can be found &lt;a href="http://fonline2238.net/forum"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS. Comments on blog are from now on disabled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-2733137984046858862?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2733137984046858862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2733137984046858862'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/new-fonline-2238-forums.html' title='New FOnline: 2238 Forums'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7058834844027010284</id><published>2009-12-11T21:55:00.004+01:00</published><updated>2009-12-11T22:05:32.618+01:00</updated><title type='text'>Update for client, but manually (Updater still bugged)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Since our updater is still buggy and we wait for it to be fixed by the FOnline engine developer, all we can do is to provide you the files which you will have to download and place into your client folder manually. The first mini-update for your client is &lt;a href="http://download461.mediafire.com/a1mnnzy1t9tg/nnyhmzjtf2d/faction004.dat"&gt;here&lt;/a&gt; (direct link) or &lt;a href="http://www.mediafire.com/?nnyhmzjtf2d"&gt;here&lt;/a&gt; (download page).&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/6958310958031547406-7058834844027010284?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7058834844027010284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7058834844027010284'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/12/update-for-client-but-manually-updater.html' title='Update for client, but manually (Updater still bugged)'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3725257450883415735</id><published>2009-11-22T14:04:00.000+01:00</published><updated>2009-11-22T14:06:16.671+01:00</updated><title type='text'>Back on old server</title><content type='html'>We are back on the old server:&lt;br /&gt;&lt;br /&gt;IP: 94.103.87.42&lt;br /&gt;Port: 2238&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3725257450883415735?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3725257450883415735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3725257450883415735'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/back-on-old-server.html' title='Back on old server'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1464445455733904322</id><published>2009-11-21T12:31:00.001+01:00</published><updated>2009-11-21T12:31:55.129+01:00</updated><title type='text'>How to get the client working after wipe</title><content type='html'>Hello!&lt;br /&gt;&lt;br /&gt;It's been a quite hectic wipe and we were forced to relocate to our backup host (213.170.70.111:2238). Many people have trouble getting the client to work.&lt;br /&gt;&lt;br /&gt;If you follow these instructions it should work:&lt;br /&gt;&lt;br /&gt;1. Run updater to grab factionXXX.dat files (with ip 94.103.86.46, port 4040)&lt;br /&gt;2. Delete all cache files except default.cache&lt;br /&gt;3. Download http://www.mediafire.com/?fefoztn1wrj which contains the new exe&lt;br /&gt;4. Insert correct IP:Port into config tool (213.170.70.111:2238 right now)&lt;br /&gt;5. Run the game.&lt;br /&gt;6. Login (with default login and password, does not matter) and wait, then go to register&lt;br /&gt;&lt;br /&gt;Last step is important, login first, then register. This is because the 2238 content is downloaded then.&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1464445455733904322?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1464445455733904322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1464445455733904322'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/how-to-get-client-working-after-wipe.html' title='How to get the client working after wipe'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7859897848582353909</id><published>2009-11-21T01:13:00.004+01:00</published><updated>2009-11-21T01:20:13.735+01:00</updated><title type='text'>The Wipe is upon us.</title><content type='html'>The wipe will be happening  shortly after this post. A full changelog has been posted over on our &lt;a href="http://www.nma-fallout.com/forum/viewtopic.php?t=51620&amp;amp;start=20"&gt;NMA subforum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We thank you for your patience, hopefully you will see just how much work has gone into this series of updates and that will act as some form of explanation for the delay.&lt;br /&gt;&lt;br /&gt;Hope you enjoy the changes.&lt;br /&gt;&lt;br /&gt;-Solar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7859897848582353909?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7859897848582353909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7859897848582353909'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/wipe-is-upon-us.html' title='The Wipe is upon us.'/><author><name>Solar</name><uri>http://www.blogger.com/profile/03830467800057156382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2845136232474100617</id><published>2009-11-12T23:39:00.008+01:00</published><updated>2009-11-13T01:12:34.439+01:00</updated><title type='text'>Features being added. #2: Its the Economy, Stupid.</title><content type='html'>One of the areas of greatest change will be the economic system that operates in 2238. Hopefully the days of near infinite wealth flowing in from exploiting Caravan encounters will be over. Here are some of the aspects that will be changing on the update.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first difference will be in the Caps. The game world will contain only a finite number of Caps and these will cycle around between Players, NPCs and the Banks. This allows us to control things such as Brahmin and Slave trading, Bank Interest and other Caps based methods of making money to ensure there is no run-away wealth generation from these.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next difference comes in the Traders. They will no long restock with items, they will begin with inventories partially made up of items and partially made of Caps and from then on no further items will be created by them. Overtime these traders will fill up with player created items and we will have an economy truly driven by the players.&lt;br /&gt;&lt;br /&gt;In addition to this Traders will have preferences for items that they specialize in, both in terms of how much they are willing to pay for an item and in deciding what kind of things they will keep in their inventory. It is better to sell your high tech items to Traders specializing in these, rather than your local Bartender, for example. This should help ensure that there is a valid market for each type of item and that Traders have appropriate inventories. (no more Doctors full of Mausers and Radios)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The final area that I will talk about today is how Encounters will change. Essentially, there will be no noticable change to the Encounters except weapons gained from there will be in a bad condition, which has been the case before. In addition to this all Encounters will be "paid" for out of an "Encounter Pot" which has a finite value that is refilled periodically. Therefore if it has been particularly busy and some Caravan Encounters have given up lots of resources, if the "Encounter Pot" is so small that it can not afford to fund any more expensive Encounters, only the cheaper type of Encounter will be available, until these can not be paid for in turn, after which only Encounters which have no equipment to be paid for will be avaialble (Encounters vs Animals, generally).&lt;br /&gt;&lt;br /&gt;While Crafting/Trading for Crafted items will be the primary way of arming oneself, Encounters will still be a viable way of making money. Although they should never become the get rich quick features of the past months.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hopefully this has enlightened you all a little on the direction the economy will be heading in post wipe 2238 :)&lt;br /&gt;&lt;br /&gt;-Solar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-2845136232474100617?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2845136232474100617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2845136232474100617'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/features-being-added-its-economy-stupid.html' title='Features being added. #2: Its the Economy, Stupid.'/><author><name>Solar</name><uri>http://www.blogger.com/profile/03830467800057156382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1891612315178315776</id><published>2009-11-11T00:34:00.003+01:00</published><updated>2009-11-11T00:59:14.117+01:00</updated><title type='text'>Features being added. #1: New crafting items</title><content type='html'>Well, despite the apparent lack of updates in recent weeks, we have been working away behind the scenes getting several quite large updates to the game ready. I'm sure some of you may even have heard there's a wipe on the way (!) :P.&lt;br /&gt;&lt;br /&gt;In the lead up to this great event we will be talking a little bit about some of the new features at different intervals and I thought I would get the ball rolling by posting up a few details about the new crafting system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One difference comes in the way that raw materials are gathered, or more specifically the timeouts for this. Instead of each facility having a timeout, there will now be a personal timeout that can be seen in your PIPboy. These are generally longer than the old facility ones and are designed, both to give wealth at an acceptable rate and to allow lots of crafting-free time for players to go out into the world and interact with each other.&lt;br /&gt;&lt;br /&gt;The other main difference is the amount of items that are craftable. As will be discussed in a later entry, Crafting will be the primary way for items to enter the game world and so Crafting has expanded to reflect this.&lt;br /&gt;&lt;br /&gt;Some of the items will have alternative raw materials added at a later date (drugs, advanced armour etc), but for now we will stick with what we have already&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nma-fallout.com/forum/viewtopic.php?p=722457#722457"&gt;Item List&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hopefully the next subject will focus a little more on the large changes to the game's systems, but allow this post to whet the appetite.&lt;br /&gt;&lt;br /&gt;- Solar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1891612315178315776?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1891612315178315776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1891612315178315776'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/features-being-added-1-new-crafting.html' title='Features being added. #1: New crafting items'/><author><name>Solar</name><uri>http://www.blogger.com/profile/03830467800057156382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-979229225558600777</id><published>2009-11-10T11:02:00.002+01:00</published><updated>2009-11-10T11:06:57.891+01:00</updated><title type='text'>The Wiki-Boy 2000</title><content type='html'>Time for a new and very short blog entry. This time we want to point your eyes to the &lt;a href="http://fonline.scose.net/wiki/Main_Page"&gt;Wiki-Boy 2000&lt;/a&gt;, a wiki about FOnline: 2238. It's still pretty empty right now, but thats the reason why we made this blog post. We would be very happy, if our players would contribute to it, because we (the dev-team) doesn't have very much time free for spending it on the wiki (but this doesn't mean that we don't watch it). &lt;br /&gt;&lt;br /&gt;On another note, we want to post some more details about the upcoming game changes soon. Be prepared.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-979229225558600777?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/979229225558600777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/979229225558600777'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/11/wiki-boy-2000.html' title='The Wiki-Boy 2000'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2883271901141995234</id><published>2009-10-21T18:40:00.007+02:00</published><updated>2009-10-21T19:03:04.443+02:00</updated><title type='text'>Comic Art Galore</title><content type='html'>&lt;div style="text-align: justify;"&gt;Kick-started by other FOnline: 2238 related comics, one of our passionate players known by his forum nick as &lt;span style="font-style: italic;"&gt;Ewgen Kosec&lt;/span&gt; decided to put his in-game impressions onto a blank bitmap background in a rather interesting artistic fashion. All we can say is: more, more!&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://file1.hpage.com/000635/40/bilder/comic02.png"&gt;&lt;img src="http://i34.tinypic.com/28a49hg.png" alt="FOnline: 2238 &amp; Fritz" border="0" /&gt;&lt;/a&gt;&lt;/center&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/6958310958031547406-2883271901141995234?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2883271901141995234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2883271901141995234'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/10/comic-art-galore.html' title='Comic Art Galore'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i34.tinypic.com/28a49hg_th.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-552211567764796296</id><published>2009-10-15T18:47:00.005+02:00</published><updated>2009-10-16T01:04:28.609+02:00</updated><title type='text'>The Orphans' Chronicles</title><content type='html'>&lt;div style="text-align: justify;"&gt;Time to honor some community-work! User Cryofluid is posting every now and then new comics of the The Orphans' Chronicles (one of the ingame player-driven factions) on our sub-forum at &lt;a href="http://www.nma-fallout.com/forum/viewforum.php?f=67"&gt;NMA&lt;/a&gt;. It's pretty cool stuff, you should check it out.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img5.imagebanana.com/view/11tmxec7/orphanschro.jpg"&gt;&lt;img src="http://img5.imagebanana.com/img/11tmxec7/thumb/orphanschro.jpg" alt="www.ImageBanana.net - orphanschro.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://img5.imagebanana.com/view/l6jbjf5l/orphanschro02.jpg"&gt;&lt;img src="http://img5.imagebanana.com/img/l6jbjf5l/thumb/orphanschro02.jpg" alt="www.ImageBanana.net - orphanschro02.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://img5.imagebanana.com/view/7qcwa1uf/orphanschro03.jpg"&gt;&lt;img src="http://img5.imagebanana.com/img/7qcwa1uf/thumb/orphanschro03.jpg" alt="www.ImageBanana.net - orphanschro03.jpg" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-552211567764796296?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/552211567764796296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/552211567764796296'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/10/orphans-chronicles.html' title='The Orphans&apos; Chronicles'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-375768856284700692</id><published>2009-10-14T18:17:00.005+02:00</published><updated>2009-10-14T18:39:19.261+02:00</updated><title type='text'>Problems with updated client</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Probably most of you have already experienced connectivity problems after the latest client update. The client update was not synchronised properly with the server update due to some technical reasons, which affected your connection to the server in the worst possible fashion - you have probably gotten the "The network reports your client is an incorrect version, please update the client."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Thanks to some of our helpful forum members (gali, He Man, Ca1n) who have kept the executable files from the previous client version, you can revert your executable from:&lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"  style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"  style="font-family:verdana;"&gt; &lt;a href="http://www29.zippyshare.com/v/68455088/file.html" target="_blank"&gt;http://www29.zippyshare.com/v/68455088/file.html&lt;/a&gt; From gali &lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"  style="font-family:verdana;"&gt; &lt;a href="http://rapidshare.com/files/291998867/eXes.rar" target="_blank"&gt;http://rapidshare.com/files/291998867/eXes.rar&lt;/a&gt; From He-Man &lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"  style="font-family:verdana;"&gt; &lt;a href="http://rapidshare.de/files/48508137/FOnline.rar.html" target="_blank"&gt;http://rapidshare.de/files/48508137/FOnline.rar.html&lt;/a&gt; From Ca1n&lt;br /&gt;&lt;br /&gt;More info about the whole issue &lt;a href="http://www.nma-fallout.com/forum/viewtopic.php?p=715162#715162"&gt;on the forum&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We will try to synchronise the updates as soon as possible, so you can keep playing after updating the client using the official updater.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Thank you for your understanding.&lt;/span&gt;&lt;/span&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/6958310958031547406-375768856284700692?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/375768856284700692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/375768856284700692'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/10/problems-with-updated-client.html' title='Problems with updated client'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7383170066728157227</id><published>2009-10-04T03:03:00.003+02:00</published><updated>2009-10-04T03:27:34.877+02:00</updated><title type='text'>Old server back online</title><content type='html'>The old server is back online:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;IP: 94.103.87.42&lt;br /&gt;Port: 2238&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By the way, thanks to all who donated some money!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7383170066728157227?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7383170066728157227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7383170066728157227'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/10/old-server-back-online.html' title='Old server back online'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-6009663535380973042</id><published>2009-10-01T10:52:00.004+02:00</published><updated>2009-10-01T11:18:08.511+02:00</updated><title type='text'>New (temporary) server data</title><content type='html'>Important news for now, we have a new server address: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;IP: 213.170.70.111&lt;br /&gt;Port: 2238&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Regretably, we had to move to a temporary server because of hosting issues. We will see for how long we stay on this server. The data has been transfered successfully, no characters are lost and world is also preserved as it was on the other server.&lt;br /&gt;&lt;br /&gt;Prepare for lags and maybe often server downtimes. This server is just temporary and doesn't have much power.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Another info:&lt;/span&gt; The update tool will not work now. But you can grab the latest version of the faction003.dat &lt;a href="http://www.file-upload.net/download-1920195/faction003.dat.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-6009663535380973042?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6009663535380973042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/6009663535380973042'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/10/new-temporary-server-data.html' title='New (temporary) server data'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-8549569399973229426</id><published>2009-09-26T13:15:00.012+02:00</published><updated>2009-09-26T19:51:48.211+02:00</updated><title type='text'>New big update</title><content type='html'>We've got a big update yesterday night and because it is very much, it will be posted here in full too:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FIXES:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Attacking player that is in 'entering' mode should no longer initiate his combat mode.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Fixed Hub-stuck-bug (hopefully).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Many other map fixes and changes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Added guards to Frisco tanker.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Added guards to Gecko Powerplant.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Added more entry points to Gecko.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Modoc, Mariposa, Gecko, etc. are bigger now on the borders.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(SMALL) FEATURES:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- It is possible now to buy brahmin caravan cars (Frisco, NCR). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Brahmin caravans run on water. You can obtain water from water pipes in various towns. Just use empty waterbags on them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Disassembling weapons/armors (use your science, similar to how you'd use repair. Bonuses from tools apply.).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- You can now order your slaves, mercenaries to join the town garrison in any town that your faction controls. You can also dictate which laws should be enforced in this town, these laws apply to EVERYONE, even the controlling faction, and the guards won't hesitate to attack even the master. His loyalty lies with the town after joining the guard force.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CHANGES (WIP):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Dog mercs are a bit stronger again.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- No timeouts for mining spots&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Added 'overweight' limit for gathering resources&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Each resource object acts separately&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Experimental visibility/sneak changes:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    a) field of view (press Q to check it), affected by obstacles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    b) opponent's sneak skill suffers penalty:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        * -90 when directly looking at opponent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        * -60 when looking from frontsides&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        * -30 when opponent is in backside area&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        * no penalty for 'behind' hexes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    c) penalty: 1 point per 200 gram of equipment carried&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Eyeshots are automatically demoted to headshot if target is not in direct line with attacker&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Doubled jet initial effect time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Empty hypodermic needles shows after stimpak usage (50% chance).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RECOMMENDATIONS:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(255, 0, 0);"&gt;- Use updater to get faction002.dat!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;VANILLA INHERITED CHANGES:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Stealing timeout: 30 seconds, lockpick timeout: 2 minutes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Fixed stealing experience values and dir modifiers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Demolition expert bonus explosives damage (it's currently not connected to the demolition expert profession though)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Chance when walking over the mine to avoid explosion: 50% unless you've got light step perk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Pathfinder perk worldmap speed bonus (25% per level)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Bonus yielding items such as toolboxes/first aid kits/doctor bags have to be equipped in active slot while using appropriate skill&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Defusing active explosives with traps skill&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remember: The activated FOV (Field of View) is just for testing purpose. It will be tweaked and adjusted and everything else in the next updates. Also we already found some bugs, like chopped trees that turn into caravan cars, etc. We are aware of this too and fix this with the next update(s).&lt;br /&gt;&lt;br /&gt;And one important thing too: In case you missed it, we have a PayPal-donation button now on the right side of this blog. If you like FOnline (TLA or 2238), we would be very happy if you could donate some money for keeping the server running.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;form action="https://www.paypal.com/row/cgi-bin/webscr" name="_xclick" method="post"&gt;&lt;br /&gt;&lt;input value="Thank you for your FOnline support!" name="item_name" type="hidden"/&gt;&lt;br /&gt;&lt;input value="lexxnet@web.de" name="business" type="hidden"/&gt;&lt;br /&gt;&lt;input value="_xclick" name="cmd" type="hidden"/&gt;&lt;br /&gt;Amount:&lt;br/&gt;&lt;br /&gt;&lt;select name="amount" size="1"&gt;&lt;br /&gt;&lt;option selected value="1.00"/&gt;1.00&lt;br /&gt;&lt;option value="2.00"/&gt;2.00&lt;br /&gt;&lt;option value="3.00"/&gt;3.00&lt;br /&gt;&lt;option value="4.00"/&gt;4.00&lt;br /&gt;&lt;option value="5.00"/&gt;5.00&lt;br /&gt;&lt;option value="10.00"/&gt;10.00&lt;br /&gt;&lt;option value="15.00"/&gt;15.00&lt;br /&gt;&lt;/select&gt;&lt;br /&gt;Currency in:&lt;br/&gt;&lt;br /&gt;&lt;select name="currency_code" size="1"&gt;&lt;br /&gt;&lt;option value="AUD"/&gt;Australian Dollar&lt;br /&gt;&lt;option selected value="USD"/&gt;USD&lt;br /&gt;&lt;option value="GBP"/&gt;British Pound&lt;br /&gt;&lt;option value="CAD"/&gt;Canadian Dollars&lt;br /&gt;&lt;option value="CZK"/&gt;Czech Koruna&lt;br /&gt;&lt;option value="DKK"/&gt;Danish Kroner&lt;br /&gt;&lt;option value="EUR"/&gt;EUR&lt;br /&gt;&lt;option value="HKD"/&gt;Hong Kong Dollars&lt;br /&gt;&lt;option value="HUF"/&gt;Hungarian Forint&lt;br /&gt;&lt;option value="JPY"/&gt;Japanese YEN&lt;br /&gt;&lt;option value="NZD"/&gt;New Zealand Dollars&lt;br /&gt;&lt;option value="NOK"/&gt;Norwegian Kroner&lt;br /&gt;&lt;option value="PLN"/&gt;Polisg Zlotych&lt;br /&gt;&lt;option value="SGD"/&gt;Singapore Dollars&lt;br /&gt;&lt;option value="SEK"/&gt;Swedish Kronor&lt;br /&gt;&lt;option value="CHF"/&gt;Swiss Francs&lt;br /&gt;&lt;/select&gt;&lt;/p&gt;&lt;br /&gt;&lt;input border="0" alt="Put Paypal Donation Code to Your Blog/Site" src="http://img5.imagebanana.com/img/z1rma2ud/fonlinedonate.png" name="submit" type="image"/&gt;&lt;/form&gt;&lt;br /&gt;&lt;strong&gt;&lt;font face="Tahoma" size="1.5"&gt;Powered by &lt;a href="http://www.djyano.com/put-paypal-donation-code-to-your-blogsite" target="_blank"&gt;Online Quest.&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-8549569399973229426?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8549569399973229426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8549569399973229426'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/09/new-big-update.html' title='New big update'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3515480542465727508</id><published>2009-09-16T10:57:00.006+02:00</published><updated>2009-09-19T15:41:03.393+02:00</updated><title type='text'>Event: Treasure Hunt</title><content type='html'>Yeah, next event announcement (and the first one here, in fact). Like the one before (New Reno Fight Night) is this a kind of fun event because we need more variety in our lifes. Thats why we now make a ....&lt;br /&gt;&lt;br /&gt;... &lt;span style="font-weight: bold;"&gt;Treasure Hunt!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img5.imagebanana.com/img/j4avo89a/TreasureHunt.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 600px; height: 387px;" src="http://img5.imagebanana.com/img/j4avo89a/TreasureHunt.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is this?&lt;/span&gt;&lt;br /&gt;The Treasure Hunt is a kind of fun event. You are running around, trying to find NPCs, need to talk to them and run to the next, etc... so it's pretty easy in fact.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Where is it?&lt;/span&gt;&lt;br /&gt;The event will start in the Hub and reaches over the whole worldmap. You will move from one location to the next, until you reach the final checkpoint. If you reached the final checkpoint, we are waiting there with beer and booze.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WHEN is it?&lt;/span&gt;&lt;br /&gt;The event will be probably next saturday. The time is not set yet and also it is possible, that the event &lt;span style="font-style: italic;"&gt;might&lt;/span&gt; move a bit when it comes to the starting time. It all depends on wether we can clean up the last unsure things or not. :P&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is the prize?&lt;/span&gt;&lt;br /&gt;The first prize will be a shiny new... rusty old car. Additionally the wasteland surivival gear that will be not yet listed in detail. Also you get 10,000 caps!&lt;br /&gt;The second prize gets only 10,000 caps and the third prize 5,000 caps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does it work?&lt;/span&gt;&lt;br /&gt;Like written above, it is pretty simple: The start is in the Hub. From there you need to talk with a npc. He will tell you to what town you need to move next. There you have to find the next npc, talk to him and he tells you your next target, where you have to find the next npc, etc. The first one who enters the final checkpoint wins, then the second one, the third, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Rules.&lt;/span&gt;&lt;br /&gt;In fact, there are not much rules. The only thing that is 100% and for sure not allowed, is to use a car or camp npcs and shot other players there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;UPDATE:&lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"&gt;Small update on this. I am sorry to say, but we need to move it into the future.&lt;br /&gt;Reasons for this: We've got not enough time in the last few days to finish it. Also some of the GMs will not be available for the next time. It's not clear yet, when the next date for the event will be.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3515480542465727508?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3515480542465727508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3515480542465727508'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/09/yeah-next-event-announcement.html' title='Event: Treasure Hunt'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7381124341535812180</id><published>2009-09-15T10:49:00.011+02:00</published><updated>2009-09-15T11:07:43.756+02:00</updated><title type='text'>About red question marks</title><content type='html'>A lot people got problems with red question marks in several maps. This was a bug regarding new graphics, but is fixed now. You just need to use the Update Tool to get the new Faction001.dat - then everything should work again. The final patch needed so much time to do because we actually needed to find out first &lt;span style="font-style: italic;"&gt;why&lt;/span&gt; it didn't worked before.&lt;br /&gt;&lt;br /&gt;The situation is clear now and we know how to avoid this in future.&lt;br /&gt;&lt;br /&gt;Also the last changes in total:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;FIXES:&lt;br /&gt;- A lot map fixes&lt;br /&gt;- Guard script fixes&lt;br /&gt;- Encounters items deterioration revisited&lt;br /&gt;- Fixed geiger counter text messages&lt;br /&gt;- Tracking roll fix:&lt;br /&gt;--- trackerRoll &lt; trackedRoll + 25: tracked gots message that he's followed       &lt;br /&gt;--- trackerRoll + 25 &lt; trackedRoll: tracker looses track&lt;br /&gt;- Ghostfarm production facilities fixed&lt;br /&gt;- When you logout on the worldmap with your followers, they shouldn't disappear anymore.&lt;br /&gt;- Production facilities buffer again (it was entirely different issue, should be fixed now)&lt;br /&gt;- Follower corpses are removed now properly after 10 minutes &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;- TC reward containers should be openable even if someone deliberately locked them.&lt;br /&gt;- Faction001.dat fixed. &lt;span style="color:red;"&gt;&lt;span style="font-weight: bold;"&gt;Use the update tool to update it.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;- weakened timeout can be now ended using doctor skill. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;&lt;br /&gt;(SMALL) FEATURES:&lt;br /&gt;- Added new graphics&lt;br /&gt;- Changed Broken Hills a bit&lt;br /&gt;- Remove flagging in the specific location where the crime was commited based on time, 60 min+5 min*level currently.&lt;br /&gt;- You can only sneak when not seen by other players. (&lt;/span&gt;&lt;span style="font-style: italic;" class="postbody"&gt;You can enter sneak mode if seen by your teammates.)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;- The primitive tool has now its own inventory image.&lt;br /&gt;- The old shovel has now its own inventory image too. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;&lt;br /&gt;CHANGES (WIP):&lt;br /&gt;- Travelspeed increased on the worldmap.&lt;br /&gt;- Only "good" drugs (stimpaks, radaways) are allowed to be used on others&lt;br /&gt;- Timeouts aren't dropped when player is revived&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;- Default respawn time for NPCs which don't have it assigned is 10 minutes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;- Lowered the level of dog mercs.&lt;/span&gt;&lt;span style="font-style: italic;" class="postbody"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7381124341535812180?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7381124341535812180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7381124341535812180'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/09/about-red-question-marks.html' title='About red question marks'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3387597863523192152</id><published>2009-09-07T00:43:00.005+02:00</published><updated>2009-09-08T12:30:53.225+02:00</updated><title type='text'>New Update Tool released</title><content type='html'>Server has been updated again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FIXES:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Fixed breakage count of items in encounters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- A lot map fixes, just like always&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- A lot script fixes, just like always²&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(SMALL) FEATURES:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Added a new quest in the north of the wasteland, by RoadWarrior!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Tracking feature activated&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;This time you also need to download the new Update Tool.&lt;/span&gt; It is needed for easy updating of the client files. You can grab the tool &lt;a style="font-weight: bold;" href="http://fonline.ru/files/Updater.zip"&gt;here&lt;/a&gt;. Extract the archive into your FOnline client folder and run it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;PS&lt;/b&gt;. Update is NOT needed. This tool is for the future updates. And yes, 4040 is correct port.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3387597863523192152?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3387597863523192152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3387597863523192152'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/09/new-update-tool-released.html' title='New Update Tool released'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1613800802533827870</id><published>2009-09-05T20:49:00.003+02:00</published><updated>2009-09-05T20:56:17.484+02:00</updated><title type='text'>Client Update #2</title><content type='html'>The client has been updated. In order to continue with playing, it is needed to &lt;a href="http://fallout-files.de/sonstiges/fonline/FOnlinePatch0.zip"&gt;download the new patch&lt;/a&gt;. Installation is simple as always: Download the file and copy everything into your FOnline Client folder.&lt;br /&gt;&lt;br /&gt;The archive includes also the latest patch. So if you are new to FOnline: 2238, you don't need to download the last patch.&lt;br /&gt;&lt;br /&gt;A changelog will follow soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1613800802533827870?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1613800802533827870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1613800802533827870'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/09/client-update.html' title='Client Update #2'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-8970506751739761744</id><published>2009-08-30T05:19:00.006+02:00</published><updated>2009-09-05T20:56:41.201+02:00</updated><title type='text'>Client Update #1 + Server wipe</title><content type='html'>For all who still don't know what happened: The server got a full-wipe this night due to a new database system. First it was just planned to wipe everything except the character accounts but well, most people 'required' a full wipe and this was ok too to us, especially because of a shattered economy from bugs and exploits.&lt;br /&gt;&lt;br /&gt;With this update, we are also running with the latest engine version again. In the following a list of the actual changes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="postbody"&gt;FIXES:&lt;br /&gt;- radiation/replication stat bug&lt;br /&gt;- wandering critters shouldn't go too far away from their home positions&lt;br /&gt;- Bags for mercs re-enabled&lt;br /&gt;- Added fixed status to repair table quest.&lt;br /&gt;- unlimited brahmin followers bug fix&lt;br /&gt;&lt;br /&gt;CHANGES (WIP):&lt;br /&gt;- player can now obtain many professions, but total level (sum of all acquired professions) can't be greater than 3.&lt;br /&gt;- new encounter maps&lt;br /&gt;- Traders get more money now&lt;br /&gt;- Boosting Ammo produced by 3&lt;br /&gt;- Players can see when someone is searching their pockets with steal (same check as guards)&lt;br /&gt;- Dynamite and plastic explosives lowered on traders.&lt;br /&gt;- various map updates &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;The most important of this update:&lt;/span&gt; You need to download &lt;a href="http://www.fallout-files.de/sonstiges/fonline/faction001.dat"&gt;a new *.dat file&lt;/a&gt; and copy this file into your FOnline client folder. You can download the file &lt;a href="http://www.fallout-files.de/sonstiges/fonline/faction001.dat"&gt;here&lt;/a&gt;. &lt;span class="postbody"&gt;Put the faction001.dat file into your FOnline client folder and that's it. The file is only a few kb small, so it is really not a big deal. It is &lt;span style="font-weight: bold;"&gt;very important&lt;/span&gt; that this file is in your client folder or else you will see missing graphics in some maps.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-8970506751739761744?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8970506751739761744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8970506751739761744'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/server-wipe.html' title='Client Update #1 + Server wipe'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-8370611664647191243</id><published>2009-08-18T09:55:00.002+02:00</published><updated>2009-08-18T09:57:13.038+02:00</updated><title type='text'>Forum online</title><content type='html'>Just a small information: We got &lt;a href="http://www.nma-fallout.com/forum/viewforum.php?f=67"&gt;a subforum on NMA&lt;/a&gt; now. You can register there and give feedback, post ideas or discuss other stuff and so on and so on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-8370611664647191243?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8370611664647191243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/8370611664647191243'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/forum-online.html' title='Forum online'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7703486635865766167</id><published>2009-08-17T23:37:00.004+02:00</published><updated>2009-08-17T23:40:19.926+02:00</updated><title type='text'>How to check server status?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Here's the web address where you can check the status of the FOnline: 2238, as well as the FOnline: The Life After server:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://www.rovertemple.ru/fo/server/"&gt;Server status&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Just click on it and that's it. We hope this will be helpful to everyone.&lt;/span&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/6958310958031547406-7703486635865766167?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7703486635865766167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7703486635865766167'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/how-to-check-server-status.html' title='How to check server status?'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7536761086522656812</id><published>2009-08-17T00:22:00.006+02:00</published><updated>2009-08-17T11:02:23.009+02:00</updated><title type='text'>FOnline: 2238 Manual available</title><content type='html'>&lt;div style="text-align: justify;"&gt;It's done: a few minutes ago our manual for FOnline: 2238 has been finished and can be grabbed right away! Also a short Additional Notes file for printing is available. The manual is 63 pages blong (4,19mb) and includes practically everything. It was based mostly on the original Fallout / Fallout 2 manuals and adds all new FOnline informations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You can grab the files here:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.fallout-files.de/sonstiges/fonline/FOnline2238.pdf"&gt;FOnline: 2238 Manual&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fallout-files.de/sonstiges/fonline/FOnline2238-ADDITIONAL-NOTES.pdf"&gt;FOnline: 2238 Additional Notes&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7536761086522656812?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7536761086522656812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7536761086522656812'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/fonline-2238-manual-available.html' title='FOnline: 2238 Manual available'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-2436970237905791633</id><published>2009-08-16T14:09:00.004+02:00</published><updated>2009-08-21T12:41:05.707+02:00</updated><title type='text'>How to get music in 2238</title><content type='html'>You cannot hear any music in the game? Then do the following:&lt;br /&gt;&lt;br /&gt;Copy the /music/ folder from your Fallout 2 installation or CD and paste it in your FOnline Client /data/sound/ folder.&lt;br /&gt;&lt;br /&gt;That's it. Now you should be able to hear music ingame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-2436970237905791633?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2436970237905791633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/2436970237905791633'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/how-to-get-music-in-2238.html' title='How to get music in 2238'/><author><name>Lexx</name><uri>http://www.blogger.com/profile/17916128545723869796</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7088816925091837295</id><published>2009-08-16T12:30:00.003+02:00</published><updated>2009-08-16T12:46:27.994+02:00</updated><title type='text'>Open Beta Test #3: the first 12 hours</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Finally, the OBT3 has begun.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It arouse a massive interest for the game, resulting with numerous players downloading the client last night and trying to log in. This caused noticeable lags and ruined the game for some players who had less luck than the others - dying in random encounters was just one of the issues.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;We are currently working on resolving them. The hardware seems to be quite overloaded, causing the abnormal lag peaks. This is due to the fact that some of our features are very complex, yet they have never been tested massively. This is the perfect opportunity to test them together, so that we may investigate any possible problems that could choke our hardware right now.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Thanks for understanding this delicate matter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Keep testing, the game needs to be brought to the point where everyone can enjoy it.&lt;/span&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/6958310958031547406-7088816925091837295?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7088816925091837295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7088816925091837295'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/open-beta-test-3-first-12-hours.html' title='Open Beta Test #3: the first 12 hours'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1025298597355191566</id><published>2009-08-15T16:25:00.012+02:00</published><updated>2009-08-15T21:10:15.885+02:00</updated><title type='text'>FOnline: 2238 starts today!</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Dear wastelanders! Thank you for gathering today, on IRC, on this Blog... Wherever you are! Today the third open beta test is going to start!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;FOnline: 2238 is not the only game you will be able to play - our brethren from all over the world, who were working hard on another game, The Life After, will launch their servers today too. Everything you need for playing the game, as well as any news regarding the client and servers w&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;ill be published on &lt;a href="http://fonline2238.blogspot.com/"&gt;this blog&lt;/a&gt; or &lt;a href="http://fonline.ru/news.php"&gt;the official FOnline Homepage&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;We still need some time to bring everything in order before launching the game, please be patient.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;We apologize for not releasing the 3rd Developers Video &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;before the launching date, it will be recorded soon. To make it up to you, we decided to post this small comic:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i28.tinypic.com/28rnu3k.jpg"&gt;&lt;img style="cursor: pointer; width: 615px; height: 627px;" src="http://i28.tinypic.com/28rnu3k.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FOnline irc data:&lt;/span&gt;&lt;br /&gt;Server: irc.forestnet.org&lt;br /&gt;Channel: #fonline&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Our irc data:&lt;/span&gt;&lt;br /&gt;Server: irc.forestnet.org&lt;br /&gt;Channel: #2238&lt;br /&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/6958310958031547406-1025298597355191566?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1025298597355191566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1025298597355191566'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/fonline-2238-starts-today.html' title='FOnline: 2238 starts today!'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i28.tinypic.com/28rnu3k_th.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7410750994178280943</id><published>2009-08-09T19:54:00.010+02:00</published><updated>2009-08-09T21:58:41.228+02:00</updated><title type='text'>FOnline developers looking for voice actor!</title><content type='html'>&lt;span style="font-family:verdana;"&gt;As the title says, the FOnline developers are looking for a &lt;span style="font-weight: bold;"&gt;native English speaking male with a mature, deep, strong voice&lt;/span&gt;. The voice will be used for "FOnline: The life After" intro, and if you are really good we would use your talent for our own, "FOnline:2238" intro movie.&lt;br /&gt;&lt;br /&gt;Prerequisites:&lt;br /&gt;&lt;/span&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;Voice similar to Ron Perlman (Fallout 1/2/3/Tactics narrator)&lt;/li&gt;&lt;li&gt;Soundproof or low-noise room for recording&lt;/li&gt;&lt;li&gt;Dramatic narration&lt;/li&gt;&lt;li&gt;Native USA citizens have the advantage over others&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;Everyone interested can post in the comments or mail me at lisac2kATgmailDOTcom, subject "Voice Actor". All other mails will be deleted promptly, be sure to write the subject properly.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7410750994178280943?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7410750994178280943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7410750994178280943'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/08/fonline-developers-looking-for-voice.html' title='FOnline developers looking for voice actor!'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-9070642641319068152</id><published>2009-07-23T10:19:00.010+02:00</published><updated>2009-08-09T19:53:54.099+02:00</updated><title type='text'>Poll #2 finished - what you really want to see in our videos</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Time to vote is up! Our 2nd poll results are (you could choose more options):&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;What would you like to see in one of our next videos?&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;   Combat presentation: 220 (52%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;A small quest would be good: 115 (27%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;One of the existing factions in game 93: (22%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Some other new feature (Banks, Mercs...): 139 (32%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Gangs 79 (18%)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Interesting, 20 votes (4%) expressed negative feelings about videos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The winner is "Combat presentation" and this is exactly what you are going to see soon. Thank you for your votes and feel free to take part in our next poll about role-playing.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-9070642641319068152?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/9070642641319068152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/9070642641319068152'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/poll-2-finished-what-you-really-want-to.html' title='Poll #2 finished - what you really want to see in our videos'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-3067472142763965673</id><published>2009-07-21T12:23:00.000+02:00</published><updated>2009-07-21T12:24:19.494+02:00</updated><title type='text'>FOnline: 2238 Developers Video #2</title><content type='html'>We are proud to present our second video about FOnline: 2238. In this video we will show you the new PPC (Professions, Production and Crafting) system that plays an important role in the game.&lt;br /&gt;&lt;br /&gt;&lt;object height="505" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0BF-sB4E0AI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/object&gt;&lt;div style="text-align: center;"&gt;&lt;object height="505" width="640"&gt;&lt;embed src="http://www.youtube.com/v/C6HmWai1RII&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="505" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-3067472142763965673?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3067472142763965673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/3067472142763965673'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/fonline-2238-developers-video-2.html' title='FOnline: 2238 Developers Video #2'/><author><name>Ghosthack</name><uri>http://www.blogger.com/profile/16339437872106906594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-7909048420481155616</id><published>2009-07-21T11:05:00.003+02:00</published><updated>2009-07-21T11:29:31.257+02:00</updated><title type='text'>Poll #1 Results</title><content type='html'>&lt;div style="text-align: justify; font-family: verdana;"&gt;&lt;span style="font-size:100%;"&gt;OK, there are two weeks since our first poll hit this blog and here are the results:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Did you already know about the next open beta test on 15-Aug-2009?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Yes, I knew it. 188 (71%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;No, I just heard about it. 63 (23%)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Next open testis what..? 13 (4%)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;We are glad to see you are informed about the FOnline project and would like to thank for your kind comments and suggestions. Nothing better than an active community that doesn't lose its attention span each time some bombastic game news pop up.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Thanks to everyone for voting, feel free to vote in our next poll!&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;FOnline: 2238 Development Team&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-7909048420481155616?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7909048420481155616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/7909048420481155616'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/poll-1-results.html' title='Poll #1 Results'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1166056273500335671</id><published>2009-07-10T11:20:00.005+02:00</published><updated>2009-07-10T11:37:45.149+02:00</updated><title type='text'>FOnline: 2238 Developers Video #1</title><content type='html'>&lt;div style="text-align: justify; font-family: verdana;"&gt;Here's the first video about FOnline: 2238! Take a short tour through San Francisco with one of the developers and get the first impressions about the game.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="505"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0BF-sB4E0AI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/object&gt;&lt;div style="text-align: center;"&gt;&lt;object width="640" height="505"&gt;&lt;embed src="http://www.youtube.com/v/0BF-sB4E0AI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.filefactory.com/file/ahcg2d5/n/dev1_mp4"&gt;&lt;span style="font-size:85%;"&gt;Download this video in 640x480&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-1166056273500335671?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1166056273500335671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1166056273500335671'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/fonline-2238-developers-video-1.html' title='FOnline: 2238 Developers Video #1'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-1231974593127509853</id><published>2009-07-08T13:25:00.007+02:00</published><updated>2009-07-08T14:16:42.906+02:00</updated><title type='text'>FOnline: 2238 Press Release, 3rd Open Beta Test Announced</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Berlin/London/&lt;/span&gt;&lt;/span&gt;&lt;span class="fn org"  style="font-family:verdana;"&gt;Novopolotsk&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;/Stockholm/Vienna/Warsaw, 08-Jul-2009&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;The small indie development group, "Rotators", supported by the main developer of FOnline, A. Cvetinskiy "Cvet", are proud to present FOnline: 2238, the new massively multiplayer game, free of charge, based on the famous award-winning CRPG titles Fallout and Fallout2.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Bringing the single player experience into a massively multiplayer game was not an easy task. Merging the existing features with new ones in order to provide as much game experience as possible, the young developers aimed for the recreation of the Fallout world as we knew it back in the late '90s, keeping the emphasis on the alternative, unique universe and its settings. The game will remind you of Fallout 1 &amp;amp; 2 everywhere you go - the places, the people, the common history and the events that shook the world and keep it trembling.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Humanity, or at least what is left of it, has no time for a break. Faced with constant challenges, surviving in the harsh post-apocalyptic, post-nuclear, barren world, struggling for an uncertain tomorrow, the humans, ghouls and mutants are organizing themselves to push it through. To make it. To stay alive. Each group, each place, each organization with its own agenda, with its own ideology, fighting for their place under the scorching Sun. What they believe may be right or wrong... Who are we to judge, while striving for the same old necessity - survival?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;The game adds several unique features regarding the players and their interactions, be it with other players, their respective groups or NPCs. First of all, there are groups: factions, gangs - call them whatever you like, which determine the fate of the world. Some of them are more powerful than others, some are cunning and treacherous, some even hideous. But they are there, conflicting with each other, or aligning with the policies of the greater powers - those who have technological advances, political power, are just plain bigger, or any other advantages over them. Choose your way: join your favorite group and spread their agenda throughout the wasteland. Decide for yourself how to handle the resistance - with good will or stubbornness. Respect the authorities or lead a revolution to throw them off the throne - it is your world, you decide.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;If you don't feel like belonging to a group and have your own ideology, then you can take one of the numerous paths the wasteland offers. Some of them are: bounty hunting, brahmin trading, crafting, exploring and trading in general. The brand new system of professions allows you to polish up your skills and learn things you will rarely find in books, giving you a certain advantage over other players. Scavenging, gathering resources and useful items will be an inevitable part of your FOnline: 2238 life. Crafting something useful out of the gathered junk or selling it directly to your favorite vendor are just a small part of the great possibilities this game offers you. And of course, you can just take them off someone else, simply by brutally killing him/her or using more exquisite methods, like stealing. The choice is yours - and so are the consequences.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;From the technical point of view, the game will bring back the good old 2D isometric perspective, with english being the only supported language. The engine supports several new features like object opacity and the PNG graphics format. The scripting language being used is the AngelCode Scripting Library (or simply AngelScript) created by Andreas Jönsson. The system requirements for the game can be considered minimal for today's mainstream computing:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;MS Windows 2000/XP/Vista&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;56K or better internet connection&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Fallout 2 CD&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;There are reports the game will run under Linux too (using WINE emulation), but generally we do not support it.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Due to the fact that the game is currently in its early beta stage (remember, the engine development has progressed much further and the engine itself can be considered almost fully functional), it is necessary to test the numerous features and additions. Taking this into account, the decision to organize another open beta test has been made, and the date is August 15th, 2009. We are looking forward to seeing you in the game and hearing your impressions of our creation, so that the next open test can really be a mutual pleasure.&lt;/span&gt;&lt;/span&gt;&lt;br /&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/6958310958031547406-1231974593127509853?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1231974593127509853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/1231974593127509853'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/fonline-2238-press-release-3rd-open.html' title='FOnline: 2238 Press Release, 3rd Open Beta Test Announced'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6958310958031547406.post-5576348461523532334</id><published>2009-07-07T18:00:00.007+02:00</published><updated>2009-07-07T18:14:19.954+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FOnline 2238 Developers Blog'/><title type='text'>FOnline: 2238 Developers Blog - Finally</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;After the months of working on the new MMORPG title, that should bring the Fallout world in a massively multiplayer environment closer to you, we have finally started our developers blog.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;The reasons are not trivial and pointless, not this time. Keeping track of the progress, being informed about the latest updates, introducing the new features and more - all of that will be published here. We hope that this step will help us override the distances between the developers and the gamers, and that all of us are going to benefit from this blog.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;By modders, for gamers.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6958310958031547406-5576348461523532334?l=fonline2238.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/5576348461523532334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6958310958031547406/posts/default/5576348461523532334'/><link rel='alternate' type='text/html' href='http://fonline2238.blogspot.com/2009/07/fonline-2238-developers-blog-finally.html' title='FOnline: 2238 Developers Blog - Finally'/><author><name>lisac2k</name><uri>http://www.blogger.com/profile/13042892623147931517</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
