Archive

Posts Tagged ‘Open Source’

Version 0.1 – Release

July 14th, 2010 Generic Container No comments

Source: Goblin Camp

0.1 is out!

It has a working stock manager, basic combat, basic farming and such. Download it and test it out, and come over to the forums and voice your opinions!

If you don’t have the Visual C++ 2010 Runtime installed already grab it from here: VC++ 2010 Runtime It’s a fairly small download (4.8mb) and it doesn’t require a restart to install or anything. Without it Goblin Camp will complain about msvcr100.dll and msvcp100.dll.

A linux version will be up at some point in the future too.
Goblin Camp can be built in linux: forum thread, it does take a bit of work though. No binary releases yet.

Download link: GoblinCamp01.zip

The source code is available over on bitbucket.

So what’s Goblin Camp supposed to be?

June 24th, 2010 Generic Container No comments

Source: Goblin Camp

There’s a lot of speculation about what my aims are exactly with Goblin Camp, so I’ll try and explain things here.

I’ve played roguelikes for a long time, and as a kid I used to draw cities using ASCII back when PC’s still used DOS. In addition to roguelikes, I’ve always been a fan of the Civilization series, Dungeon Keeper and more recently Anno 1404. When Dwarf Fortress came along I was really excited, it seemed to combine the genres that I’ve always liked. I was content with DF for a long time, but then I got to thinking of all the things I’d like to see done with the genre (genre being roguelike citybuilder, I suppose. Who cares what its called). So I had 3 choices:

  • Send Toady my suggestions and hope he does things the way I’d like
  • Hope someone else makes a game just the way I’d like
  • Do it myself

I’m a bit impatient, so the obvious choice was to do it myself, so here I am.

I want to stress that I’m not setting out to make a Dwarf Fortress clone, it wouldn’t make much sense really. I’m making a game that is inspired by Dwarf Fortress, and there will be certain similarities. Using similar indicators for things like stockpiles and creatures and such that are used in DF, Nethack and so forth is a conscious design choice to make getting into the game easy for people already familiar with DF, or roguelikes in general.

Goblin Camp is going to be more about the broader decisions, and less about micromanagement. You’ll steer your economy by setting minimum production values, and organizing your workshops and stockpiles to ensure efficient hauling. What you won’t care about are who the individual workers are, or who’s assigned to what workshop. Orcs will gain skill in their chosen profession, but assigning jobs to the best workers is left to the game. You the player will want to organize your defences and military in such a way as to keep your working class alive, because the longer they work the better they get. Constant bloodbaths at your workshops will mean that you’ll always have unskilled labor.

This leads to an important point, orcs and goblins (especially goblins) are expendable. An ordinary orcs life is short and brutal, only a select few will survive long enough to become notable individuals.

I’ll expand on all that later, I don’t want this post to stretch too long. As a parting point I want to bring up another big factor in the development of Goblin Camp: Feedback. I want to hear all your suggestions, ideas and critique. I’m not making Goblin Camp just for myself, but for everyone else as well, and as such everyone’s comments are important. Also, Goblin Camp will be open sourced after the 0.1 release, and contributions to the code are encouraged.

Narrow Horizons

April 21st, 2010 Dave 1 comment

Source: Kharne

May the Lords of K0bol save us from narrow-minded Stallman acoplytes*:
"Well - sad...since you use this properietary M$ crap, i can't test this variant. Also i think that it could be quite interesting from the gameplay.
IMO you shouldn't use programming languages like visual C (or other one-manufacturer-one-system languages) for *Bands because its against the philosophy. They should run without trouble on most common computer systems and not only on windows."
So..what have we got here:
  • Obligatory reference to "M$". Check.
  • Obligatory insistance that only the one true language (probably C?) be used Check.
  • Miltonesque mindset of the true believer on display - that "philsophy" comes first before everything else. Check.
  • Lazy assumption that windows software can't be ported to other operating systems. Check.
Dude, chillax, as I believe the youth of today say.

But to answer the respondant's specific points (without bursting a blood valve):

Visual Studio is pretty much the best development environment out there at the moment. Mono allows cross-platform .NET development. Microsoft (the whole M$ thing is just immaturity), for all the bad things they've done, have also done plenty of good things as well; and programming, when you take a reasonable view of things, isn't important enough to be something worth an ideological crusade over. Women's Reproductive Rights, Identity Cards, Access to Clean Drinking Water, Trade Tariffs and Barriers - those are worth getting worked up about. But not whither someone uses one bleeding format of input text or another to produce a load of sodding pixels on a screen.

Bet he's a Vi user as well. That would explain a lot**.

Feh, and more feh! His attitude makes me want to code a C# roguelike just because. Kharne# anyone?

* This post was brought to you by the concepts "maturity" and "perspective". Dude, try it some time. It works, y'know.
** Emacs, definitely, in case you ever wanted ot know. Although Textpad is better than both of them.

Brogue gets it right

March 5th, 2010 roguewombat No comments

Source: Rogue Wombat

My first introduction to Roguelikes was ADoM, and it will always hold a special place in my heart.  I’ve played it for hours, but I’ve rarely progressed beyond one or two quests / dungeons.  It’s epic, but possibly a little too epic for players like me who can’t devote gads of time to develop a playing strategy that will get me anywhere near completion.  The problem is the lighter Roguelikes I’ve played don’t come anywhere near providing the atmosphere that ADoM does, and it’s the atmosphere that makes the game so appealing to me.  I even bore of the original Rogue after a while, with its spartan use of ASCII and super-simple feature set.

However, my estimation of other Roguelikes may have just recently changed with my discovery of Brogue thanks to a link from the Kharne blog.  Simply put, I can’t recommend this game as highly as I ought to to get you to go play it.  Unfortunately, it’s a Mac native game, and I can’t vouch for the Windows / Linux ports that the author links to.  Let me whet your appetite enough so you go through the trouble of figuring out how to play it…

Standing on the edge staring down...

Brogue.  It’s like Rogue in its simplicity, but it adds a level of visual appeal that I literally haven’t seen in any other Roguelike.  It’s like ADoM in the way it shapes the atmosphere and mood of gameplay, but it requires far less attention and time to learn all the game mechanics.  But don’t let the simplicity fool you… there are plenty of cool features to discover each play through!

For example, Brogue has a limited but fun set of monsters inhabiting its dungeons.  There’s the monkeys that steal from your inventory and run away, the toads that cause you to hallucinate (displayed through some fun visual effects), and the acid blobs that corrode any unprotected weapons and armor upon contact.  Even better, monsters will imprison their own kind and torture them.  I literally walked into a room with a kobold tied up that was getting beaten by other kobolds.  I dispatched them, freed the kobold, and gained a faithful friend.  Brogue gets monsters and allies right.

Now there's a nice ally to have!

Let’s not forget the brilliant dungeons you get to crawl, too.  The use of various terrain tiles is quite fun, even if most are simply there for flavor.  Still, don’t start a fire in the swamps or you might get an explosive surprise.  Even better, in addition to terrain types, Brogue also adds cavernous pits that you can jump down to the level below and underground lakes inhabited by eels and krakens.  Get into deep water and any unequipped items in your inventory might just float away to be recovered in the shallows.  Then there are the molten lakes of lava that, well, you just don’t go there.  Brogue gets dungeons right.

What about equipment?  Well, the offering is admittedly simple, but that’s part of the appeal.  You have one stat to track, strength.  That will affect what weapons and armor you can equip.  You can also find rings, staffs, wands, scrolls, and potions to dabble in the arcane.  Everything you pick up will be unknown until it’s used or identified, so tread carefully… some potions when opened cause explosions and poisonous clouds of gas to envelop your player.  I used a wand of obstruction on accident and was stuck for dozens of turns until the affect wore off.  The localized area affect nature of these spells is pretty slick, and the visual presentation is very interesting.  Brogue gets magic right.

I could go on, but I’ll stop there.  This game is loads of fun, easy to get into, and a treat for the eyes.  I highly recommend it and would simply say… beware the monkeys.  They’re filthy pickpockets and deserve to be dispatched in their sleep.


Configuring and compiling Kharne – a brief guide

October 13th, 2009 Dave No comments

Source: Kharne

(this is a copy of CODING.TXT which is found in the source code distribution. I will also add a permalink to this post for reference purposes)

Contents:
  1. Introduction
  2. Required 3rd Party Components
  3. Licensing Notes
  4. Other Notes
  5. Contact Details
1. Introduction

Welcome to Kharne. Kharne is a standard Delphi Windows application that uses a certain number of third-party controls and libraries for additional functionality above and beyond that provided in Delphi.

I have developed Kharne using Delphi 7, but provided the external controls can be installed, it should be compilable in any version of Delphi newer than 5.

2. Required 3rd Party Components

Due to licensing terms, I can't provide these components or distribute their source with my own distribution.

You will need to download and install the following before you open the source in Delphi for the first time:

a. TGradLabel
http://www.delphi32.com/vcl/929/#

It is my intention to phase the use of this component out entirely.

b. TAStarPathPlanneer
http://www.riversoftavg.com/tastarpathplanner.htm

c. TQProgressBat
http://mapage.noos.fr/qnno/pages/delphi_en.htm#TQProgressBar

d. TSQLLite
http://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3

You may need to add the path of this component to the Project Search Paths.

e. THotLog
http://mapage.noos.fr/qnno/pages/delphi_en.htm#hotLog

This isn't a component as such, simply copy hotlog.pas into the source directoy and make sure it is added to the project.

f. TKeyboardHandler

As this is no longer available *anywhere* on the web, I've included the source in the components subdirectory. Longer term I want to phase use of this component out and duplicate its functionality,

g. sqlite3.dll

This is the SQLLite interface library, is public domain and thus is included with this source distribution.

If any of these components become unavailable, contact me (starbog@gmail.com) and I will send them to you direct (I will only do this under these circumstances). I will then try and remove any dependency upon them from the next version.


3. Licensing Notes

I have released Kharne under the MPL as opposed to the GPL because I'm not convinced that the latter allows a Delphi program to link with components that are not GPL themselves.

I've had a reply direct from the FSF telling me that it does provided I add an additional disclaimer to the GPL License that gives explicit permission. However, as I'm not convinced about this (the GPL itself is quite fuzzy in this regard), I'm releasing Kharne under the MPL to avoid any doubt.

However, just to clear things up, I'm am granting an irrevocable right to link my code released under the MPL to any other custom component, library or API no matter what the license.

The source code file UnitOtherFuncs uses a few small routines freely available on the web - I have indicated carefully what these are in the source and their origins, and this file is obviously not released under the MPL.

The distribution also includes a copy of the Bitstream Vera Sans Mono Font (veramono.ttf) which can be freely distributed and is in the public domain. If you are doing development, please copy this and install it in the usual way before opening the source code.

4. Other Notes

I have no idea if Kharne will compile with Lazarus, I suspect the custom components may prove to be an unsurmountable obstacle, but anyone is welcome to try porting if they wish. I'd like Kharne to run multiplatform without using WINE, but that may have to wait until cross-compiling for Delphi becomes a reality (it has been promised for the version due out in 2010.)


5. Contact Details

I can be emailed direct at starbog@gmail.com or reached via the blog at kharne-rl.blogspot.com. Or you can reach me on #rgrd regularily where I am known as "starbog".
Categories: Kharne, Planet Roguelike Tags: ,

Automatic notifications of commits

October 11th, 2009 Dave No comments

Source: Kharne

Does anyone know of a way to automatically post a message to a blog with summary details of a commit that's been made to a Googlecode SVN? (but not the email that's generated with all the changes)

Kharne source code repository now on GoogleCode

October 4th, 2009 Dave No comments

Source: Kharne

The Kharne sourcecode is now on GoogleCode.

Kharne 0.05 and source code released!

October 2nd, 2009 Perdurabo Nihil No comments

Source: Kharne

Kharne Alpha v0.05 is now available, and has been released as open source under the MPL v1.1

This version is functionally identical to v0.04a.

The source code is available here or via the downloads menu.

Please read CODING.TXT in the docs subdirectory before attempting to load the Kharne project into Delphi.

If you have any questions, or difficulty getting the source to compile, feel free to leave a comment here or email me on starbog@gmail.com.

Refactoring Completed

October 1st, 2009 Dave No comments

Source: Kharne

Its the 1st of October, and suitably, the great code refactor of 2009 has finally been completed.

As soon as I write a guide for obtaining and installing the various 3rd-party libraries, APIs and custom VCL components that Kharne uses, I will release a source code distribution under the Mozilla Public License (MPL).

Shortly after that, I hope to set up the source code repository on GoogleCode.

Refactoring Progress #5

September 29th, 2009 Perdurabo Nihil No comments

Source: Kharne

The refactoring is almost complete:

I've just spent about five hours in total dealing with bugs I introduced into the TDungeon level generation code while refactoring, which was mainly due to doing the refactoring offline, i.e. not within an environment where the code could compile. It has been a useful exercise, as well as removing any code that I'd be ashamed of releasing (now there's just a lot of code left that I merely dislike), I've reaquainted myself with a lot of code that has been written for quite a while now and which I had forgotten the purpose of. The code also conforms a lot more to coding standards.

The only major source code left to refactor is UnitDisplay.pas which, as the name suggests, is, contains the code that interfaces with the screen and the GUI-handling code. Its about 4000 lines of code. I'm on target to finish the refactor within the week or so.

Its a messy unit, full of code like this:
Procedure TFormDisplay.ListViewMonstersCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
begin
if ListViewMonsters.Items.Count = 0 then Compare := 0
else
begin
if (StrToInt(Item1.SubItems[6])) > (StrToInt(Item1.SubItems[6])) then Compare := 1
else if (StrToInt(Item1.SubItems[6])) = (StrToInt(Item1.SubItems[6])) then Compare := 0
else Compare := -1;
end;
end;
I'm not coding C, so there's no virtue in conciseness. The refactor turns that code into this (note that some of the indenting may not display properly, but the final code is indented properly):
{ Sort Routine to sort entries in the Visible Monsters display - compares two
TListItems and returns a comparison based upon TMonster.Level }

Procedure
TFormDisplay.ListViewMonstersCompare(Sender: TObject; Item1,

Item2: TListItem; Data: Integer; var Compare: Integer);
var
FirstItemLevel: Integer;
SecondItemLevel: Integer;

begin

{ Logging }
hLog.Add('{now} {lNum} TFormDisplay.ListViewMonstersCompare()');

{ Default result which is that both items are equal}
Result := 0;

try
{ Make sure there are items to compare }
if ListViewMonsters.Items.Count > 0 then
begin
{ Get the monster levels from the Listview Items }
FirstItemLevel := StrToIntDef(Item1.SubItems[MONSTER_LEVEL], 0);
SecondItemLevel := StrToIntDef(Item2.SubItems[MONSTER_LEVEL], 0);

{ Compare the Monster Levels of each items }

{ First > Second }
if FirstItemLevel > SecondItemLevel then
Compare := 1

{ First <>
else if FirstItemLevel < style="font-weight: bold; color: rgb(0, 0, 102);">) then
Compare := -1;

end;
except
{ in case of error, log the Exception }
on
E: Exception do hLog.AddException(E);
end;
end;
After I finish that unit, I'll have to put together the instructions for downloading and installing the various 3rd party components that I use, and then technically I'll have a source code distribution ready for when I release Kharne under the MPL.