Sunday, April 14, 2013

Patching

It's virtually inevitable that there will be bugs found in any release, and naturally Crimmor was not immune to that. I followed the good practice of included a patch hak. What I've done is make the odd number patches via the patch hak, to allow updates for people that have already started and have savegames, and the even number a full update that addresses the things that can't be patched, map changes and such. Version 1.04 should be up at the Vault/Nexus today.

Thursday, April 4, 2013

Crimmor is released!

Vault link.

Now to cross my fingers and hope no one finds any gamebreaking bugs. :-)

Crimmor is a module for solo rogues of level 8 (you can level up and receive appropriate gold ingame). Use skills and rogue abilities as a Shadow Thief in the streets of the Amnian city of Crimmor.

You may like this module, you may not. Crimmor is experimental and is focused primarily on the urban environment and providing the "feel" of a city, as well as rogue focused non-combat gameplay. If you are all about combat, this is probably not the module for you.

Crimmor pushes the NWN2 toolset's hard limit on objects in the external city areas, additionally, there are numerous npcs in the city. I recommend a modern pc. You've been warned.

Crimmor takes many things, from food, street, shop, and npc names, to the unusual relationship of the Shadow Thieves to the city, from Ed Greenwood's article on the city in Dragon Magazine issue 334. Thank you Ed. Some things I had to change in the interest of gameplay.

Characters without rogue levels are unsupported, though bards will probably work fine as well. You are not required to have levels in the Shadow Thief of Amn prestige class. You are not required to be evil.

Magic levels are low, there are few +2 items. Don't worry about that, Crimmor isn't a module about "powering up". You can reach up to level 14 in Crimmor. There are four possible endings, not all of which are good for the pc, and it is possible to end the game via decisions you make before the "end".

Among other things, Crimmor uses a custom lockpicking system (courtesy of RWS), all custom sound in the environment (courtesy freesound.org). It has custom weapon and item classes, and pseudo prestige classes (Crimmor does not change any 2das except for the loadscreens and trees.2das, so it works with any custom content that does not alter these, including class packs). Finally, the thieves speak cant. A pdf guide has been provided that goes over gameplay things, and includes a dictionary of the cant used as well as some background on Crimmor.

The module is completable without killing anything. There's no secret achievement or bonus for doing so. No xp is awarded for combat, only quest completion and exploration. There are approximately 10 hours of content.

There's a lot going on behind the scenes with things, and some things are pretty complicated. As with any 1.0 release, there are bound to be some bugs that managed to slip by, but there are two I am aware of:
Lockpicking does not consume lockpicks (yay for you, freebie!). Lights do not affect the hide skill though the DM will tell you it does, as there were seemingly unsolvable problems with this (I hope to get this fixed via patch). These have minimal game effect and were significantly delaying release, so I chose to go ahead and release.

Thanks to my testers: Arkalezth, PJ156, GFallen01.

Saturday, March 16, 2013

Beta Progress Update

Most of the reported bugs with Crimmor are fixed. I'm still tracking some performance related things down and trying to figure out good ways to implement some tester suggestions.

I haven't been able to give things my full attention (I'm not secretly playing Neverwinter Online or anything, though I did go through a week of Civ5), just lacking motivation recently. Not to worry, it will pick back up at some point and I'll get things done and released. I go through periods when I've not been the most dedicated modder, they always go away :-)

Monday, March 11, 2013

Neverwinter Online Beta

I have a beta key (they can be gotten for free). I played much of the weekend.

Neverwinter Online (NWO) is an Action RPG MMO. NWO is Diablo or Torchlight, but with a third person camera. NWO is not a translation of DnD rules of any edition into MMO format, it uses a traditional action rpg style ruleset, with DnD names assigned to things.

If you do not like action rpgs, you will not like NWO. You can safely ignore any and all dialog and story. If you like RPGs, I would in fact encourage you to actively do so, as your head may explode otherwise.

The game is slated for release "early 2013", and official video streams from Perfect World (PW is the owner of Cryptic, the dev making NWO) mention April. The game as it stands in this second beta has numerous serious bugs and other basic multiplayer and party issues. I do not believe all the issues and bugs can be addressed before the end of April (the latest possible date that fits their current release announcements).


Neverwinter Online will be free to play. Cryptic plans on making money via microtransactions, selling game currency, armor dyes, unique mounts etc. During beta, it did not appear that anyone would need to buy anything before coming to a conclusion on whether they like they game or not.

Thursday, February 21, 2013

Beta

Crimmor is ready for beta. I've messaged people that tested the proof of concept long ago, and a few builders. Since dropbox doesn't have unlimited bandwidth on accounts I don't want to post links for everyone and get the dropbox account temporarily locked, preventing people from downloading, if you are interested send me a message via Bioware Social, my profile is here:  http://social.bioware.com/2429179/ .

Monday, February 11, 2013

Bringing .max files into Gmax, without Max

You need 3DExplorer from http://dutch-boy.com/3De/ (version 1.8 or above), which will open .max files and allow you to save them as .3ds and .obj. Once they are in .3ds you need gmax scripts that can import the object into gmax. Fortunately someone made scripts for that. You need the 3ds importer v1.1 from http://pages.videotron.com/browser/ I found that page via the Natural Selection modding website, at http://forums.unknownworlds.com/discussion/95819

Tuesday, February 5, 2013

Summoning the Sound Ninja - a PlaySound fix

The PlaySound function puts a sound playing request into the queue of the target creature, which means it doesn't actually play the sound until the other actions in the queue happen. "But I want to play the sound now, not when and even if the queue finishes" you say?

http://nwn2.wikia.com/wiki/PlaySound mentioned using a scripthidden "sound ninja" to stand in and play a sound, but didn't have an implementation, and the suggested implementation looked like it hard coded the sound into the onSpawn script of the sound ninja, so you'd have to make a different ninja with a different script for each sound. So here you go, a generic sound ninja summoning version of PlaySound, this ninja does not require any scripts at all.

/*
    credit to kevL at http://social.bioware.com/forum/1/topic/164/index/15800566#15801095
   
 ga_play_sound replacement, summons the "sound ninja" creature to play sounds since
 playsound goes at end of action queue, so an npc may not play immediately
 for more see http://nwn2.wikia.com/wiki/PlaySound

 Note that the sound ninja does not need to have any scripts on it at all, but "Disable AI
 while hidden" must not be checked.

 Also note the string sSound is not the tag of a sound object, but the name of the actual
 wav sound file to play

*/
#include "ginc_param_const"


void kL_PlayNinja(string sSound, object oSoundNinja, float fDelay)
    {
    DelayCommand(fDelay, AssignCommand(oSoundNinja, PlaySound(sSound)));
    fDelay += 10.f;
    DelayCommand(fDelay, DestroyObject(oSoundNinja));
    }   

void main(string sSound, string sTarget, float fDelay)
    {
    object oTarget = GetTarget(sTarget, TARGET_OWNER);//
    location lTarget = GetLocation(oTarget);
    object oSoundNinja = CreateObject(OBJECT_TYPE_CREATURE, "sh_sound_ninja", lTarget);
    if (GetIsObjectValid(oSoundNinja))
        {
        DelayCommand(0.1f, kL_PlayNinja(sSound, oSoundNinja, fDelay));
        }
    }