Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 06 Oct 2006
Offline Last Active Today, 10:05 AM

Topics I've Started

SCI Companion, a development tool for Sierra graphic adventures

07 February 2016 - 02:39 PM

Website with downloads and documentation.


I've spent much of the last year working on version 3 of SCI Companion, which lets you create (and mod existing) games that run on Sierra's SCI engine from the late 80s and early 90s (game's such as King's Quest or Leisure Suit Larry).


I released version 2 many years ago, which provided support for EGA SCI0 games. Version 3 now supports VGA (256-color) SCI1 games, which also include digital audio/speech. It comes with a complete template game to get you started, extensive documentation, and there is a small but passionate community to help you out and inspire you.


I have also implemented a decompiler, which can generate source code from the original games script resources, letting you make script patches to old games (or reveal Easter eggs).


Of course, it's all free too!


Here's the official blurb from my site, which I linked above:



SCI Companion is a completely free IDE (integrated development environment) that lets you create games that run on Sierra’s SCI engineSCI Companion 3 is now available, which offers support for SCI1.1+, which includes VGA graphics and digital audio.



Create 16-color EGA graphical adventures with a text parser interface (in the style of King’s Quest 4, Space Quest 3 or Leisure Suit Larry 3).


Create 256-color VGA graphical adventures with a point-and-click interface (in the style of Space Quest 5, Gabriel Knight, or Quest For Glory 3).


Comes with a complete well-documented class system and template game.


Lets you browse, extract or modify graphics, text and sounds from nearly any SCI game that you own.


Decompile the code behind these classic games to see how they work (or find Easter eggs). Scripting in SCI is accomplished via a language similar to LISP and SmallTalk.


Includes streamlined editors for graphic assets.


And other game resources like text and audio.


Options for GPU debugging DX11 on Windows 7

22 January 2015 - 01:48 PM

I'm using Visual Studio 2013 Express for Windows Desktop (as I'm on Windows 7). This doesn't support the new VS graphical debugging stuff. And PIX doesn't seem to work for DX11 either.


What are my best options for being able to step through shaders, and inspect the various buffers as they go through the graphics pipeline?

Scripting solution for C# project

29 May 2014 - 05:47 PM

I'm trying to come up with a scripting solution for my entity component framework written in C#. This would be for specialized scripts attached to entities. Right now I have a Script component to which you can attach script ids. These ids map to C# classes that implement the scripts. There is only one instance of each script. When it runs it is presented with "property bag" state associated with the entity, and it can read and write values to that.


It's functional, but the way I get/set script properties in code (accessing them by id from a property bag) is ugly. I'd rather just be able to treat them as regular C# properties on the script object. The reason I can't do that is because I need to quickly serialize the state of the script. 


I have the following requirements:

- I need to be able to reasonably quickly serialize the state of the script and equally quickly re-hydrate it. The state should be platform portable, and generate no allocations during serialization (this I have now)

- Be able to store variables of simple data types (float, int, etc...) as part of per-entity per-script state. (this I have now)

- Access those properties with clear syntax (E.g. "DeathTimer = 1.5", instead of "propertyBag.SetFloatValue(DeathTimerId, 1.5f)"  (this I do not have now)

- Be able to access an entity's components through simple syntax (e.g. "entity.Transform.Position = new Vector3(0, 0, 0)"). (this I do not have now, but I could probably hack something together to give me this nice syntax).



1) I've though about using Lua, but I'm not sure how flexible it is. Can I customize how C# properties/methods are exposed in Lua? i.e. make my ugly PropertyBag object appear as a regular object to which I can get/set properties.


2) I could invent my own scripting language to accomplish everything I want. I started down this path for a while, but it is a lot of work.


3) Keep using C# and find some solution to make my syntax nice (basically this means finding a good way to handle quick serialization of script state). This is the most flexible coding-wise, and has the least dependencies (i.e. I don't need to depend on some 3rd party Lua library), and I'd like to go down this path if possible. If C# had macros, I could easily "auto-generate" object properties that have their data stored in my PropertyBag (ala DependencyProperty). I think this would solve most of my syntactic concerns. But alas...


Any thoughts? What are other people using?

Problems with DXT compression and pre-multiplied alpha

29 March 2013 - 01:32 AM

I'm normally a big fan of pre-multiplied alpha, but I'm having some issues with using it with a certain texture.


Here's a screenshot to demonstrate the problem:




The artifacts are obvious in the top image. If I don't compress the texture, I get the image on the bottom, which looks good.

In the middle is what happens if I use non-premultiplied alpha and DXT5. It looks pretty good (still a few small artifacts). I'm surprised it is so much better than pre-multiplied alpha.


Here is what the RGB and A channels look like for the DXT-compressed texture (grabbed from PIX):


It looks as I would expect.


Other notes:

- I also tried DXT3, but there wasn't much difference in quality.

- No mipmaps are involved. All textures are drawn 1-to-1 texel-to-pixel.

- All screenshots are 3x.


Any idea what's going on here? I have a feeling the problem might go away if I had proper RGB values for the transparent parts, but I'm not sure how to make photoshop do that. (and if that were the problem, why would the non-premultiplied DXT scenario look fine?).



Like spherical harmonics, but 2D?

09 September 2012 - 11:37 AM

Would this just be plain old a fourier series? It's been a long time since my last math course.

Basically, I would like to have a small number of coefficients that I can use to represent a function that varies with the angle around a point in a 2d plane. This sounds like what spherical harmonics are often used for (global illumination affecting a point) but with one less dimension.

Could anyone suggest a website/tutorial somewhere that could show me how to do this? I have an engineering math background, but it's been about 15 years since I touched it :-).