Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Lastmerlin

Pages: 1 2 [3] 4 5
General / Linux binary build (experimental)
« on: October 19, 2010, 07:37:48 PM »
As requested by Trilby (and others) and as planned, here is my first attempt on a linux binary build.
Important: You have to execute the run_sumwars script, not the sumwars binary directly.

Its for x32 only, so do not try it with an x64 Linux. I will try to get a x64 as soon as possible. Its very early experimental status, too. Thats why, I want to ask everyone to give it a try and report potential problems.
Special thanks to mafm who helped me massively with this.

General / Quest Items
« on: October 13, 2010, 08:29:45 PM »
Yet another game design topic I want to discuss - or rather offer a discussion and hope that someone answers.
The next change to game core I want to work on is quest Items. These are just a wonderful tool for quest designers and it adds a lot of flavour if you can *touch* the important items you got instead of just reading the message  *you picked up the staff of destruction* (or whatever).

The problems and questions that arise are:
Should you be able to use quest-items ? Should there be quest-items of normal equipment classes after all ?
How do you avoid that the players looses important questitems ? This is a real headache, because items you can not move around in inventory are a pain too. I am still unsure if we should somehow try to make this impossible or rather try to fix the error if it occurs. Diablo did that: you could throw away any quest items and it would just drop again on the next occasion. They could do that, because almost all questitems were dropped by monsters or chests and nothing was really unique - each monster (including the uniques) reappeared after save & load.
The next issue is with multiplayer - what do you do if you have 3 players - drop 3 items? Rather silly. On the other hand, suppose you drop one item, what should happen if the player who has the crucial items is missing on the next session ?

Perhaps you can even think of more problematic situations. Apart from that, I would like to get some comments on these issues.

General / Enchanting system
« on: October 05, 2010, 07:28:04 PM »
Here I will describe the planned enchantment system for items.
Its yet another feature that I want to implement soon (in fact this one already about 70-80% done) and want to give you the opportunity to add some comments, criticism, proposals etc.

This is how it works:
In several towns special enchanters offer their help for money. There you can choose which part of your equipment to enchant (it always automatically uses items you are have equiped right now) and what buff you want to get. So you know what you will get. This is a difference to enchanting in Diablo for instance. The strength of the enchantment is a bit below what you can get from drops. Each item can have each sort of enchantment only once, so a magical weapon that already has added fire damage can not be enchanted for fire damage again. This is done to prevent the creation of ├╝ber-items. The price depends on the number and strength of buffs that are already on the item. I have a created a fancy function for that, which yields moderate number at low enchantment levels but grows exponentially later and gives huge results above a certain value (effectively limiting the enchantment that can be achieved). The coefficients vary between the enchanters, an enchantment that is completely unaffordable now might be rather easy to get later - so hoarding money for one enchantment more instead of following the story is pointless.
Enchantment can rise item requirement level according to the usual rules making the item unusable at current level. In this case the item is placed in the inventory (or dropped if this is full).

The intended use of the system:
- Serve as a money sink - you have always something useful to do if you want to spend your gold.
- Build your own item if you dont like the randomization at the black market. Result will be weaker enchanted at average, but has the right enchantments in return
- Improve existing equipment with moderate current enchantment
- If you get a higher level item than what is offered in the current shops you can make some use of it, even if its not magical yet.
- Of course just some new feature the players can enjoy :)

As usual, some further design aims are to prevent the creation of super-items and to make sure, that excessive grinding is not significantly rewarded. I dont expect a big change in overall player strength, I hope that this essentially reduces the problems of players that have really bad luck and just do not find a good weapon. In return, I have reduced the quality of the blackmarket items a bit.

As usual, comments are very welcome.

General / Significant changes to the skills after 0.5.3
« on: October 03, 2010, 05:30:08 PM »
Directly after 0.5.3 is released, it is planned to make some significant changes to several skills. Of course, the aim is to make the game more interesting and the skilltrees more diverse.

I will use this post to explain why the system is as it is and what are the thoughts behind our game design. This is also required as a foundation for the discussion. I will point out what are the problems that need to be fixed. The specific changes are placed in a second post.

Something I dislike with diablo and other ARPGs is, that mages spam spells like a machine gun and other classes (warrior, archer) choose one special skill and use it permanently. A second thing that I noticed is, that the concept of mana is really inefficient at limiting the players strength (especially mages). What I did in diablo was spamming spells as fast as I could and just throwing in a mana potion when needed. Moreover, skilling energy (which raised max mana) was a silly option for almost all classes. The important variable to limit magic strength was always the cooldown timer, mana was just annoying.

So the decision was to use only delay timers and no mana. These timers were chosen in such a way, that the majority of your attacks are still normal attacks. Originally, there was only one timer for everything. We realized really fast, that this wont work because skills that use the same timer compete with each other, because you can always only use one of them and you have to choose. You dont want that a 1.5 second delay special attack competes with a 3 minute delay buff because that is just an awquard choice.
So we ended up with independent timers, which is the current state.

Another principle we chose was: No skill levels. In Diablo, you usually put 80 skillpoints into 4 skills and ignore the rest. Often you only use only one or two of them actively (at least one is usually a passive boost). This makes gameplay one-dimensional and boring. We wanted that each skill has its use (in contrast to diablo, where usually at least 60% of the tree was not worth putting more than one point in) and that players actually use several of the skills he aquired.

A last general principle is: Gameplay arguments outweight any realism/fantasy style arguments.  No matter how realistic or good from a story point of view a proposal is, if it makes the game less fun to play, its a bad idea.

Now why change anything ?
First of all we already realized that the two timer system has serious flaws in some cases. For instance making the skilltree for the priest was a real pain, because he has several different groups of abilities like magic attacks, healing spells, buffs and crowd control skills that you dont want to compete with each other.

Second, we got (sometimes rather harsh) criticism by different players on IRC, especially lmg (another almost-graphics-contributor, but thats another story). His main point was, that the mage is boring to play because you always have to wait for the timer. Although I strongly disliked most of the proposals we (in fact is was kalimgard how did this endless discussion - thanks) got there (among them the usual ones like mana, skill levels) one main point is valid: The mage has only timer 1 skills until level 15 so he can only use one skill at once.

Third, we still have a sort of implicit skill levels, because many skills have an upgraded version. This is no problem in general, because you just cant make up skill trees with 24 skills (where each one is useful) without any repetitions. However, we were not really imaginative here and often the pattern is just - more damage (or whatever the skill does as main effect). This has also been critiziced already and this criticicm is justified. Again, the mage is especially *boring* in this regard.

General / Analysis of the review
« on: September 20, 2010, 11:43:08 PM »
As first already pointed out, we got a review, that can be seen here:

First of all, this is a very positive event as it shows that we get noticed and that we are considered as good enough to do such a review. Furthermore this could help us to get more attention and it points out problems we have to fix. I bet this will give us a lot of things to discuss.

However, after watching the video I have to say I am also a bit dismayed about some of his critisism - not the justified points but the *bugs* that as just based on the fact that he did not play the game longer than about 20 minutes. I saw that his first character was level 2 - based on the fact that you get level 3 if you slay the first 10 enemies after the tutorial I bet he never played anything more than the tutorial. Perhaps I am wrong with that opinion, but I thought when doing a review you should invest 15 minutes gameplay time after the tutorial.

Ok here is a list of points he mentioned during the video:

- There are no options
Although he not completely right here, this is a very valid point. I will fix this tomorrow putting the options on the screen where you select single player, multiplayer etc. However, the first screens are titlescreen and savegame selection screen. He already complained about missing options there and my intended change does not allow you to access options during these two screens (main menu is the third screen). Do you think that the planned change is sufficient ?

The worker in the cutscene awaits his death hammering the air
Already planned for change - the idea is to put a fire ring around him and make him run up and down in this circle (he must not escape, so having him run away is no option). For hammering animation - well they should be busy working, but putting some obstacle in this room (as a workpiece) is just horrible for the further scripting (fire behemoth is really bad as avoiding obstacles). Any proposals ?

No tooltips
This is completely injustified - I think he just never was patient enough to hover anything with tooltips for the few seconds required for the tooltip timer in his first test run. This was mainly the point that really annoyed me, that he continued explained that there *is definitely something buggy* just because he completely missed the tooltips the first time. Playing a few more minutes would have helped too, I cant imagine that you can find your first loot without discovering the tooltips. My conclusion: Perhaps reduce tooltip timer ? However I am strongly against reduction to 0 as I hate flickering tooltips when moving the mouse over the inventory

Its hard to hit enemies
Well this seems to be a constant complaint :(
However, I have no idea how to do it better.  If you start making selection code more inclusive, you will end up with comlaints the other way round. When he complained about the fact that he did not attack the louse he was clicking on, I bet he kept mouse button pressed. Current policy is not to change the target when keeping mouse pressed. This is also Diablo behaviour as far as I know. Well constructive proposals are appreciated, but I cant see right now what to change based on this complaints.

no counter for attribute points
Well I ask myself what this silly label directly below the attribute points itself is for. Thats exactly where diablo kept this counter imo. I just list the point for completeness. But something we _do_ lack is a counter for skillpoints.

you can shoot through the wall
Apart from the fact, that this wall is a veranda with gaps (really not easy to see in this scene) to shoot through, there should be an abyss behind this *wall* later and then we remove the wall. Well, we need a terrain system. However, planned for change.

*Bad* explanation of the right way in tutorial
After getting killed by the behemoth two times he says whe *have to definitely explain the right path better*. I cant really get this points. There is really not a lot of room to get lost during tutorial and if you attack the behemoth after seeing the cutscenes (with damage numbers ^^), well ...

wrong option when asking Tolec to be escorted to Windclaw

There was also an option *open secret door*. This is a bug and must be fixed.

T-pose after death
Something I noticed: After dying character is in t-pose for a second. I know the reason (and its rather deep in my graphic engine), but some day I have to tackle this.

Rogue camera
Making nice camera movements when the user can arbitrarily speed up the dialogue that is running at the same time is a hard thing. It seems we have a few of those issues left. The problem in the video essentially occured because he clicked away some text in a cutscene that was made before this dialogue speedup feature was created. However, making is a central point of criticism is not justified, after all he found one such bug in a quite cutscene-heavy tutorial.

Unexpected teleports
He is completely right here. Sadly, getting a nice transition between regions requires more scripting and most often, also some additional graphics. We have a lot of work left here, as this problems are the same with many other cutscenes and region transitions.

grass textures
Well do we need any more discussion here ? :D

Lengthy dialogs
Hmm that hurts our story tellers :(
I like the fact that we have a rather extensive story. After all, this is where we can be actually better than commercial games, while we will never be able to compete with graphics for instance. With beeing able to skip the text if you just want the action, I can notsee why this is listed as a negative point. Here, no change in style will happen.

OK that is a long text - please try to write shorter answers ^^
Naturally, I concentrated on the negative points of the review, because this is where we have to work and therefore should discuss. We should not forget that he also had a lot of praise and positive remarks for various aspects ranging from gameplay and content to graphics. At the end this video should leave us proud of waht we have achieved but also motivated to continue work.

General / Aims for 0.5.3
« on: September 13, 2010, 08:47:31 PM »
I have decided not to make a long list of required features for a new version again, because this was one of the reasons for the big gap between 0.5.1 and 0.5.2. Instead I will specify one crucial aim and if this is achieved, the new version will be released. Of course, the idea is to get a faster pace of releases this way with still having some significant improvement with each version. However, I will stop making a new version dependant on significant improvements in _each_ area.

For 0.5.3 the central aim is the switch to CEGUI 0.7 and Ogre 1.7. A branch of the game has been developement for quite a while by fusion using these new libraries. In there a plenty new, cool features using the extended abilities of the libs (for instance colored Tooltips) to justify a new version.

Of course work on graphics, sound, music, translation and storyline will also continue (hopefully). But we wont delay the release (at least not more than few days :D) and just take what we have when the jump to CEGUI 0.7 is complete.

Expected timeframe is about three weeks from now. But I should be careful with such predictions, as my last one was terribly wrong.... :dodgy:

General / Long-term aims (version 0.6)
« on: September 08, 2010, 10:24:32 PM »
This is a list of aims for a bigger timeframe. These are essentially the things I want to see before I will call it version 0.6:

- Improved minimap
- stable and well-tested network
- enchanting system
- system for creating paths and streets
- terrain
- shadows (somehow)

- Gui reskin

- Icons for all skills
- improved particle systems
 - support for billboards ?
- replace all placeholder graphics

- all sidequests that are located before the fight against the lich
- at least one smalltalk topic for each npc

Sound, Music:
- Fill the gaps, especially with sound

This is only a first draft, feel free to post some comments and to propose other things the belong to the list.
The aim essentially is, that the first act (until the lich) has no obvious rough edges anymore and feels like something you could call 1.0 - except the fact that it is only the first act that is complete :D

General Discussion / Version 0.5.2 released
« on: September 02, 2010, 05:47:30 PM »
After quite a period of time, Version 0.5.2 is finally complete. I have just uploaded it to the download section. It took a while to get it completed, but it is also a huge step forward again. Thanks a lot to everyone who contributed to it.

Here is a short list of the most important new features:

- Introduced a stash where players can store items
- Replaced networking library Raknet by Enet
- Added option to choose highlight color to improve gameplay experience for colorblind players
- Added option to adjust difficulty

- new images for various skills
- improved image for the world map

- Added lots of music
- Added various new sounds

- fully integrated cmake build system
- Created full-featured MAC-Build

Have a lot of fun :D !

General / Please playtest: Difficulty options
« on: August 23, 2010, 04:14:33 PM »

among the many little changes I made recently is also a difficulty option that can be found in the Options menu. There you can adjust difficulty to the setting easy, normal, hard and insane.

Please test these changes and give a report if these are appropriate. In other words, easy should be noticably easier than normal and rather relaxing, hard really challenging but still managable when playing more cautiously. Insane is allowed to be rather annoying to *normal* players (there are some player that have the urge to torture themselve to be able to brag with it) but not impossible ^^

Programming / Changes to translations system
« on: August 08, 2010, 11:27:39 AM »
Out current translation system has two serious problems that I intend to fix now. As I am not the only programmer anymore, I will take the chance to discuss my ideas, before I start hacking.
The issues are:
1. All translations are stored in few files (per language). This does not scale very well as one of these files will get huge in future and does not allow parallel work on one language
2. Strings that contain some script variables are evaluated on the server (because only the server runs the scripting engine). So if in a multiplayer game, server and client use different languages, these strings will be displayed incorrectly.

Current state is:
- translations for gui labels and other in-code strings are in sumwars-sumwars
- translations for Object names and other XML attributes that are displayed ingame are found in sumwars-xml
- translations for all the story text is in sumwars-events (this is the one, that will get huge...). All these

Now the plan is, to split sumwars-events into several smaller parts.  Now, each string that must be translated must know, which translation file to use. Of course its tedious, to declare this for each single string. My idea is, that a translation namespace can be declared for a complete Quest or Region and all Events inside (and all strings inside these events) inherit it. I would still allow to explicitely specify a different translation file for each event.

Possible Syntax (everything except the new things omitted):
Code: [Select]

All attributes are optional, always the innermost value is used. Usually you will only specify one translation file for the whole quest I suppose. We may discuss if it would suffice to allow only that.

On the second problem: I plan to use a placeholder system.
Current system ( btw _() ist a shortcut for translation function):
Code: [Select]
_("you have to pay "..goldvalue.." gold.")
New one:
Code: [Select]
_("You have to pay $1 gold",{goldvalue})
The $1 is a placeholder that will be replaced by the first value in the list that this given as second parameter. The server will evaluate the list and turn it in to a stringlist. The text and the stringlist is sent to the client. The client will first translate the text and then replace the placeholder by the values in the stringlist.
The whole idea has one serious drawback: The scripts we use to detect translatable strings might not like the change in the syntax of the _() function. In the worst case, we have to write our own ones.
I am not sure if $n is the best choice for the placeholder, we definitely have to provide a way to escape the dollar sign ($$ for instance).

One important point is, that if we specify sumwars-events as translation file everywhere, it should work without any change to the translation files right now.

Ok, enough text written here, please give some comments / ideas / proposals.

General / Absence during next week
« on: July 22, 2010, 09:21:44 PM »

I will be on vacation next week, so I wont be present on forums and IRC. So dont send important PMs to me ;) . And try to hire promising new contributors that may show up on IRC (dont tell them to wait for me) ;) .

Sound & Music / How to test music ingame
« on: July 18, 2010, 07:13:05 PM »
Music made for the game can be easily tested by using the chatline (commandline). All music must be provided in .ogg format and placed in the ressources/music directory.
After starting game with an arbitrary savegame, open the chatline (Enter or m) and type:
Code: [Select]

The dollar sign at the begin is to signal to the chatline that the message should be executed as a command. The musicfile will be played in a loop. To stop the music type:

Code: [Select]

To integrate the music into the game, the music tracks need to be added to Regions. This is done in the WorldData XML (to be found in data/world). The syntax is as follows (all other tags omitted):

Code: [Select]

The music files are played in a loop at random order.

Graphics / How to use graphic tools to test new content
« on: June 30, 2010, 07:14:42 PM »
There are two tools available for testing new graphic content, especially new models. The purpose of this post is to describe how to use these. The tools can be found in the directory tools below the project root folder. If you are using windows, download the precompiled tools package from the download site and place the tools folder at the described place.


The meshtest tool allows to render on ogre mesh and apply an animation to it. In addition, some extra meshes may be attached to bones of the main mesh. For instance you can attach a sword to the hand of a monster.

After creating the  Mesh in a 3D modelling program, it must be exported to ogre mesh format first. There are exporters for Blender, Maya and 3DSMax for sure, others might exist. The resulting files must be copied to the ressources folder:
*.mesh and *.skeleton (if existant) to resources/models
textures to resources/materials/textures
material scripts to resources/materials/scripts

The mesh and the animation shown are controled by a files named mesh that can be found in the meshtest directory. If this file does not exist copy it from mesh.sample . The syntax of the file is pretty self-explanatory:
Code: [Select]

itemRightHand sword.mesh
itemLeftHand broken_shd.mesh
# everything after first # character is ignored
File layout:

animation (optional)
bonename object_attached_to_bone (optional)
bonename2 object_attached_to_bone2 (optional)

Please be aware, that excessive testing for malformed input files was omitted, so the tool might crash in this case. This might be improved in future.


The game's graphic engine is based on so-called GraphicObjects. A Graphicobject can be a composite of several meshes (maybe some of them attached to bones of others), particle systems and sound emitters. The request to render an action for a GraphicObject can result in different animations for the parts, addition or deletion of parts, emission of sounds and several other effects. The components and the behavior of a GraphicObject is described by a special XML type name RenderInfo. A complete documentation on RenderInfo system will be presented on the XML Documentation page.

The purpose of this tool is to visualize to visualize a Graphicobject, so essentially to test the RenderInfo.

Again, the tool is controlled by a file named mesh in the graphicengine folder. If this files does not exist, copy it from the mesh.sample. The format for this file should be selfexplanatory:
Code: [Select]

# everything after the first # is ignored

File layout:
action_name (optional)
time_to_complete action(optional)

Programming / Replacement for RakNet
« on: June 23, 2010, 06:34:17 PM »
Yesterday  we noticed that RakNet is completely malfunctioning on 64-Bit systems.
After discovering one glitch after another with RakNet, I have decided that this lib should be replaced rather sooner, than later.

The question is, what to use instead.

The first option that is always mentioned is Boost::Asio. This is definitely the most portable choice and is almost guaranteed to make no compile issues. On the other hand its lowlevel and really intimidating difficulty. When saying that, I am not speaking about necessary complexity, but about (in my opinion) obfuscating over-flexibility.
For instance, the most simple example one could do with networking is an UDP echo server - no connection, just sends back all data it receives. Boost sample has nice calls like this one in its implementation of the echo server:
Code: [Select]

          boost::asio::buffer(data_, bytes_recvd), sender_endpoint_,
          boost::bind(&server::handle_send_to, this,

The next lib I found is ACE, which seems to me like capable, but huge and rather dated. Moreover, when I looked for samples I found some PDFs first, that were converted from Powerpoint (in one word: horrible). It seems, that there is a professor who wants to sell his books on his library.

A third example I found is POCO, which is a huge lib and seems like a complete overkill for the project.

When doing a simple google search, you can find a dozens other libs that share one (or usually more) of these defects:
- Have no proper documentation or no good samples. When I see that the doc consists of one huge pdf (or even ppt) File I get sick immediately. Hardly anyone has a doxygen doc or something similar.
- No object orientation. Well boost overdoes it a bit, but I really dont want to work with a huge bunch of ugly C functions. I accept that for really small interfaces, but this is already to big for that. Often comes with bad documentation.
- Huge bunch of features and we would use only a very small part. It seems that people who write network libs love to mix in serialisation, encryption, compression, multithreading, datastructures, database stuff, parsing, file structures and much more. I hate this *you have to take it all* mentality.

After searching a bit I come to the conclusion, that Raknet was really the best by far, if it was free and if it was working correctly. Unfortunately, thats two false values in one *and* clause.

So first question: Do you know any other lib, that I should have a look at.
I will extent this post later with more libs I recognized and a detailed list of features that we need.

General / Spambot issues
« on: June 22, 2010, 05:54:16 PM »
We are having massive problems with spambots in this forum. Its a sad truth that as soon as you put something onto the net, this damn scum comes to pester you. At the moment we are not very good at kicking them out. Although they hardly get to post anything, more than 50% of all *new* users are such spambots.

At the moment these are banned automatically, but they are deleted manually. Now I have registered, that the system reports some false positives, on other word bans real users. Please send an e-mail if this occurs and dont be too upset. The filter will be changed to be less agressive right now, but I still can not garuantee, that no further errors occur.

The whole issue is beeing dealt with, but progress is rather slow, because these bots dont cooperate well for immediate testing of any actions taken ;) .

Pages: 1 2 [3] 4 5