AGS Draconian Edition 3.4.11 r10 (December 31, 2017)

Started by Alan v.Drake, Mon 26/09/2011 01:24:41

Previous topic - Next topic

Alan v.Drake

The Draconian new year's eve edition.
Updated to 3.4.11 + cleanup branch with many legacy things removed.

AGS Draconian 3.4.11 r10 (December 31, 2017) DOWNLOAD

Important:
Since I've built this version on top of the cleanup branch with many legacy features removed, you will have to open and save your old project with vanilla AGS 3.4.11 before being able to import it on the Draconian edition.
Some default templates might not be working, upgrade them with vanilla AGS instead.


Improvements to the Editor:
  • Dark text-editor theme, to preserve your sight
  • Checker pattern on the sprite import window background
  • Multi-sprite replace (select multiple sprites and start a tiled import with "replace selected sprites from file")




    Improvements to the Engine:
  • Sounds generated by Character views are now automatically panned relatively to their position on the screen
  • 3 new Software filters: Scanlines 2x, TV CRT 4x and PC CRT 4x
  • Gamma for windowed mode (Only for brightening up, though)
  • Directional sounds are now panned as well
  • Blend modes



    Experimental features:
  • bool Room.Exists(int room): returns true if "room" exists
  • void Game.SetDirectionRatio(float ratio): change how AGS should decide which direction to face (1.0 default, 1.3 2.0 is good for perspective)
  • Character/Object/Overlay/GUI.BlendMode(enum BlendMode): change the blend mode (only supports 32bit sprites)


    Source: https://github.com/AlanDrake/ags-draconian/tree/ags4draconian



    Previous versions

    AGS Draconian 3.4.1 r9 (October 16, 2016) DOWNLOAD

    AGS Draconian r8 (October 02, 2016) DOWNLOAD

    AGS Draconian r7 (November 28, 2012) DOWNLOAD (fixed)[/size] (Note: this version doesn't have Calin changes to DrawingSurface because the one who requested it had trouble with them)
    HOTFIX 2 for DefaultVolume being ignored + Audio not repeating on load (April 11, 2013)

    AGS Draconian r6 beta (June 02, 2012) DOWNLOAD

    AGS Editor Night theme  (vanilla-compatible): DOWNLOAD.

    AGS Draconian r5 beta (April 13, 2012) DOWNLOAD

    AGS Draconian r4 (April 06, 2012) DOWNLOAD

    AGS Draconian r1: DOWNLOAD
    Note: These mods can be used separately, if you only want the improvement on the Scintilla interface only copy "AGS.Controls.dll", if you want to be able to use #region/endregion copy "AGS.CScript.Compiler.dll" or if you're only interested in the engine's change "acwin.exe"



    - Alan


monkey0506

Looks sexy. What are these vertical indentation guides??

Do regions show up in the drop-down at the top of the script? I'd very much like them to if nobody else thinks I'm insane for suggesting it. :=

Alan v.Drake

Quote from: monkey_05_06 on Mon 26/09/2011 04:54:49
Looks sexy. What are these vertical indentation guides??

Do regions show up in the drop-down at the top of the script? I'd very much like them to if nobody else thinks I'm insane for suggesting it. :=

No they don't show up in the dropdown list.
About the indentation thing look at the picture closely, there are vertical dots between the while brackets, are they too bright ? I didn't want them to bee to much of a eye sore.


- Alan

monkey0506

#3
I see what you mean about the indentation guides. It works (and shows up) especially well when you have multiple levels of indentation.

One thing I've noticed about the regions is that autocomplete is still showing up. I suppose some people might want it to work for preprocessor evaluations, so that their macros will show up, but could you look into disabling it if the first three letters of the line are "#re"?

Also, I'm not sure how easy it might be to modify the Scintilla control's folding further, but I really hate the way that it collapses things. If it's too much work then just ignore me, but the way Visual Studio does it is very nice. Basically it would look more like:
[-] void OhMyGod()
 |  {
 |    // fancier folding
[-]  while (true)
 |    {
 |      // Indentation guides
 |-   }
 |- }
...and when collapsed...
[+] void OhMyGod() [ { ... } ]
So instead of collapsing from the opening brace, it would collapse from the corresponding function name or if or while statement, and instead of that hideous line underneath showing that there is hidden code, it would show a greyed out bit of text. Again, if that's not really feasible then just feel free to ignore this bit.

Oh, and more graphics filters! Invent new ones, I don't care, just give me moreeeee! ;D

Oh, oh, and...Dual will love you for making it so he can click on the line numbers to select the text again. He hated the tedious act of having to click on the line, press End, hold Shift, and press Home. I mean, what is this, the Stone Age? :P

Alan v.Drake

Quote
One thing I've noticed about the regions is that autocomplete is still showing up. I suppose some people might want it to work for preprocessor evaluations, so that their macros will show up, but could you look into disabling it if the first three letters of the line are "#re"?

I guess it could be done, but I don't think it's worth the hassle. But if you want to try and do it yourself, the place to look at should be inside ScintillaWrapper.cs, private void ShowAutoCompleteIfAppropriate(int minimumLength)

Quote
So instead of collapsing from the opening brace, it would collapse from the corresponding function name or if or while statement, and instead of that hideous line underneath showing that there is hidden code, it would show a greyed out bit of text. Again, if that's not really feasible then just feel free to ignore this bit.

Not feasible, Scintilla can't do that, sorry.

Quote
Oh, and more graphics filters! Invent new ones, I don't care, just give me moreeeee! ;D

Suggest a proper one and I shall evaluate.

Quote
Oh, oh, and...Dual will love you for making it so he can click on the line numbers to select the text again. He hated the tedious act of having to click on the line, press End, hold Shift, and press Home. I mean, what is this, the Stone Age? :P

What do you mean ? It always worked and still does. Is Duals clicking on the breakpoint area instead of the numbers ?



By the way, I made a dark colored version of the editor for people who aren't too thrilled of coding with white backgrounds.



Download: http://www.mediafire.com/?6r3fw4xtw5dwtoh


- Alan



Ryan Timothy B

#5
Something that bothered me a few days ago, is there any chance that enums could show as a different color?
Like  eRepeat  should show up as blue or something that isn't used already. That way it keeps it distinguishable from an int variable or something.

I really like the dark background for scripting. That's something I'd definitely use if the colors are setup nicely.

Edit: I'm still waiting for someone to tackle the alpha blending dynamic sprites. That would be super nice. Or someone to change the way GUI's work with alpha buttons and such to work just like layers in Photoshop regardless of what background image the GUI is using.

Calin Leafshade

Quote from: Ryan Timothy on Tue 27/09/2011 15:08:39
Edit: I'm still waiting for someone to tackle the alpha blending dynamic sprites. That would be super nice. Or someone to change the way GUI's work with alpha buttons and such to work just like layers in Photoshop regardless of what background image the GUI is using.

Would you accept an OOP plugin? Or do you distrust plugins?

Ryan Timothy B

#7
Well, for Journey of Iesir being a commercial game, I'd prefer to not use a plugin. For that I'd still prefer it built into AGS. I know you've already used it for Eternally Us and out of the 16,000 downloads, no one has reported an issue. Perhaps one day I'll crack, but the project isn't near complete yet and I've left all my code ready to be able to swap over to alpha blending dynamic sprites. So either AGS will get this built-in before the project is complete, or I'll just eventually use your plugin.

Also you can still make that Box2d plugin of yours. I'd name my future babies after you, and hopefully my daughter would be just as cute as you too. ;)


Edit: Also another feature I'd like to see added to the editor. Being able to press the back button on your mouse to go back to the last thing you were at, or last line in a script. So if I was in the globalscript and moved to the room editor. If I pressed the back button I'd like it to go back to the globalscript at the line I was working on. Or if I scroll up the list in the globalscript and edit something near the top, pressing the back button should take me back to where I last was. The C# editor has this feature.

Alan v.Drake

What's the deal with DynamicSprites ? I only used them once, give me a demo or something with examples and comments of what should happen and we'll see what can be done.

Enum colors: that stuff involves the lexer which lacks a proper keyword for them and implementations and whatnot. I'm not touching that for now.

Mouse back button: I don't have back buttons on my mouse and I don't have any idea how to code that properly. But it would be nice to have bookmarks.

By the way, is there any of you using that beta 3.2.2 verison of the editor with docking panels ? Does it work proper ?
I'd like to make my changes over there, if there aren't any weird bugs.

- Alan

Dualnames

monkey05_06: LOLOLOLOLOLO.

Also I've just been used to click there so much, now it's hard not to click on the breakpoint area. AND YES, we're not on the Stone Age, I mean, yeah, pixel shaders are great, but wouldn't be great not to script on my own the following stuff I've been using over in my games.

Character. Face (enum direction);
eEventAfterFadeIn
Character. Position (int x, int y); (this is to help testing a lot)
Character. ChangeSpeed (int tospeed); (This is to avoid doing all the tedious stop moving and shit)
Abs(int number);

And the list is practically endless.


Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

Calin Leafshade

The DynamicSprite problem is actually trivial to fix if you take the drawing code from AGSBlend and put it in the DrawImage function with some catches for non 32-bit cases.

I just havent been arsed to fix it yet.

monkey0506

Quote from: Alan v.Drake on Tue 27/09/2011 14:39:53
Quote
One thing I've noticed about the regions is that autocomplete is still showing up. I suppose some people might want it to work for preprocessor evaluations, so that their macros will show up, but could you look into disabling it if the first three letters of the line are "#re"?

I guess it could be done, but I don't think it's worth the hassle. But if you want to try and do it yourself, the place to look at should be inside ScintillaWrapper.cs, private void ShowAutoCompleteIfAppropriate(int minimumLength)

Just from glancing at that file, wouldn't it simply be as easy as returning from the function without showing the autocomplete window if the current line starts with "#re"? The Scintilla control has methods for getting the contents of the current line. You might have to manually trim whitespace, but I'm pretty sure there's a built-in function on C#'s String type for that, isn't there? So I don't see where "the hassle" would be at to write a few lines of code. If you're typing out the name of a #region in the AGS Editor then the only way to stop the autocomplete from replacing things that remotely match is to press the Esc key at every word. It would seem much more of a hassle to me to deal with that than to have to write the exception into the wrapper code.

Regarding the collapsing, is there at least a way to make it not look so hideous? Even if you can't collapse to the parent token, it still just looks aesthetically horrible.

Ryan Timothy B

Quote from: monkey_05_06 on Tue 27/09/2011 22:20:15
Even if you can't collapse to the parent token, it still just looks aesthetically horrible.
I agree. I also write my code with the opening brace below the function call or if/while statement. It looks terrible and sets off my OCD alarm with a single brace there with no visible closing brace. That's one reason why I never use the collapsing features.

tzachs

Well done Alan, it looks really nice!

About the vertical guide lines, I don't know if you did it already, but if you didn't, then it would be nice if each vertical nesting level had each own color. I have it in visual studio via an addon, and it really helps things look nice and neat.

And regarding the dark skin you did, it would be great if users would be given the option to create their own skin, though probably a lot of dirty work to code that.

Khris

Great work; love the new folding.

Since I put my {s at the end of the same line (which is way prettier anyway :=) folding looks just fine.

Alan v.Drake

#15
Guys! How the heck do I add commands so the AGS compiler recognizes them ?
I'm attempting at make a Tint(R,g,b, s, l) for regions, but the AGS compiler still believes it should have 4 parameters.
Where am I supposed to make changes ? I was guessing agsdefns.sh, but obviously I was wrong.


- Alan

EDIT: txtspelling my arse!

Calin Leafshade

The compiler is in the native DLL which isnt open sourced yet. So sorry, no new commands.

EDIT: Actually thats not true. In the platform.cpp file you should see all the functions. You could add one there and also add the definition in the agsdefs file.

Alan v.Drake

#17
Oh well,it turns out it was my fault, I had made the change in the wrong place inside agsdefns.sh, on a obsolete function instead of the right one.
All's well that ends well.

EDIT: Ah, yes! At last it appears to work. I'll do extensive tests tomorrow. Obviously it'll break compatibility.

- Alan

Ryan Timothy B

Do you think you'd be able to make a Character.LightLevel property? AGS already uses light level with the regions to darken/lighten a character, but it was never added as manual function.

Calin Leafshade

It has just occurred to me that its possible to make new functions and stuff *without* the compiler being open.

We cant add keywords like switch or ternary operations but functions we definitely can.

This needs investigating..

monkey0506

I was actually wondering why you assumed it to be completely impossible without the compiler being open. I mean, I don't see why the linking would be so drastically different as to prevent internal changes to the engine but yet work fine for plugins. Obviously the plugins are a separate compilation (assembly), but the linking I should think would work the same.

In any case, good, someone's finally looking into improving the engine. :=

Calin Leafshade

#21
I guess i just wasnt as cool as you :(

Try this acwin:

http://www.thethoughtradar.com/AGS/acwin.zip

It allows true alpha blending.

Only done preliminary testing but seems to work perfectly fine.

Heres the code for Alan's version

Code: ags

void Manual_Draw(BITMAP *src, BITMAP *dest, int destx, int desty, int trans)
{
	trans = 100 - trans;

	long srcWidth, srcHeight, destWidth, destHeight, destColDepth;

	acquire_bitmap(src);
	acquire_bitmap(dest);

	unsigned char **srccharbuffer = src->line; //8bit
	unsigned short **srcshortbuffer = (unsigned short**)srccharbuffer; //16bit;
    unsigned long **srclongbuffer = (unsigned long**)srccharbuffer; //32bit

	unsigned char **destcharbuffer = dest->line; //8bit
	unsigned short **destshortbuffer = (unsigned short**)destcharbuffer; //16bit;
    unsigned long **destlongbuffer = (unsigned long**)destcharbuffer; //32bit

	int transColor = bitmap_mask_color (src);

	srcWidth = src->w;
	srcHeight = src->h;
	destWidth = dest->w;
	destHeight = dest->h;
	destColDepth = bitmap_color_depth(dest);

	if (srcWidth + destx > destWidth) srcWidth = destWidth - destx;
	if (srcHeight + desty > destHeight) srcHeight = destHeight - desty;

	int startx = MAX(0, (-1 * destx));
	int starty = MAX(0, (-1 * desty));

	
	int srca, srcr, srcg, srcb, desta, destr, destg, destb, finalr, finalg, finalb, finala, col;

	for(int x = startx; x < srcWidth; x ++)
	{
		
		for(int y = starty; y <  srcHeight; y ++)
		{
			int srcyy = y;
			int srcxx = x;
			int destyy = y + desty;
			int destxx = x + destx;
				if (destColDepth == 8)
				{
					if (srccharbuffer[srcyy][srcxx] != transColor) destcharbuffer[destyy][destxx] = srccharbuffer[srcyy][srcxx];
				}
				else if (destColDepth == 16)
				{
					if (srcshortbuffer[srcyy][srcxx] != transColor) destshortbuffer[destyy][destxx] = srcshortbuffer[srcyy][srcxx];
				}
				else if (destColDepth == 32)
				{
					//if (srclongbuffer[srcyy][srcxx] != transColor) destlongbuffer[destyy][destxx] = srclongbuffer[srcyy][srcxx];
					
					srca =  (geta32(srclongbuffer[srcyy][srcxx])) * trans / 100;
            
					if (srca != 0) {
						   
						srcr =  getr32(srclongbuffer[srcyy][srcxx]);  
						srcg =  getg32(srclongbuffer[srcyy][srcxx]);
						srcb =  getb32(srclongbuffer[srcyy][srcxx]);
    
						destr =  getr32(destlongbuffer[destyy][destxx]);
						destg =  getg32(destlongbuffer[destyy][destxx]);
						destb =  getb32(destlongbuffer[destyy][destxx]);
						desta =  geta32(destlongbuffer[destyy][destxx]);
                

						finalr = srcr;
						finalg = srcg;
						finalb = srcb;   
              
                                                               
						finala = 255-(255-srca)*(255-desta)/255;                                              
						finalr = srca*finalr/finala + desta*destr*(255-srca)/finala/255;
						finalg = srca*finalg/finala + desta*destg*(255-srca)/finala/255;
						finalb = srca*finalb/finala + desta*destb*(255-srca)/finala/255;
						col = makeacol32(finalr, finalg, finalb, finala);
						destlongbuffer[destyy][destxx] = col;
					}

				}
		}
	}
	
	release_bitmap (src);
	release_bitmap (dest);

	

}

void DrawingSurface_DrawImage(ScriptDrawingSurface* sds, int xx, int yy, int slot, int trans, int width, int height)
{
  if ((slot < 0) || (slot >= MAX_SPRITES) || (spriteset[slot] == NULL))
    quit("!DrawingSurface.DrawImage: invalid sprite slot number specified");

  if ((trans < 0) || (trans > 100))
    quit("!DrawingSurface.DrawImage: invalid transparency setting");

  // 100% transparency, don't draw anything
  if (trans == 100)
    return;

  BITMAP *sourcePic = spriteset[slot];
  bool needToFreeBitmap = false;

  if (width != SCR_NO_VALUE)
  {
    // Resize specified

    if ((width < 1) || (height < 1))
      return;

    sds->MultiplyCoordinates(&width, &height);

    // resize the sprite to the requested size
    block newPic = create_bitmap_ex(bitmap_color_depth(sourcePic), width, height);

    stretch_blit(sourcePic, newPic,
                 0, 0, spritewidth[slot], spriteheight[slot],
                 0, 0, width, height);

    sourcePic = newPic;
    needToFreeBitmap = true;
    update_polled_stuff();
  }

  BITMAP* dest = sds->GetBitmapSurface();
  
  
  if (bitmap_color_depth(sourcePic) != bitmap_color_depth(dest)) {
    debug_log("RawDrawImage: Sprite %d colour depth %d-bit not same as background depth %d-bit", slot, bitmap_color_depth(spriteset[slot]), bitmap_color_depth(abuf));
  }

 Manual_Draw(sourcePic, dest, xx, yy, trans);



  if (needToFreeBitmap)
    destroy_bitmap(sourcePic);
}

Alan v.Drake

Thank you Calin, I've applied your changes.
I'm wondering if I should release the current version I'm working on, or compile it withouth the region tinting modification, becuse while it works all cool and dandy through scripting, it breaks up if you set region tinting from the editor. (Not sure what I'm missing there...)


- Alan

Shane 'ProgZmax' Stevens

Some nice improvements here, Alan.  I'm not sure how much utility people will get out of the added filters since they're optional (so if you want a game to look old school with scanlines this wouldn't be the way to enforce it) but I suppose some people will try these out.  You might add a color scheme option to the preferences section of the editor so people can adjust the colors themselves and save the result to the prefs file.  That would be pretty cool.

Alan v.Drake

Since I've been busy with things and there's been movements on AGS' code I'm uploading my current code.
I did not include "nativelibs" and "manual". Also, beware of the region tinting code, since it breaks compatibility expecting 5 values instead of the usual 4 and setting region tint through the editor does not work right yet. Unless you need region tinting as badly as me you're probably better off without.
Don't think badly of me of how I handled the alternate editor colors, I was doing trial and error, if you want a better way to handle them try looking at the source of apps like notepad++ that have a good implementation of Scintilla.

Calin's alpha blend fix is included.

http://www.mediafire.com/?7a6561ucdvwnd5i


- Alan

monkey0506

#25
For some reason I thought that using this "alpha blend fix" would be faster than re-rendering the entire screen. However, when I did a speed test comparison, I'm actually experiencing a speed drop of 10 FPS by drawing a series of sprites semi-transparently onto a transparent surface as opposed to snagging the background frame, drawing everything onto it to recreate the scene, and then drawing the sprites semi-transparently onto that.

Despite Calin's statement of its inefficiency (due to locking the surface, drawing a single pixel or image, and then unlocking it), the AGSBlend plugin produced better results than this. So, I'm a bit confused why:

Code: ags
// rep_ex
DynamicSprite *sprite = DynamicSprite.Create(width, height, true);
DrawingSurface *surface = sprite.GetDrawingSurface();
// draw images...
surface.DrawImage(100, 250, 30, 85); // ...etc.
surface.Release();
theOverlay = Overlay.CreateGraphical(x, y, sprite.Graphic, true);
sprite.Delete();


Is so inefficient with this version of acwin.

Edit: I don't experience the drop with a GUI in place of the overlay. I'm continuing to tinker with it.

Calin Leafshade

Overlays are a special case I believe.

The underlying workings of allegro are quite arcane and I dont quite fully understand how it works.

I have slowly begun documenting the AGS source but its a daunting process. I've only just finished documenting the file structure and CLib (I also ported CLib it to C# to better understand how it packs the files).

My suggestion is to avoid overlays where possible.

ig299


Alan v.Drake

#28
Quote from: ig299 on Sun 22/01/2012 18:33:59
is this a new version?


Not exactly, this is  just a different version with some quirks. I released the source so other devs could take the pieces they need.
In the first post there's an older version, but more compatible. (no /almost/ improved region tinting and no Calin's blend)
If you spend a lot of time coding you might want to try the editor with dark colors.

- Alan

Ryan Timothy B

Quote from: monkey_05_06 on Mon 28/11/2011 00:18:18
[..]as opposed to snagging the background frame, drawing everything onto it to recreate the scene[..]
Seeing as this is slightly related to your conversation, would it be possible to have something similar to  DynamicSprite.CreateFromScreenShot  that actually grabs the screen before it applies the overlays (GUI's, cursors, speech, etc)?

Also Monkey, how are you drawing the characters and such behind walkbehinds with your method? Or is this done on a pixel per pixel level while checking the walkbehinds? Drawing everything onto the background sprite, then checking walkbehinds and drawing a background pixel over top of anything that a character/object actually is.

Alan v.Drake

#30
A little patch to support WFN fonts with 256 characters, which means accented characters and whatnot.
There won't be any compatibility issues since the format was not altered.

256-WFN are also compatible with older versions of acwin, even though they'll only display the usual 128 chars.

Source only: http://www.mediafire.com/?2yb9duar7r285lh

To actually make a 256-WFN, though, you'll have to wait for Radiant to update his FontEdit.
Unless you have an hex editor and a strong feeling of confidence.

p.s: This is only for the engine, I can't include support into the editor because AGS.Native has no source.

- Alan

EDIT: Ehrm, seems like I had linked my compiled acwin which I advise not to use due to Region.Tint incompatibility, I've corrected the link now... sorry it was late.

DrJone.s

I made a feature suggestion to Chris Jones and he told me to ask one of the developers in the Technical Forum thread, as he is currently inactive. I didn't know which thread was the proper one to make suggestions, so I've used this one. Sorry if this is not the correct place to do so.  ???

The feature suggestion is that I would want to be able to make characters with only two walkcycle views, South-West and North-West, which I would mirror to get the NE and SE views of the character. Currently AGS only supports three types of views: Side-view only, LucasArts-style (N,W,S views), and Sierra Style (N, NW, W, SW, S views), and none of these styles display correctly a character that only uses NW and SW views.

It would be great if it could be included in the main builds of AGS, and I hope it'll be useful for plenty of AGSers that right now are required to draw at least 3 walkcycles to get a full 360º view of any NPC.

Thank you!  :)

Alan v.Drake

Ah, I thought it was already possible to do, but I now see somethings breaks up along the way preventing the diagonal loops to show. I will look into it.

- Alan

Shane 'ProgZmax' Stevens

This isn't really the thread for this, it would be better to make a Feature Request: post in tech or simply follow some of the instructions I offer below.

So you want the character to only move in diagonals?  One way to do this would be to avoid the ags movement logic and do a simple script for movement yourself that checks where the mouse click is relative the x/y of the player and then run the animation of choice until they come to a stop, at which point you'd select a standing frame (it's only slightly more complicated than I'm explaining here since you would also need to check for standing on a walkable area so the character cannot just move anywhere).  So basically, if you clicked up and to the left of the character you would play the NW walking animation and then do a repeat check for the character to stop moving, at which point you'd change the character frame to the NW standing frame.  This would be done for a down-left click, a down-right click, and an up-right click (you would supply number ranges in each case that fit into these directions).  In the rare case of a pure up/down/left/right click you'd just appoint one of the diagonals to handle the job.  I hope this makes some sense as I'm a bit tired right now.

Bear in mind that I don't personally believe the AGS editor needs native support for this since it's so easy to do via scripting but if someone wants to implement in then there's no harm in having it as an option.  My advice, though, is that since you can do this through scripting is that rather than wait, start on it with some help from beginner's tech.

Snarky

This is a good example of the kind of functionality I think should ultimately be separated from the AGS core and turned into a user-editable module. Sometimes you want to use just an up-down walkcycle, or just a left-right, or just the diagonals. Sometimes you might want to adjust the angles that separate each direction (even make it vary depending on the walkable area angle and distance). Any non-standard version of this currently requires you to override the built-in walkcycle system, while it would be better if you could just set the game to use a different module.

Alan v.Drake

AGS Draconian r2 (March 24, 2012) DOWNLOAD
  • Fixed the previous issue when displaying tints that were set to regions from the editor.
  • Added an optional acwin_perspective.exe that handles better characters direction when in perspective, rename it to acwin.exe if you wish to use it (I did not test it with diagonals views).
  • 256 characters WFN font support without compromising compatibility (we just need an updated FontEdit now)

Monsieur OUXX

That's really sexy.
On a similar topic: I was wondering if someone has released a "version" of AGS that includes all the ultimate plugins -- such as "Dialog Designer" and "Speech Center", for example.
It would be cool to upload it alongside the "regular" AGS on the donwload page, just with a "not supported, don't come whining if it doesn't work" warning label.

 

Alan v.Drake

AGS Draconian r3 (March 29, 2012) DOWNLOAD
  • Windowed mode gamma support! Only for brightening, though, because I don't care about darkening and frankly I don't see the point, if you want to do that too, the source is at the usual place.

    - Alan

subspark

Love the updates Alan.
Would it be piss simple to get the luminance feature to work under conditions like:
Code: ags
if (this.type == _eTweenRegionTintR) {
    int saturation = this.regionRef.TintSaturation;
    int luminance = this.regionRef.TintLuminance;
    if (saturation < 0) saturation = 0;
    this.regionRef.Tint(Lerp(this.fromX, this.toX, amount), this.regionRef.TintGreen, this.regionRef.TintBlue, saturation, luminance);
  }


Also, is there any reason why it breaks backwards compatibility? Why don't we just revert to the default luminance value if the parameter is not included, like the non-essential Animate parameters (eOnce / eBackwards) do?
It's no huge burden to comment out some code until the Tinting stuff is completed. Is it so far away?

Alan v.Drake

#39
Quote from: subspark on Thu 29/03/2012 01:52:29
Love the updates Alan.
Would it be piss simple to get the luminance feature to work under conditions like:
Code: ags
if (this.type == _eTweenRegionTintR) {
    int saturation = this.regionRef.TintSaturation;
    int luminance = this.regionRef.TintLuminance;
    if (saturation < 0) saturation = 0;
    this.regionRef.Tint(Lerp(this.fromX, this.toX, amount), this.regionRef.TintGreen, this.regionRef.TintBlue, saturation, luminance);
  }


Also, is there any reason why it breaks backwards compatibility? Why don't we just revert to the default luminance value if the parameter is not included, like the non-essential Animate parameters (eOnce / eBackwards) do?
It's no huge burden to comment out some code until the Tinting stuff is completed. Is it so far away?

Well, seems you're lucky, it was just necessary to add a "=100" to agsdefns.sh, otherwise I would never have done it, ahah.
Overwrite AGSEditor with the one inside here and it's done: http://www.mediafire.com/download.php?ficdrl37i9h9yyv

You can use  Region.GetLightLevel()  (regionRef.LightLevel) for the luminance.

- Alan

subspark

QuoteWell, seems you're lucky, it was just necessary to add a "=100" to agsdefns.sh, otherwise I would never have done it, ahah.
Oh good. I'm glad it worked. This means Draconian AGS is now still compatible with previous incarnations which I thought was important.

And thanks for the syntax. My region probs have dissolved.  ;)

Alan v.Drake

Where's my feedback ? Does everything actually work just fine ?

Previous feature suggestions will be evaluated with unrelenting slow pace, as usual.

By the way, if one of you could help me by implementing d3d shaders I sure would not mind.

- Alan

xerca

When I skip a cutscene, it plays all the sound effects that would be played in the cutscene at the same time. It is really annoying. I usually compile the game with vanilla AGS after finishing the work as a workaround. But I think it could be something to be fixed.

Alan v.Drake

Quote from: xerca on Fri 06/04/2012 20:56:51
When I skip a cutscene, it plays all the sound effects that would be played in the cutscene at the same time. It is really annoying. I usually compile the game with vanilla AGS after finishing the work as a workaround. But I think it could be something to be fixed.

Fixed. AGS Draconian r4

While debugging I happened to find a problem with audio channels, I can't say if it was by design, but assigning any value other than 0 to MaxChannelss in the editor under audio types effectively decreases the channels you can  (safely) use , let's do a few examples:

Type "Music" MaxChannels 1 (7 Channels Available)
Type "Ambient Sound" MaxChannels 3 (4 Channels Available)
Type "Footsteps" MaxChannels 2 (2 Channels Available)
Type "Sound" MaxChannels 0 (CAN PLAY ONLY TWO SOUNDS AT ONCE!)
Despite the inability to play more than two sounds there should not be grave errors.

Now let's see another more devious example:

Type "Music" MaxChannels 1 (7 Channels Available)
Type "Ambient Sound" MaxChannels 3 (4 Channels Available)
Type "Footsteps" MaxChannels 2 (2 Channels Available)
Type "Sound" MaxChannels 7 (You would think "that should do the trick".  No, you're begging for trouble)
Exceeding the available channels will only lead to sudden errors whenever you least expect it, expecially when skipping cutscenes!


- Alan

Shane 'ProgZmax' Stevens

Alan:  I'm not sure if anyone's asked you this in this thread yet, and it's something I know Calin has mentioned elsewhere, but could you possibly make code folding optional via the preferences menu?  I absolutely cannot stand it;  I mean I literally want to punch my monitor whenever I go up to select a function and it somehow clicks just a micron to the left and closes the entire thing.

I'm also hoping to see this done for the official beta as it's currently driving me up a wall.

Thank you!

Alan v.Drake

#45
Quote from: ProgZmax on Sun 08/04/2012 08:02:10
Alan:  I'm not sure if anyone's asked you this in this thread yet, and it's something I know Calin has mentioned elsewhere, but could you possibly make code folding optional via the preferences menu?  I absolutely cannot stand it;  I mean I literally want to punch my monitor whenever I go up to select a function and it somehow clicks just a micron to the left and closes the entire thing.

I'm also hoping to see this done for the official beta as it's currently driving me up a wall.

Thank you!

Just recompile the source without the folding, or overwrite AGS.Control.dll with an older one.
I never had a problem, if I want to select a line or more I just click and drag on the number area and it's done, or right to left if I'm highlighting from the bottom-up.

Or, you know... you could make code folding optional via the preferences menu and give me the code so I can put it inside :)

- Alan

subspark

QuoteWhere's my feedback ? Does everything actually work just fine ?
No feedback was necessary. It worked as was portended.

Thanks again.

suicidal pencil

AGS vomited an error at me while I was using (a slightly older) version of your editor. Details are here: http://www.adventuregamestudio.co.uk/yabb/index.php?topic=45713.0

Alan v.Drake

Quote from: suicidal pencil on Mon 09/04/2012 23:08:20
AGS vomited an error at me while I was using (a slightly older) version of your editor. Details are here: http://www.adventuregamestudio.co.uk/yabb/index.php?topic=45713.0

I hope you had a backup, that looks dangerously like the usual did-not-save-properly ags editor problem :(
Make a backup of Game.agf (it'an xml file where your game is saved, the editor is telling you there's somthing wrong with it, so problably it's truncated at the end, bad save?) and rename Game.agf.bak. If you're lucky it will work.
If not you'll have to carve recreate the project and copy the pieces from the old agf to the newer.

- Alan

Ryan Timothy B

Hey Alan, I'm only going to post this in this thread since it should theoretically be a super easy function to add to your current version of the AGS editor. And should have been added to the current AGS editor years ago.

The IsInteractionAvailable is quite basic. It only works for X and Y with the mouse Mode.
IsInteractionAvailable(int x, int y, int mode)


Now there is:  InventoryItem.IsInteractionAvailable(CursorMode)

Would you be interested in adding an extender function that works for the rest:
Character.IsInteractionAvailable(CursorMode)
Object.IsInteractionAvailable(CursorMode)
Hotspot.IsInteractionAvailable(CursorMode)

monkey0506

Ryan. That needs to be added to the engine, not the editor. I say that simply because unless the character/object/hotspot is the currently exposed item at its own coordinates (which are impossible to determine for hotspots unless the WalkToX and WalkToY have been expressly set) then the only function we have to test if an interaction exists for the item is IsInteractionAvailable, which as you note, isn't sufficient.

Clearly the engine is already doing this after some fashion, we just need an exposed function to check it (meaning that an engine plugin would be sufficient, although ridiculous just for such a simple effort).

Oh, and I know Drake has done some stuff with the engine of course, just making a point about where it would need to be added (it would then also need to be included in the editor's built-in headers or else it wouldn't autocomplete :P).

P.S. You're making me really want to start digging into the engine code again now (been working on structuring some other things first).

Alan v.Drake

#51
Done.
To celebrate today's forum renewals I'm releasing this build, thoroughly UNtested.

AGS Draconian r5 beta (April 13, 2012) DOWNLOAD
  • Character.ChangeRoom(int room, int x, int y, int loop) so no one will have to resort to dirty hacks to set the proper direction, i suggest to define an enum for directions.
  • Object/Hotspot/Character.IsInteractionAvailable(CursorMode) to make Ryan happy

    Tell me if something doesn't work.


    - Alan

Ryan Timothy B

Yes Monkey, I realize it's on the engine side. This thread was also moved into Editor Development sub-forum after my hopeful suggestion.
I only suggested it to Alan because he's been adding some engine stuff and this should be super trivial compared to the other stuff he has added. Also because there have been suggestions of this becoming the new default AGS.


Quote from: Alan v.Drake on Fri 13/04/2012 00:38:14
  • Object/Hotspot/Character.IsInteractionAvailable(CursorMode) to make Ryan happy
You've indeed made me happy--and I imagine lots of other people as well. ;)  Thanks!  I'll give it a run through soon and then get everyone in the JoI team to start using it.

DCS78

#53
character.ChangeRoom(302);

Output windows says:
'[' expected.

Dualnames

Quote from: DCS78 on Sat 14/04/2012 23:17:43
character.ChangeRoom(302);

Output windows says:
'[' expected.

character[ID HERE].ChangeRoom(302);

For the player character:
player.ChangeRoom(302);
or
character[player.ID].ChangeRoom(302);
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

DCS78


subspark

Why now AGS you hate of me? -_-


I received this error since Draconian r1 when interacting with NULL:

Note: This wouldn't occur in Vanilla.


And now I get the this error when running the game in r5:


Any clues that might help?

Alan v.Drake

Quote from: subspark on Thu 19/04/2012 02:51:54
I received this error since Draconian r1 when interacting with NULL:
I'm afraid I'll need to look at the code.

Quote from: subspark on Thu 19/04/2012 02:51:54
And now I get the this error when running the game in r5:

Any clues that might help?

For this one a "Rebuild all files" should do the trick. It's due to ChangeRoom accepting up to 4 parameters, the files has to be rebuilt so the editor can update the calls to the function.

- Alan

subspark

QuoteI'm afraid I'll need to look at the code.
No sweat. I PM'd you what you're after.
Ta!

Alan v.Drake

#59
Worry not guys, subspark's  problem was a scripting issue.

I was wondering, what should be the behaviour when someone uses ChangeRoom setting a loop that doesn't exist ? Should I leave it as it is now that if the loop is invalid ags picks the first (maybe) available or just do nothing instead ?


- Alan

tzachs

That is a very good question. I think there needs to be a decision regarding how AGS handles run time errors caused by the user, and then add it to the guidelines document (when such a document exists), so that all developers could keep consistent engine behavior.

In my view, if in debug mode, then the game should crash with an appropriate error message. If not in debug, then write the error to file (like the 'sprite not disposed' error) and try to overcome it (in your scenario, the first loop if one exists or nothing).

Alan v.Drake

Quote from: tzachs on Fri 20/04/2012 07:33:20
That is a very good question. I think there needs to be a decision regarding how AGS handles run time errors caused by the user, and then add it to the guidelines document (when such a document exists), so that all developers could keep consistent engine behavior.

In my view, if in debug mode, then the game should crash with an appropriate error message. If not in debug, then write the error to file (like the 'sprite not disposed' error) and try to overcome it (in your scenario, the first loop if one exists or nothing).

Well, I wouldn't make it crash for ChangeRoom  in debug mode, because it can be used for any character and there is no reason for every one of them to have all the loops, but for other cases yeah.

p.s: How's your editor with docking panel version coming up ? I remember trying it  while ago and the title of panels were unreadable when unfocused.

- Alan


tzachs

Quote from: Alan v.Drake on Fri 20/04/2012 09:32:31
Well, I wouldn't make it crash for ChangeRoom  in debug mode, because it can be used for any character and there is no reason for every one of them to have all the loops, but for other cases yeah.
Yeah, but if someone wrote cEvilDoctor.ChangeRoom(..., evilDoctorLoop) and there is no evilDoctorLoop, you'd want the user to know that he made a mistake. If you don't crash on debug and just do nothing, he might not realize why his evil doctor doesn't animate properly. He'll figure out eventually that evilDoctorLoop should be 4 and not 5, but you can save him some head scratching by showing him the error.

Quote
p.s: How's your editor with docking panel version coming up ? I remember trying it  while ago and the title of panels were unreadable when unfocused.
I've worked with it on my last game (9 months in) and fixed all the bugs I found. Nobody reported the bug you found and I don't remember seeing it. I just re-checked and it looks fine to me. If you can get latest from svn, and check if you still have this issue so that I could fix it (send me a screenshot), I'd appreciate it.

And while we're on the subject, do you intend to check in your changes to the codebase? It would be a shame if you don't...

Alan v.Drake

Quote from: tzachs on Sat 21/04/2012 22:01:49
Yeah, but if someone wrote cEvilDoctor.ChangeRoom(..., evilDoctorLoop) and there is no evilDoctorLoop, you'd want the user to know that he made a mistake. If you don't crash on debug and just do nothing, he might not realize why his evil doctor doesn't animate properly. He'll figure out eventually that evilDoctorLoop should be 4 and not 5, but you can save him some head scratching by showing him the error.

Yeah, but that  loop parameter is only for sake of direction, FaceLocation doesn't explode if you try to turn the character to a direction for which it doesn't have a loop. The point was to save one the  trouble of running two commands, thus my reticence to throw errors.
I could enforce the use of an enum for directions (eDirectionUp,eDirectionLeft...), but then there could be people doing weird custom things.
Or screw them ? :D


Quote
I've worked with it on my last game (9 months in) and fixed all the bugs I found. Nobody reported the bug you found and I don't remember seeing it. I just re-checked and it looks fine to me. If you can get latest from svn, and check if you still have this issue so that I could fix it (send me a screenshot), I'd appreciate it.

Gotta be the theme I'm using then.
But now that I tried again I noticed another problem, scintilla seems to occasionally break (no formatting, no lines and with an asterisk even though it's not modified) when moving the pane onto different places, did that ever happen to you ?




Quote
And while we're on the subject, do you intend to check in your changes to the codebase? It would be a shame if you don't...

Do you mean the official codebase or mine own on github ? I wanted to sort out this little dilemma about changeroom before committing.


- Alan

tzachs

Quote from: Alan v.Drake on Sun 22/04/2012 09:30:50
I could enforce the use of an enum for directions (eDirectionUp,eDirectionLeft...), but then there could be people doing weird custom things.
Or screw them ? :D
An enum will make the function more intuitive, so I vote for that. Whoever wants to do weird custom things could just use two commands.

Quote
But now that I tried again I noticed another problem, scintilla seems to occasionally break (no formatting, no lines and with an asterisk even though it's not modified) when moving the pane onto different places, did that ever happen to you ?
Was that with the latest version? It did happen to me, but I thought I fixed it...

Quote
Do you mean the official codebase or mine own on github ? I wanted to sort out this little dilemma about changeroom before committing.
The official codebase. I don't see the reason for having another repository.

Alan v.Drake

Quote
An enum will make the function more intuitive, so I vote for that. Whoever wants to do weird custom things could just use two commands.
Ok then, it shall be done.

Quote
Was that with the latest version? It did happen to me, but I thought I fixed it...
Yes, it's the latest (revision 73). I didn't notice until I changed colors.

Quote
The official codebase. I don't see the reason for having another repository.
Ok, let's do it. But someone should decide what to merge and what not to. Stuff like the dark theme and my test filters might not be to everyone's tastes. :)


- Alan

Knox

Could the dark theme be a checkbox you select? Maybe then we could have different color schemes that users can save, and load?
--All that is necessary for evil to triumph is for good men to do nothing.

Icey

I was wondering are you able to increase the obj's per count to 60 instead of 40?

Alan v.Drake

Quote from: General_Knox on Wed 25/04/2012 00:03:41
Could the dark theme be a checkbox you select? Maybe then we could have different color schemes that users can save, and load?
Yes but I can't be arsed.

Quote from: Insane-Icey on Wed 25/04/2012 04:56:14
I was wondering are you able to increase the obj's per count to 60 instead of 40?
Change MAX_INIT_SPR to 60 inside acroom.h and recompile.


- Alan

subspark

Alan,

This graphical issue has been a hindrance since alpha channel support was first implemented into AGS back in v2.8.
It's never worked correctly and I wanted to point you to it so that perhaps you'd be the fellow to cook up a remedy:

The second set of inventory icons are what we expect AGS to be rendering on the screen in front of the GUI layer.
The first set is how they've appeared to date.


Knox

QuoteYes but I can't be arsed.

Lol! haha ok.

For those of use that cant change the editor, do you think that increasing the object limit to 80 or 100 (like icy asked) could be implemented in your next release?

Pwetty please!! :)

--All that is necessary for evil to triumph is for good men to do nothing.

Icey

Yes please do :D

I'm just way to nervous to play around with the source cause I feel like I might mess something up or it might mess my game up. But I could just try it on the demo game, hummm....

Alan v.Drake

@subspark: I don't know about the alpha issue on the inventory. Maybe one day I'll look into it.

@icey,knox: I've written what to change, go and compile it already ! You can't break anything just by recompiling the engine, the more people learn how to compile the damn thing the better.


- Alan

tzachs

Quote from: Alan v.Drake on Tue 24/04/2012 07:47:48
Ok, let's do it. But someone should decide what to merge and what not to. Stuff like the dark theme and my test filters might not be to everyone's tastes. :)

Actually I was thinking of an xml file where you can set the theme yourself. This way people could create and share themes. But since you don't have the time/energy (I know that feeling too well  ;)) to make it optional, it's better to leave it out. As for the filters, they are optional, right? If so, I see no reason to not check them in.

Knox

Wow ok its that easy? NICE!

Ill check out the tutorials then on how to do all that.  :)
--All that is necessary for evil to triumph is for good men to do nothing.

subspark

QuoteI don't know about the alpha issue on the inventory. Maybe one day I'll look into it.
Ta mate.

monkey0506

The alpha inventory issue can be resolved without modifying anything, you just have to use the right combination of GUI and control settings...I'm pretty sure that the InvWindow has simply to be on a GUI with a BackgroundGraphic that has alpha transparency. That's more an quirky annoyance than an actual bug though.

subspark

#77
You're referring to this monkey?
Yeah. No go. I've tried everything. It would seem this quirk has just slipped off the radar. [Sigh] I really don't know what to do about this.
>:(

Edit: Another victim of the same bug.

DoorKnobHandle

We have tried giving the GUI that the inventory window is on a background graphic that uses an alpha channel, to no avail as subspark says. We're really out of ideas and it's quite annoying. Would be awesome if the Draconian Edition would fix this very annoying problem!

sonneveld



sonneveld

#81
Oh I meant for the draconian edition.
edit: found it! https://github.com/AlanDrake/Adventure-Game-Studio

subspark

QuoteOh I meant for the draconian edition.
Of course. How silly of me. Sorry mate.

sonneveld

Quote from: subspark on Sun 29/04/2012 09:54:54
QuoteOh I meant for the draconian edition.
Of course. How silly of me. Sorry mate.
Heh, it's all good. No worries.

Icey

Why not make a GUI with only the Inv window on it. Then place it the location of the other inv window that's given you the problem.

subspark

QuoteWhy not make a GUI with only the Inv window on it. Then place it the location of the other inv window that's given you the problem.
Because it's not the inv windows that is giving me the problem. It's the way AGS is rendering the inventory item's sprites. It's not able to render the alpha correctly or at all and this has always been a hindrance to us.
Does anyone have an example of obviously alpha blended inv items (drop shadow perhaps) displaying correctly within the Inventory GUIControl rectangle?

Thanks for everybody's help so far. :smiley:

monkey0506


subspark

Monkey, if you see this, jump back on Messenger.
I believe you may be able to help us in a private troubleshoot. ;-D

I will post back results as we make them and will detail a final resolution (if any) to this likely specific issue of ours.

Thanks again, kind peeps.

DoorKnobHandle

I tested the inv item with alpha channel problem in a new 32-bit game.

When you use an image without alpha channel as gui background, put an inv window control on there and put an inv item with alpha channel in that, it doesn't work at all. The alpha channel of the inv item is ignored.

As you guys have pointed out, when you put an image with alpha channel as gui background, it does work - well, kinda.

This is what I'm getting:



The semi-transparent black circle loos right only in the middle, we have some ugly artifacts around the edges...

Any further ideas? Anything we're doing wrong?

subspark

Indeed, what is happening is the alpha of the inventory item is cutting through the GUI background graphic. Alpha or not, the background graphic is suffering from a 2-bit cookie cutter essentially.
This occurs both on the one GUI (with inventory) and two separate ones (inventory isolated).

I've tested all the visibility modes under both scenarios and nothing will preserve that alpha from eating through the background.
I assume by design most might have been lucky not to have noticed this problem? In our case, our GUI is made to toggle on and off in order to reveal the black lower half of the screen during action/cut scenes.

I suppose can say with great confidence now that this is indeed a rendering issue alone or in combination with something erroneous we're doing here on our end. How to correct the problem is my greater concern.
Might I succeed in encouraging somebody with engine-level experience to take a deeper look? Alan, Calin, JJS or Sonneveld... I'm looking at you! :-*

Eric

I believe I had this same problem here. Khris suggested a way to make it work, but I was never able to do so.

If you guys come up with a solution, let me know! The workaround I eventually used is ham-fisted and not as aesthetically pleasing.

monkey0506

Do this.

- Create a new GUI.
- Set its background color to 0.
- Set its border color to 0.
- Set its background graphic to a COMPLETELY TRANSPARENT sprite WITH ALPHA CHANNEL.
- Add an InvWindow control.
- ???
- Profit.

subspark

You're not wrong, Monkey. After much fiddling we eventually did this as a workaround.  We didn't need any new bitmaps to do so either. However, this being a fundamental flaw in the natural functioning of the engine, we thought it had been problematic enough to bring to the front of the table.
Reaching this workaround was cryptic enough to catch us scratching our heads. Some may have been more perceptive. Our GUI works as originally desired now and for those struggling with the same headache, our solution is detailed below.

Because AGS does not currently draw alpha correctly over a bitmap in the same GUI, any graphics must be isolated into a separate GUI like so:


Our gAction gui is frequently toggled on and off depending of gameplay events. In order to bind the visibility of gActionBackdrop to gAction so that they are both toggled together we use just one line of code:


Code: ags
gActionBackdrop.Visible = gAction.Visible;




Note: This code goes in repeatedly_execute either in the global script or, in our case, higher up the execution chain in its own script.

Then as if by magic, to the end-user it works essentially the same way.

Monsieur OUXX

#93
Hey subspark I'm working on a little addition to your branch. Being a complete git newbie I failed to check-out the project using git, so I just downloaded it as an archive to run my tests. When the time to check in comes, I'll try to make it not too painful ;)
 

monkey0506

Not saying it doesn't need to be/warrant a fix, just that the impression being given was that it was impossible to accomplish. AGS isn't perfect, sure, but there's very little that you actually can't do with it. ;)

Calin Leafshade

From my experimentation in my AGS days of yore I think i found that this is basically AGS trying to save memory. AGS will create a surface with the lowest possible bit depth to accommodate its internal needs. That is to say that if the background isnt 32bit, then the surface wont be either thus not allowing the correct blending.

subspark

Quotethe impression being given was that it was impossible
Impressions aren't given. They're received. :P But I do get your point Monkey. As impossible as it seemed to us, I'm actually just simply glad that we finally discovereed the root of the anomoly.

In retrospect, it really is a minor problem that was always there in peripheral vision like a small splinter in the eyeball white. 8-0

Alan v.Drake

So... you guys spent all this time coming up with workarounds instead of fixing the source yourselves ?  (roll)

- Alan

subspark

Don't look at me good sir. I can't even cook up alphabet soup!!

Alan v.Drake

Ok guys, if you make me a pretty dropdown menu with the available system resolutions on the setup, I will make them work. Deal ?

- Alan

subspark

And to the kind gent / madam who takes Alan's request on, I have another to add: For Garry's sakes please rename "winsetup.exe" to something more universal. "Config.exe" was a popular suggestion back in '08 but I'm now thinking that both compiled executables could be reconfigurable inside AGS/General Settings along with their name and icon.

AGS could even bake the program icon into the exe from the sprite editor. That would be one neat way to handle that stuff!  :)

Alan v.Drake

AGS Draconian r6 beta (June 02, 2012) DOWNLOAD
  • Improved D3D speed at reading the screen (needs further testing)
  • VSync for D3D on by default
  • VSync capability for windowed software mode re-enabled (if it does worse to you, just disable it)
  • Added an enum for directions to ChangeRoom(...) to make your life easier

monkey0506

Hey Drake, you seem to have your hands free with a recent release. :P

So maybe you can help out with the following notes I've taken about limitations in the editor plugin API:

THINGS THE EDITOR PLUGIN API NEEDS:

- Update project tree (Scripts node at minimum!) (can be accomplished via reflection, but a public function would be nice)
- Check for script modified in editor (Script.Modified needs to be updated more regularly)
- Refresh open script editor contents from disk. (we can use the IScriptEditorControl.Text property to do this, but we would need a reference to the open script editors to avoid having to reflect into the editor's own copy of this info, which is already being tracked)
- GUIControl.OwningGUI?? (I know the editor itself doesn't strictly need this reference, but it can be useful to plugins if there's a way to implement it)
- Notification if GUI(Control) is added, removed, or renamed. (to keep plugin data up-to-date)
- GUI.ScriptName, GUIControl.ScriptName (since Name can be null/empty) (this could be the script name, or referenced using the global gui array and Controls property, and always represents a script-safe reference to the GUI/control)

Alan v.Drake

Sorry monkey_05_06 but I don't speak API. I'm sure there are more qualified people to make these changes.
I just wanted to fix those annoying hangs on d3d mode, because I have an autosave feature on Wretcher and everything kept freezing up at room's change when the save (with screenshot) was performed.


- Alan

Yeppoh

I'm curious to know how you managed to make the GetBackBuffer() function to work. I passed evenings to figure out why I only got a black surface. Not to avail. Please enlighten me to spot my embarassing mistake.

Until now (for my personal use for the moment) I set-up a 255 scale transparency for Overlays and D3D RGB style tinting aside from the backward compatible Direct Draw one. I wonder to integrate these modifications into yours.

Alan v.Drake

Quote from: Nefasto on Mon 04/06/2012 13:18:18
I'm curious to know how you managed to make the GetBackBuffer() function to work. I passed evenings to figure out why I only got a black surface. Not to avail. Please enlighten me to spot my embarassing mistake.

Until now (for my personal use for the moment) I set-up a 255 scale transparency for Overlays and D3D RGB style tinting aside from the backward compatible Direct Draw one. I wonder to integrate these modifications into yours.

I made the backbuffer lockable using the proper flag, then commented the code used to cut away the game window from the FrontBuffer, and it worked. Check the diffs to see what I changed.

Of course if it works properly to everyone is still to be seen, heh.

- Alan


Yeppoh

#106
Okay ! I see what you did there that I didn't. Though I notice the StretchRect() function in the render loop. Was the size of the surface not the right one before being presented?

It's cool this way seems to works. Though it might not work with 8 bits depth games from what I know. But I guess at this point 8 bits depth games are far more better off with DD5.

Alan v.Drake

That was there since before, and I did not dare touch too much. I was pretty much surprised it actually worked.

- Alan

Crimson Wizard

I tried the Editor out, I do like the colour scheme more, but there's this terrible blinking when I change from one pane to another (best noticeable when changing between two script files)! Hurts me. :(
It's like Editor paints the pane with white first and uses gray only after.

Alan v.Drake

I believe thats due the editor pane being just a flat white area before scintilla does its magic.
It doesn't matter though, with Tzach's dockin panes there seems to be no blinking at all.

- Alan

Yeppoh

#110
Testing the hell out of this build of the Engine and Editor, I found a bug that seems linked to the Calin's true alpha blending add-up.

If I draw an image with an alpha channel, over a surface with no alpha channel - like for instance the background or part of it -, it seems to draw the image as if it has a 1 bit alpha channel instead of a 8 bits alpha channel, even if the alpha flag is checked as true in a function like DynamicSprite.CreateFromExistingSprite(spriteSlot, hasAlpha = true).

I didn't get very far to fix this in the source at the moment.

Other than that, I didn't find any other problem with this good build insofar.

EDIT: I made a quick fix of the glitch seemingly due from how the background bitmap is dealed by the engine - not sure, but there's a mixup between 24 and 32 bits depth at some point. Anyhow the fix works for now, though I wish to find a more elegant than the one I decided to go for.

abstauber

Just a quick question: what happens if I move over to the Draconian side of AGS? Will I ever be able to switch back, once you (hopefully not) get tired of this branch? Or will I be stuck with this forever? VSync is just sooo intriguing ;)

Crimson Wizard

Although this is up to Alan to make this decision in the end, I assume all good stuff will be eventually merged into main development branch.

BTW, Alan already copied some of his code to github, forking from my refactored branch.

Alan v.Drake

Yes, I should finish merging my features, but at the moment I'm somewhat busy and don't feel like coding.
Of course, there's nothing stopping other people from porting over the remaining changes, but that seems unlikely to happen.

The plan is to switch over to CW's refactored code and tzach's bells-and-whistles improved editor  :-D

I wish I had more free time for doing stuff!

@nefasto: So, where was the faulty piece of code ?

abstauber

Great, thanks for the clarification. (And also thanks for your work on improving AGS)

Yeppoh

#115
At present I did this fix :
Code: C++
void Manual_Draw(BITMAP *src, BITMAP *dest, int destx, int desty, int trans, int hasAlphaChannel = true)
.
.
.
  if (hasAlphaChannel)
	desta =  geta32(destlongbuffer[destyy][destxx]);
  else 
	desta = 255;
.
.
.
void DrawingSurface_DrawImage(ScriptDrawingSurface* sds, int xx, int yy, int slot, int trans, int width, int height)
.
.
.
Manual_Draw(sourcePic, dest, xx, yy, trans, sds->hasAlphaChannel);


I don't like it very much, because the alpha channel issue with backgrounds is still there, but it does the trick. I tried to set the default hasAlpha flag as true for DynamicSprite_CreateFromBackground(), but it only returns a blank alpha channel.

Now for something that might interest some people, I added some little feature for the AudioChannel.SetRoomLocation() function for the ambient sounds. I added a radius parameter so you can change the sound earshot and automatic panning depending of the player position relative to the sound location.

dbuske

I like this version of the editor.  I am using it for the SCIENCE FICTION Game.
I especially like the highlighting in the dialog editor.
What if your blessings come through raindrops
What if your healing comes through tears...

magintz

Hey, it'd also be nice to have some font support for .OTF. Monkey might have written some code last year for this, but don't think it ever got committed to core.
When I was a little kid we had a sand box. It was a quicksand box. I was an only child... eventually.

Tamanegi

#118
While running my game, I got an error:

Quote
(ACI version 3.21.1115)
Unable to create local script: Runtime error: unresolved import 'Character::ChangeRoom^3'
Apparently, it happens when you try to "changeroom" a character to a non-existing room number (like -1 or 0, to get him out of the way and have the game know he's not there as opposed to invisible), which causes no problems in vanilla AGS.
Don't Look! MAGS 12-2010
Mediocre Expectations Current development blog

Crimson Wizard

#119
Quote from: Tamanegi on Mon 08/10/2012 21:46:08
While running my game, I got an error:

Quote
(ACI version 3.21.1115)
Unable to create local script: Runtime error: unresolved import 'Character::ChangeRoom^3'
Apparently, it happens when you try to "changeroom" a character to a non-existing room number (like -1 or 0, to get him out of the way and have the game know he's not there as opposed to invisible), which causes no problems in vanilla AGS.

This is a VERY WELL known problem with Draconian edition. :D
In fact Alan fixed it, but in development version that is not yet released (long story, not interesting).
I don't know why he won't fix it here though, that would be most reasonable thing to do.

The reason of this problem is that this function ChangeRoom now wants 4 parameters instead of 3. 4th parameter is face direction.

Alan v.Drake

#120
Do a Rebuild all files.
Do a Rebuild all files.

EDIT: Yeah I should probably update this version, though

EDIT2: I'll prepare something for christmas.

- Alan

Tamanegi

Don't Look! MAGS 12-2010
Mediocre Expectations Current development blog

SebasC

I am wondering why no one ever tried implementing a character and background pixel editor (Something like in SCIstudio 3)

Babar

Probably because there are a lot better tools out there for such stuff (GraphicsGale, Photoshop, Blender, etc. check the thread in Critics Lounge for a full list) than anything AGS could have that could cover all the different styles and resolutions that AGS allows.
If AGS was a tool with some fixed sprite dimension limits, and restricted palette, that would necessitate only one style of art then a specific tool MIGHT have made sense.
The ultimate Professional Amateur

Now, with his very own game: Alien Time Zone

Crimson Wizard

I believe that each tool should follow each own purpose. AGS is not a graphical editor, and I can't think of reason to make it one.
Don't know about others, me, personally, rarely even used AGS to make walkable areas and other regions, although AGS provides means to do so. I found it much simplier to create region masks in separate graphics editor.

deee

Great work!
I especially love fixed movement stuttering between 60% and 80% zoom and the alpha blending improvements.

Only, there are some problems preventing me from using your edition:
- drawing character shadows onto the background doesn't properly work, using DrawImage with a transparency below 100% draws the sprite fully opaque for me.
- heavy fps drops, around 30 fps instead of 40 of the original version, i tried messing around with VSync, Fullscreen and Windowed mode, nothing really helps.

So, i would greatly appreciate it if you could upload the compiled acwin.exe with only the fixed zoom again, i checked the thread http://www.adventuregamestudio.co.uk/forums/index.php?topic=44406.msg592756#msg592756 , but the file is no longer available.


Alan v.Drake

Quote from: deee on Fri 23/11/2012 13:15:41
Only, there are some problems preventing me from using your edition:
- drawing character shadows onto the background doesn't properly work, using DrawImage with a transparency below 100% draws the sprite fully opaque for me.
- heavy fps drops, around 30 fps instead of 40 of the original version, i tried messing around with VSync, Fullscreen and Windowed mode, nothing really helps.

Hmmm, the fps loss might be due to Calin's blend thing (if you're using DrawingSurface), I remember people saying that the plugin ran better than the embedded changes.
I suggest you try to build acwin yourself from the source, you can restore the normal Draw function on Engine/ac.cpp

1) Remove this block:
10011: // Calin's true alpha blending
...
10156: // Calin's true alpha blending - end

2) Restore the one that begins with // OLD VERSION
3) Compile


About alpha on background issue, if it works on vanilla then it's also caused by the blend thing... IIRC someone had found the same problem and maybe made a fix, check the last pages of this thread.

I'm working on other things now, but I'll prepare a new build for Christmas.
If you can't manage to compile it, then contact me. BUT TRY IT FIRST.

- Alan

Yeppoh

#127
The problem that you're encountering, deee, is because of the way the engine threats the backgrounds as having no alpha channel. So when the Calin's true alpha blending is used in the engine it tries to get the alpha of the background, but somehow gets a null alpha and messes up the alpha calculation of the blending function.

I did a cheap fix in my build of the Drakonian engine for the DynamicSprite.CreateFromBackground(). But it still doesn't properly work when using Room.GetDrawingSurfaceForBackground().

deee

Thanks a lot for your help, Alan and Nefasto. I already feared I would have to put my dirty hands on the source code ;)

So after a long night of downloading, installing and researching everything (I never worked with C++), there are only 3 errors left when trying to compile the original Draconian Source:
1>.\acchars.cpp(593) : error C2065: 'new_room_loop' : undeclared identifier
1>.\AC.CPP(20303) : error C2660: 'Character_ChangeRoom' : function does not take 5 arguments
1>.\AC.CPP(20313) : error C2660: 'Character_ChangeRoom' : function does not take 5 arguments

I really tried :D

Thanks


Alan v.Drake

#129
Oh... those errors makes me wonder if I remembered to commit the last changes.

EDIT: There you go, latest version without Calin's alpha. ----
EDIT2: Ops, fixed: DOWNLOAD


- Alan

deee

Wonderful. But seems like it still does not like me ;)

When trying to start the editor, there is an error: "System.IO.FileNotFoundException: The File or Assembly "AGS.Types, Version*3.2.1.111, Culture=neutral, PublicKeyToken=null" could not be found..."
Replacing only acwin.exe in the vanilla directory produces this error when trying to start the game from the editor:
"Script link failed: Runtime error: unresolved import 'Region::Tint^4'".
I got this error before when trying to run a compiled acwin of your edition where i just removed the parts of code that produced the Character_ChangeRoom errors.


Crimson Wizard

Quote from: deee on Thu 29/11/2012 09:32:50
When trying to start the editor, there is an error: "System.IO.FileNotFoundException: The File or Assembly "AGS.Types, Version*3.2.1.111, Culture=neutral, PublicKeyToken=null" could not be found..."
Try to "Rebuild All" Solution (not just Editor project). Or, rebuild every project in solution manually (right-click, Rebuild), starting with AGS.Types.

Quote from: deee on Thu 29/11/2012 09:32:50
Replacing only acwin.exe in the vanilla directory produces this error when trying to start the game from the editor:
It's not a good idea to mix old Engine and new Editor. Since Alan changed some script functions there they are not compatible anymore.

Alan v.Drake

#132
You can't mix this acwin with vanilla editor.

The editor error, well, looks like I forgot to include a file ahah. Just paste over the r6 version and it should be ok.

EDIT: I've reuploaded the archive with the missing dlls

- Alan

deee

So sexy!
Alan, you are the greatest :D
No flickering with ScaleMoveSpeed and all shadows perfectly displayed @40 FPS.
Draconian edition is back on my screen :)


RetroJay

Hi Alan v.Drake.

I love what you have done. However... One thing is bugging the hell out of me.

No matter how I try, I can't set the default volume of a sound file under its property pane.
I have tried 0-100 and the sound always plays at full volume.

Please help.

Yours.
Jay.

Alan v.Drake


Crimson Wizard

I see this edition is pretty popular. What would community think if we copy some or all of its features into the https://github.com/adventuregamestudio/ags (the development version of engine)?

Here are several fixes to the engine made, that are must have. What about other things, like new script function(s)? Which are eligible to be kept with "main" AGS, which aren't?
I was hoping people of the community would discuss this eventually, but I see no movement in this direction :(. Point me to the thread, if I am wrong.

Alan, I know I had suggested you start copying your changes to github quite a some time ago, but later I got too carried away with work, and they were kept there in separate branches. Now, when we have a pretty much "official" Linux port, used for Gemini Rue release, and engine seem to be pretty stable (again), it could be the time to finish this. Are you still willing to implement your changes there?
Since our engine code was modified, I can assist with advice, if needed.
If this operation would be successful, you may continue adding more things right there, I guess.

miguel

QuoteI was hoping people of the community would discuss this eventually, but I see no movement in this direction :(

Crimson, like me there must be a lot of people here that wish for improvements in AGS and admire all the stuff you and others are working on.
The thing is, and I feel I speak for many of us, all we can do is follow your topics and eventually say that you're doing a great job. My knowledge and the knowledge of most of us in the community is very limited regarding coding engines and editors.
I'm afraid that the original nature of AGS being a one-man-thing for everybody gathered a lot of "lazy" game makers regarding true programming, while other software (harder to master) brought more skilful coders.

This said, I wish you guys (the ones that actually work on improving AGS) to be friends and enjoy doing it.
I know this may sound off topic but I follow all the dev topics here although I don't understand most, and truly admire what you are doing.
Working on a RON game!!!!!

Crimson Wizard

Quote from: miguel on Wed 13/02/2013 12:10:20
The thing is, and I feel I speak for many of us, all we can do is follow your topics and eventually say that you're doing a great job. My knowledge and the knowledge of most of us in the community is very limited regarding coding engines and editors.
No, I am not speaking about coding. I am speaking about features.
I may be an experienced programmer, but I am not experienced game maker (unfortunately), hence it may be difficult for me sometimes to predict the results of introducing, changing or removing a feature to the game-making tool. Will it be convenient for people, or not? Is that is something they are going to use much, or it simply does not worth the development time? And so forth. I can't answer on these questions, my works making games with AGS is limited. I'd rather listen to people who spent years making games, and better see flaws or lack of features.

Alan v.Drake

Quote from: Crimson Wizard on Tue 12/02/2013 22:04:54

[...] Are you still willing to implement your changes there? [...]


Of course I am, I'm not coding much lately because I take on too many projects and I have a huge chunk of graphics to draw.
I want to switch using the refactory as a base, but by reading the github notifications I get the impression I should wait some more :P

In any case what drives me to code is "need", until I have a need to code I'll probably postpone until brighter times, heh.

By they here's a fixed acwin.exe for the DefaultVolume issue mentioned up there: DOWNLOAD

- Alan

BigMc

There will be a new AGS release eventually.. Not enough to motivate you to get your changes in?

BTW, refactory is now master.

Yeppoh

If Alan is okay, I'm in favour to include the features Alan did for his build of the AGS Engine.
On a creative standpoint the little features and enhancements he put are interesting. Like the auto panning on the sounds linked on the animation frames relative to the screen, the new filters in DirectDraw, the new parameter in ChangeRoom() to set the loop/direction, the improved vSync and Gamma in D3d for windowed mode and the fact he setup the backbuffer in D3d to retrieve the screen faster which can open to some interesting ideas for postrendering.

I also added some features in my build with an added optional parameter for AudioChannel.SetRoomLocation(int x, int y, int radius) where you can set the radius of the sound earshot, and auto panning relative to the character position; and a variable to set the opacity of Overlays;

Alan v.Drake

Quote from: BigMc on Wed 13/02/2013 20:35:31
There will be a new AGS release eventually.. Not enough to motivate you to get your changes in?

BTW, refactory is now master.
Ah, but I do carry over my changes, with utter slowness perhaps, but I do. If I had a more free time it'd happen faster :D

Quote from: Nefasto on Wed 13/02/2013 22:42:38
If Alan is okay, [...]
Of course I'm okay, I keep a public repository just so anyone can get the good pieces and improve AGS.

- Alan

Crimson Wizard

Whatever you do... just remember... one thing...

*cough*
Spoiler
Backward compatibility
[close]
*cough*
:D

This means: all old games should run the same way without recompilation. There are ways to introduce new script functions with same names but different number of parameters in such a manner, that won't cause errors when older scripts are used. IIRC Alan already knows how to.

The bugs are, of course, an exception. But, there may be bugs that existed for so long, that people started to rely on them. In this case, they should be treated as feature. If you fix em, increase version number, test against engine version stored in game, and choose between backwards compatible and new paths.

For putting more data to save games I'd suggest to revise the save game format, make it extensible. At the moment, you may increase save game format id, and read data depending on what format the file has. Or simply add new data to the end.

When changing contents of data structures, append variables rather than insert in the middle, otherwise you may break some plugin. There's also a need to update scripting behavior. In short, the new script interpreter allows to map old offsets & object sizes to new ones; that is not difficult to do, but I must find time to explain this properly.

Yeppoh

#144
For the save file format, I was once considering a new one as an encrypted XML file. This idea came when I once wished I could retrieve a variable from any save file using only the known variable name. However I don't know the feasibility of something like this yet with the current AGS.

So far the AudioChannel.SetRoomLocation() with the new parameter is normally backward compatible. I made the parameter optional (the default value is 0 where it calculates the range of the sound like the old way).
The opacity of the Overlay so far was always in the source code but never actually used. The only thing I did for now, I just changed the optional 'transparent' parameter in Overlay.CreateGraphical(int x, int y, int slot, char transparent) where the transparent value is now a char that can set the opacity (1-255) of the overlay when it's set higher than 0. This solution's really ugly and not very user friendly on a coding standpoint, but it was just for personal use, so it didn't bother me that much. But I'm open to a better solution.

Quote from: Crimson Wizard on Thu 14/02/2013 08:27:08
The bugs are, of course, an exception. But, there may be bugs that existed for so long, that people started to rely on them. In this case, they should be treated as feature. If you fix em, increase version number, test against engine version stored in game, and choose between backwards compatible and new paths.

There was an old one in the version 3.1.0 of the engine - or was it 3.0.0? I'm not sure - about the Character/Object/DrawingSurface.Tint(int red, int green, int blue, int saturation, int luminance) function in D3d where you could change the tint RGB values without the need of the saturation and luminance, as opposed as in DirectDraw mode. I was quite accustomed to that bug (which I thought was a feature) until I was taken aback when it was corrected on the next versions. When the engine went open source, I changed it a little so that when 'saturation' and 'luminance' are both set to 100, the function only used the RGB values to change the tinting. Again, not very pretty, but functional without breaking anything. Though a Character/Object/DrawingSurface.RGBTint(int red, int green, int blue) - or Character/Object/DrawingSurface.RGBATint(int red, int green, int blue, int alpha)? - function would have been better.

Crimson Wizard

#145
Quote from: Nefasto on Thu 14/02/2013 11:56:26
The opacity of the Overlay so far was always in the source code but never actually used. The only thing I did for now, I just changed the optional 'transparent' parameter in Overlay.CreateGraphical(int x, int y, int slot, char transparent) where the transparent value is now a char that can set the opacity (1-255) of the overlay when it's set higher than 0.
Changing from int to char has not much sense, because internally the script interpreter operates only with 32-bit integers.
Well, did that. In our branch it's little different now.

Yeppoh

It was originally a bool.
The char comes mostly out of an optimisation habit.

Crimson Wizard

#147
Quote from: Nefasto on Thu 14/02/2013 14:04:12
It was originally a bool.
There's no bool in AGS script, it is a mystification :D.
In the engine code, it was "int".

Quote from: Nefasto on Thu 14/02/2013 14:04:12
The char comes mostly out of an optimisation habit.
I am not sure it will optimize anything. AFAIK such parameters are always passed as 4 bytes (on 32-bit platforms) regardless of the type you declared (int, short or char).
But it is of course useful to restrict value range.

Yeppoh

Quote from: Crimson Wizard on Thu 14/02/2013 14:32:28
There's no bool in AGS script, it is a mystification :D.
In the engine code, it was "int".
For some reason I remembered it as a bool in the engine code, but now that I checked, you're right.
Man, I got confused.

Quote from: Crimson Wizard on Thu 14/02/2013 14:32:28
I am not sure it will optimize anything. AFAIK such parameters are always passed as 4 bytes (on 32-bit platforms) regardless of the type you declared (int, short or char).
Wait?! You mean I took the time in my AGS scripts to carefully use the adequate type for a given variable, for being concerned about memory space, for nothing? GAAAH!
No seriously. I was mostly using shorts and chars, then int for last when I knew I had to deal with really big numbers.

Alan v.Drake

Quote from: Crimson Wizard on Thu 14/02/2013 08:27:08
Backward compatibility

Bah, assward compatibility.
I haven't committed anything in the feature branches that breaks it.

But I'll make sure to break it hard on my custom versions, so if someone absurdly believes to use them to run old junk he'll be sadly mistaken, hah.

- Alan

Crimson Wizard

#150
Quote from: Nefasto on Thu 14/02/2013 15:02:15
Quote from: Crimson Wizard on Thu 14/02/2013 14:32:28
I am not sure it will optimize anything. AFAIK such parameters are always passed as 4 bytes (on 32-bit platforms) regardless of the type you declared (int, short or char).
Wait?! You mean I took the time in my AGS scripts to carefully use the adequate type for a given variable, for being concerned about memory space, for nothing? GAAAH!
No seriously. I was mostly using shorts and chars, then int for last when I knew I had to deal with really big numbers.
I was speaking only about script function parameters. They are always passed as 32-bit ints when engine function is called from script (in vanilla AGS). Global/local script variables may be really of different sizes.

Real programming language is a different thing, because it deals directly with physical machine, and computer has different vision of optimization, than you do :).
For example, alignment of data in structures, which may negate your "memory savings" in certain cases:
http://en.wikipedia.org/wiki/Data_alignment#Data_structure_padding
And the fact, that on x32 platforms function parameters less than int are still passed as 4-byte value (and on 64-bit platform they have minimum size of 8-byte value!): http://www.codeproject.com/Articles/257589/An-Idiots-Guide-to-Cplusplus-Templates-Part-1
Quote
On 32-bit platform, function arguments would require 4-bytes minimum, and in multiple of 4-bytes. This means a char or short would require 4 bytes in call-stack. An 11-byte object, for example would require 12-bytes in stack.
Similarly, for 64-bit platform, 8-bytes would be needed. An 11-byte object would require 16-bytes. Argument of type double would need 8-bytes.

Yeppoh


DrJone.s

Yeah, that's something compilers do so that there's an easy way to implement the passing of parameters. I had to program a full optimizer compiler last year from scratch and it was a pain to make that one work. :tongue:

You can always use global variables instead of parameters to avoid that memory overhead, and it will even run a bit faster as there's less use of the stack, but you'll lose some useful features such as recursivity, concurrence, parallelism, and automatic optimization of code done by the compiler. Plus, it looks ugly and is harder to debug. The option is there, though. :smiley:

Radiant

Dear developers:

I have received several requests to modify Radiant FontEdit to work with 256-character fonts instead of just 128, because the new Draconian editor supports such fonts. However, I do not have a lot of spare time these days, because of studies as well as game design. So I was wondering: if I send the source code of FontEdit to the developers, it shouldn't be all that hard to include it in the editor. It is written in C++. Please let me know if this is a feasible approach.

Crimson Wizard

Quote from: Radiant on Wed 06/03/2013 15:53:36
So I was wondering: if I send the source code of FontEdit to the developers, it shouldn't be all that hard to include it in the editor. It is written in C++. Please let me know if this is a feasible approach.
What about making an Editor plugin? I think that would be very nice.

Alan v.Drake

Quote from: Radiant on Wed 06/03/2013 15:53:36
So I was wondering: if I send the source code of FontEdit to the developers, it shouldn't be all that hard to include it in the editor. It is written in C++. Please let me know if this is a feasible approach.
Sure it is, if you send the source I'll try to find some spare time to add the support.
It would be also nice to add an import bmp directly into the editor, I love that about FontEdit.

- Alan

DoorKnobHandle

#156
Hey, so during my livestream of my MAGS game being developed, using R7 I found out that all calls to DrawingSurface.DrawImage would fail (it wouldn't draw anything, no error message) even though source and destination were both 16 bit color depth. Today I tried the same project, without changes, with AGS 3.2.1 and there it works just fine. That leads me to believe there might be some issue with DrawImage in your version of the editor.

Just wanted to report this, no idea what I can do to help you track this down or no, all I can tell you is that the project, on my laptop, renders fine using AGS 3.2.1 and doesn't draw using R7. After MAGS is done with, I can probably send you the project if that helps? Unfortunately I have no other system to test this on atm!

Calin Leafshade

the draconian edition is only 32bit compatible because it uses my drawimage code from AGSBlend which doesnt make allowances for other colour depths.

DoorKnobHandle

Oh, the more you know haha! I can't find that in the original post, though, maybe it would make sense to put that info somewhere in big red letters or something (assuming I'm not blind and missed it). In fact, it says "(Note: this version doesn't have Calin changes to DrawingSurface because the one who requested it version had trouble with them)". Thanks for the letting me know!

Alan v.Drake

Quote from: DoorKnobHandle on Fri 08/03/2013 13:16:07
[...] requested it version had [...]

What, where does that abusive "version" comes from, was I sleeping when I posted that thing, and when I was re-reading ?
Good news though, in a couple of months I should manage to turn my job into part-time so there's good chance of me getting things done. Unless I waste it away shamefully, of course.

- Alan


Alan v.Drake

Well, look at that... it seems that AGS did not actually store the information that the clip was repeating, so the clip never repeated when loading savegames. (We're talking about the new audio system)
Was it always broken or did I break it with my magics ?

Whatever, click here to get the fixed acwin.

p.s: I was working on the 256 font support for fontedit, but I'm still taxed by stuff, so don't expect anything too soon, sorry.

- Alan

RetroJay

Hi Alan.

I am sure that it's always been broke.
Myself and other users even had the same issue with the original AGS 3.2.1.

Works fine now, though. ;-D
You are a genious.

Jay.

Yeppoh

Oh! That would explain that background sounds and music suddenly stopping. I wasn't able to reproduce that.
Good job.

Monsieur OUXX

Is it possible to switch back and forth between AGS 3.2.1 and Draconian r7?
I'm extremely interested in the "dialogs can have subfolders" feature of 3.3.0 beta 2 but that version is still way too unstable for me to use it. So I'm trying my luck on Draconian, but I don't want to break comaptibility.
 

dbuske

I like your editor, but it would even be better with custom resolutions.
What if your blessings come through raindrops
What if your healing comes through tears...

Alan v.Drake

Quote from: Monsieur OUXX on Fri 31/05/2013 13:50:27
Is it possible to switch back and forth between AGS 3.2.1 and Draconian r7?
I'm extremely interested in the "dialogs can have subfolders" feature of 3.3.0 beta 2 but that version is still way too unstable for me to use it. So I'm trying my luck on Draconian, but I don't want to break comaptibility.


You can switch back and forth as much as you want, provided you don't use the draconian-only scripting commands.

Quote from: dbuske on Fri 31/05/2013 20:24:46
I like your editor, but it would even be better with custom resolutions.

One day, maybe. Someone seems to be working on it on a fork on github. Eventually we'll get there

- Alan

Knox

I'm currently switching AGS versions and in the process I discovered a problem with the Draconian version I don't know how to fix:

Today I replaced the old acwin with the new one you sent out in april (I've been using the other acwin version up until now with r7noblend). Since the new acwin switch, I'm getting this error (I also tried running the demo game to debug but I still get the same results regardless of what game):



Is there something I didn't do correctly?
--All that is necessary for evil to triumph is for good men to do nothing.

Ryan Timothy B

If I recall correctly, the Draconian edition has a different Changeroom function.

I believe it's:  character.ChangeRoom(room, direction)

Knox

@Ryan: Ok I stumbled on a "fix" by re-opening the game in Draconian r4...then re-opening it in r7...then finally re-opening in r7 with the acwin fix. This stopped that error that was preventing to run the game, but I ran into the same problem when trying to change rooms. For some reason creating a new room to move to (and later deleting it) fixed the problem somehow. Im guessing room numbers or info got corrupted by switching ags versions?

:confused:
--All that is necessary for evil to triumph is for good men to do nothing.

Yeppoh

#169
Have you tried Build -> Rebuild all files? This should resolve the problem.

Knox

Quote from: Nefasto on Fri 30/08/2013 02:06:00
Have you tried Build -> Rebuild all files? This should resolve the problem.

Wow, ok something I didn't know...works, thanks! :grin:
--All that is necessary for evil to triumph is for good men to do nothing.

Crimson Wizard

Alan, is this source a working one: https://github.com/AlanDrake/Adventure-Game-Studio/tree/Draconian ?
I have couple of compilation errors there, nothing too serious (meaning I could fix them), but that makes me wonder if it is really the last working version?

(Also this is a bit annoying that include paths are not set in the acwin project, but oh well...)

Alan v.Drake

Sorry for the late reply Crimson,
I've just commited the last two edits I did a while ago. I don't seem to get any error, let me know if something explodes.

I don't remember fiddling with include paths, but then again my memory has never been remotely reliable.

- Alan

Crimson Wizard

Quote from: Alan v.Drake on Sat 21/09/2013 22:10:05
Sorry for the late reply Crimson,
I've just commited the last two edits I did a while ago. I don't seem to get any error, let me know if something explodes.

That's a bit strange, I got two compiler errors:
1. new Character_ChangeRoom function with 5 params is not visible in couple of files, so I had to declare it in acruntim.h
2. new_room_loop is not visible at Character_ChangeRoom, so I had to put "extern int new_room_loop;" before function implementation.

Alan v.Drake

Weird, did you switch to a newer visual studio ?
Or maybe my ags is not compiling what I expect it's compiling...

- Alan

Crimson Wizard

Quote from: Alan v.Drake on Mon 23/09/2013 07:12:32
Weird, did you switch to a newer visual studio ?
No, still the same 2008 SP1. I open Engine/acwin.sln, if that matters.

Yeppoh

It works and compiles fine for me if I open acwin.vcproj to work on it. I've never tried to open the solution.

Crimson Wizard

Well, the solution opens automatically any way, because that's how MSVS works, since 2003th version, I think.

It is no big deal, but still very strange.

These are the errors I am getting when building acwin.vcproj right after checkout, related to missing include paths:
Spoiler

Quote
1>------ Build started: Project: acwin, Configuration: DebugWorking Win32 ------
1>Compiling...
1>adexfilters.cpp
1>.\libsrc\adexfilters\adexfilters.cpp(15) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>hq2x3x.cpp
1>sprcache.cpp
1>d:\projects\ags\draconian\common\wgt2allg.h(30) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>scrptrt.cpp
1>.\scrptrt.cpp(22) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>routefnd.cpp
1>.\routefnd.cpp(15) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>MOUSEW32.CPP
1>d:\projects\ags\draconian\common\wgt2allg.h(30) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>misc.cpp
1>.\misc.cpp(30) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>lzw.cpp
1>CSRUN.CPP
1>cscommon.cpp
1>compress.cpp
1>d:\projects\ags\draconian\common\wgt2allg.h(30) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>Clib32.cpp
1>ali3dsw.cpp
1>.\ali3dsw.cpp(14) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>ali3dd3d.cpp
1>.\ali3dd3d.cpp(17) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>ACWSETUP.CPP
1>.\ACWSETUP.CPP(17) : fatal error C1083: Cannot open include file: 'acgfx.h': No such file or directory
1>acwavi3d.cpp
1>.\acwavi3d.cpp(6) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>acwavi.cpp
1>.\acwavi.cpp(7) : fatal error C1083: Cannot open include file: 'allegro.h': No such file or directory
1>acsound.cpp
1>.\acsound.cpp(14) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acplwin.cpp
1>.\acplwin.cpp(18) : fatal error C1083: Cannot open include file: 'acplatfm.h': No such file or directory
1>acplatfm.cpp
1>.\acplatfm.cpp(14) : fatal error C1083: Cannot open include file: 'acplatfm.h': No such file or directory
1>Generating Code...
1>Compiling...
1>acgui.cpp
1>.\acgui.cpp(14) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acgfx.cpp
1>.\acgfx.cpp(17) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acfonts.cpp
1>.\acfonts.cpp(19) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acdialog.cpp
1>.\acdialog.cpp(15) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acdebug.cpp
1>acchars.cpp
1>.\acchars.cpp(16) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>acaudio.cpp
1>.\acaudio.cpp(13) : fatal error C1083: Cannot open include file: 'wgt2allg.h': No such file or directory
1>AC.CPP
1>.\AC.CPP(40) : fatal error C1083: Cannot open include file: 'bigend.h': No such file or directory
1>Generating Code...
1>Creating browse information file...
1>Microsoft Browse Information Maintenance Utility Version 9.00.21022
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>BSCMAKE: error BK1506 : cannot open file '.\acwin___Win32_DebugWorking\acaudio.sbr': No such file or directory
1>Build log was saved at "file://d:\Projects\AGS\Draconian\Engine\acwin___Win32_DebugWorking\BuildLog.htm"
1>acwin - 23 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
[close]

And after I add necessary include paths (to Common and Common/libinclude), I still got following compiler errors:
Spoiler

Quote
1>------ Build started: Project: acwin, Configuration: DebugWorking Win32 ------
1>Compiling...
<......... numerous properly compiled files here ..........>
1>acchars.cpp
1>.\acchars.cpp(570) : error C2660: 'Character_ChangeRoom' : function does not take 5 arguments
1>.\acchars.cpp(597) : error C2065: 'new_room_loop' : undeclared identifier
1>acaudio.cpp
1>AC.CPP
1>.\AC.CPP(20307) : error C2660: 'Character_ChangeRoom' : function does not take 5 arguments
1>.\AC.CPP(20317) : error C2660: 'Character_ChangeRoom' : function does not take 5 arguments
1>Generating Code...
1>Creating browse information file...
1>Microsoft Browse Information Maintenance Utility Version 9.00.21022
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>BSCMAKE: error BK1506 : cannot open file '.\acwin___Win32_DebugWorking\ALOGG.sbr': No such file or directory
1>Build log was saved at "file://d:\Projects\AGS\Draconian\Engine\acwin___Win32_DebugWorking\BuildLog.htm"
1>acwin - 5 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
[close]

Alan v.Drake

#178
Ah...
apparently the very first time fiddling around trying to compile AGS, in a moment of devious enlightment I ended up adding absolute "Common" and "Common\libinclude" of the SVN repo to the GLOBAL INCLUDES.
It was something so horrible that my mind removed the memory.

This explains everything, I must have forgotten to update the damn .h files because it kept getting the right ones from the wrong places !

Proper commit incoming. Committed.

- Alan

Monsieur OUXX

Is there any plan of including the "256-characters SCI and WFN fonts" feature/hack into vanilla AGS any time soon? Just to know for how long I must resist the urge of breaking compatibility in my game :)
 

Crimson Wizard

Quote from: Monsieur OUXX on Thu 14/11/2013 20:37:26
Is there any plan of including the "256-characters SCI and WFN fonts" feature/hack into vanilla AGS any time soon? Just to know for how long I must resist the urge of breaking compatibility in my game :)

It was included into 3.4.0 alpha... don't know why there. Back then we did not have certain plans on what features these versions should have.

Monsieur OUXX

Quote from: Crimson Wizard on Thu 14/11/2013 20:43:09
It was included into 3.4.0 alpha.

OK, I'll give it a new try. Last time, I tried 3.3.0, and it was a disaster (buggy installer, and also that annoying bug that kept telling me that the script had been modified with an external editor). Let's hope this time it will work!
 

Crimson Wizard

Quote from: Monsieur OUXX on Fri 15/11/2013 13:30:00
Quote from: Crimson Wizard on Thu 14/11/2013 20:43:09
It was included into 3.4.0 alpha.

OK, I'll give it a new try. Last time, I tried 3.3.0, and it was a disaster (buggy installer, and also that annoying bug that kept telling me that the script had been modified with an external editor). Let's hope this time it will work!

No, 3.4.0 is much worse at the moment, because it does not include all 3.3.0 fixes we made in last few months.
I were planning to update it when I get free time off working on 3.3.0.

Knox

While updating 3.4 (when you have the time of course), is it long/difficult to also perhaps merge the custom resolution build into it as well? :cheesy:
--All that is necessary for evil to triumph is for good men to do nothing.

Crimson Wizard

#184
Quote from: Knox on Fri 15/11/2013 17:56:21
While updating 3.4 (when you have the time of course), is it long/difficult to also perhaps merge the custom resolution build into it as well? :cheesy:
Not so difficult, I am merging 3.3.0 to customres right now, and then merge the joint code to 3.4.0 when I got time.

Since this is Draconian thread (hint hint), I might mention that we will probably get most interesting things from Draconian to 3.4.0 too, or maybe some 3.3.1, whichever will be coming first.

Alan v.Drake

Quote from: Crimson Wizard on Fri 15/11/2013 18:17:22
Since this is Draconian thread (hint hint), I might mention that we will probably get most interesting things from Draconian to 3.4.0 too, or maybe some 3.3.1, whichever will be coming first.

If only that poor developer didn't have so much work and so many projects to carry on...

- Alan

Knox

Quote from: Crimson Wizard on Fri 15/11/2013 18:17:22
Not so difficult, I am merging 3.3.0 to customres right now, and then merge the joint code to 3.4.0 when I got time.
Since this is Draconian thread (hint hint), I might mention that we will probably get most interesting things from Draconian to 3.4.0 too, or maybe some 3.3.1, whichever will be coming first.

Oh yeah!  :-D
--All that is necessary for evil to triumph is for good men to do nothing.

Crimson Wizard

Err... I meant to say we are going offtopic here.

Crimson Wizard

Alan, can you give some explanation on your changes to the SetRegionTint function?
What I understand from your code, the luminance parameter basically substitutes a need to call SetAreaLightLevel. Is that correct?

Alan v.Drake

#189
Quote from: Crimson Wizard on Tue 11/02/2014 21:37:39
Alan, can you give some explanation on your changes to the SetRegionTint function?
What I understand from your code, the luminance parameter basically substitutes a need to call SetAreaLightLevel. Is that correct?

Yes, I had decided to use the fourth byte of regionTintLevel to store luminance so I would avoid causing mishaps that could break compatibility, most likely you can do better.
Brigthness and luminance had to be kept separate and I exploited the fact that the fourth parameter was a simple flag, so luminance became the value itself to check against.

- Alan

Crimson Wizard

Quote from: Alan v.Drake on Wed 12/02/2014 06:56:11
Brigthness and luminance had to be kept separate and I exploited the fact that the fourth parameter was a simple flag, so luminance became the value itself to check against.
So, brightness and luminance are not the same thing? I am not aware of this.
I am trying to excerpt the code changes related to this, but not sure which are required, because I do not fully understand how this parameter meant to be used.
I mean, one thing if it may be used instead of Region.LightLevel, another if it is different thing, also may they be applied simultaneously or not?

Alan v.Drake

Scrap that, I failed to understand my own code. It's been well over two years since I coded that stuff (and it was havily bruteforced).

No, the issue was the saturation (the 'amount' parameter), it was originally saved into regionLightLevel. I wanted LUMINANCE/BRIGHTNESS to go into there, so I moved luminance into regionLightLevel, and saturation into the fourth byte of regionTintLevel (which was originally used with the TINT_IS_ENABLED flag to check if the tint was enabled).

I probably wanted to add a regionSaturationLevel or something, but I was a rookie at AGS spaghetticode manipulation and AGS.Native's source was not yet released.

TL;DR: saturation was saved into brightness, workarounds ensued.

- Alan

Crimson Wizard

Are there any games that use extended WFN fonts? Just want to test how well the WFN-256 support went into 3.3.1.

Crimson Wizard

Has anyone any idea which games were made using Draconian edition at all, and which features did they use? Game titles may be enough, I could ask authors directly if I knew them.
I wanted to test them against our 3.4 version to see if they are compatible.

Armageddon

I know that this was because it uses the gamma slider and the character scaling is fixed and he told me himself. :-D

http://www.adventuregamestudio.co.uk/forums/index.php?topic=52224.0

Crimson Wizard

#195
I tried to make a table of features and the level of compatibility achieved in AGS 3.4.
I will update the table as I clarify information / more features are added.
Also, to be frank, it is not easy to get all features from the list in the first post, I might read through whole thread to be sure.

Spoiler

There are 4 possible levels of game compatibility:
D) feature not present (in 3.4)
C) feature present, but the projects are not compatible; e.g. can't run compile Draconian project without making fixes to script/settings first.
B) feature present, but the game file is not compatible; i.e. you have to recompile your game project in new Editor first.
A) feature present and 100% compatible, i.e. you can take Draconian game file and run with the new engine without recompilation.

I am aiming at level A when possible, because we have ports and it would be nice to make them run any AGS game. Level B would be chosen if precise implementation can cause too much trouble.



For Editor-only features (UI) they are:
*d) not present;
*b) similar / alternative feature;
*a) exact feature.

Here I would aim level *B.
[close]


















DraconianAGS 3.4Compatibility / Test results
Editor
Vertical indentation guidesSince 3.3.5*A
Prettier foldingSince 3.3.5*A
Added #region #endregion to the preprocessorSince 3.4.**A
Obsidian-like theme for the text editorNo-
Scripting
Support for 5 args region tinting,
Region.Tint(int red, int green, int blue, int saturation, int luminance)
Since 3.4.0.4Tests required
Character.ChangeRoom() with direction enumSince 3.4.*Tests required
Engine
Windowed mode gamma supportNo (?)?
256 characters WFN font supportSince 3.4.*Tests required
Improved character walking animation at 60%-80% zoomSince 3.3.0A (should be)
Character linked sound panningNo-
AdjustVolumeWithScaling now works for realin masterA (?)
Audio not repeating after loading savegameProbably (need to clarify)Tests required
Fixed Scaling on D3D (with "Smooth scaled sprites" option)No-
Improved D3D speed at reading the screen (???)??? Not sure-
VSync for D3DSince 3.4.*A (probably)
3 new DirectDraw filters: Scanlines 2x, TV CRT 4x and PC CRT 4xNo-
optional acwin_perspective.exe;
handles better characters direction when in perspective
No-

ChamberOfFear

Exactly why isn't "Vertical Indentation Guides" and "Prettier Folding" implemented? A quick test shows me that cherry picking the commit responsible for those changes from "feature_editor_drac" into "develop-3.3.5" is conflict free. Is there something about the implementation that needs to be improved?

Crimson Wizard

#197
Quote from: ChamberOfFear on Tue 14/07/2015 17:55:09
Exactly why isn't "Vertical Indentation Guides" and "Prettier Folding" implemented? A quick test shows me that cherry picking the commit responsible for those changes from "feature_editor_drac" into "develop-3.3.5" is conflict free. Is there something about the implementation that needs to be improved?
No reason, I could simply forget about that branch.

Well, thanks for reminding. I will copy these into 3.3.5 branch.

Dualnames

*Character linked sound panning

This would be a nice thing to see.
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

Alan v.Drake

Lo and behold, after time untold,
the draconian edition will rise from oblivion.

Of course you'll have to wait until I catch up on all the progress from the last three years.

- Alan

Gurok

Just fork mainline AGS again (3.4.0) and apply your patches.

I hope that's what you plan to do, at least.

I thought most of your stuff made it in.
[img]http://7d4iqnx.gif;rWRLUuw.gi

Crimson Wizard

#201
Several posts above I made a table of changes that did not make to the official version:
http://www.adventuregamestudio.co.uk/forums/index.php?topic=44502.msg636515126#msg636515126
It may be a bit outdated though...

As I remember, some of these did not make it mainly because I could not understand which of your changes are relevant. Also, some code changes looked confusing, and I wanted to research them... but never did. (I really hoped you reappear and explain what they mean :))

Alan v.Drake

Quote from: Gurok on Mon 26/09/2016 13:07:26
Just fork mainline AGS again (3.4.0) and apply your patches.

I hope that's what you plan to do, at least.

I thought most of your stuff made it in.

That's exactly what I'm doing. I'm glad that most of the stuff made it to the main repo, now I just need throw in the few remaining extras and I'm good to go.
I'd like first to rewrite and push a few bugfixes that didn't make it, with CW's help.

@CW don't worry, I'm separating the relevant pieces of code, so i can make issues and pull requests

- Alan

Snarky

Could we please not fork the official version but instead try to get the improvements incorporated into it from the get-go?

Crimson Wizard

Quote from: Snarky on Fri 30/09/2016 08:59:12
Could we please not fork the official version but instead try to get the improvements incorporated into it from the get-go?
If you are refering to Gurok's advice to "fork" AGS, in git's terminology "fork" means to make a clone of central repository for your private use.
After new code is added to the private fork, it is then merged back to central one through "pull (or merge) request".

Spoiler


[close]

Alan v.Drake

Quote from: Snarky on Fri 30/09/2016 08:59:12
Could we please not fork the official version but instead try to get the improvements incorporated into it from the get-go?

Approved and useful changes will obviously make into the main repository, but my custom branch may diverge in some points because, well... the only reason it exists is to serve Wretcher's needs. There may be experimental and unsupported features along the road.

Yes I haven't given up yet!

- Alan

Alan v.Drake

AGS Draconian r8 (October 02, 2016) DOWNLOAD

Get it while it's hot

- Alan

Alan v.Drake

#207
AGS Draconian 3.4.1 r9 (October 16, 2016) DOWNLOAD

New experimental Blend Modes !
You can try out the new BlendMode feature for characters, objects, screen overlays and GUIs.

Currently available blenders (D3D and SW):
- Add
- Darken
- Lighten
- Multiply
- Screen
- Subtract
- Esclusion
- Burn
- Dodge

Being experimental, the implementation is not perfect, the alpha may not look too good and stuff like that.

HOW: cEgo.BlendMode = eBlendModeScreen;

- Alan

dbuske

Do I just put cCharlie.BlendMode = eBlendModeAdd; into the properties menu?
How about LinearLight
What if your blessings come through raindrops
What if your healing comes through tears...

Alan v.Drake

Quote from: dbuske on Sun 16/10/2016 21:27:26
Do I just put cCharlie.BlendMode = eBlendModeAdd; into the properties menu?
How about LinearLight

No, you set the property through scripting.

I've only added the blend modes that I could make work reasonably both on D3D and SW.

- Alan

selmiak

If this works this is cool. Please add it to the main AGS repo somehow.
Can you preview results in the editor? Some kind of dropdown menu with all possible blending modes in sight you can scroll through with your mouse and see instant preview would be really nifty ;)

Alan v.Drake

Quote from: selmiak on Sun 16/10/2016 22:50:36
If this works this is cool. Please add it to the main AGS repo somehow.
Can you preview results in the editor? Some kind of dropdown menu with all possible blending modes in sight you can scroll through with your mouse and see instant preview would be really nifty ;)

It will take some time before it can be merged into the main repo, and until it does I doubt I'll be making any changes for previewing the modes in the editor.
There are major changes going on in the codebase, we'll have to wait.

- Alan

Fetito

Is there an ETA when the new options will be merged into AGS 3.4?

Monsieur OUXX

Quote from: Alan v.Drake on Sun 16/10/2016 16:20:51
AGS Draconian r9 (October 16, 2016) DOWNLOAD

Could you explain to which AGS version your fork is the closest? (I need to know if it's ocmpatible with my AGS 3.4.0.x). I'd even suggest to name your versions after the AGS version (e.g. AGS Draconian 3.4.0.6r7)

Quote
New experimental Blend Modes !
Cool!!!

Quote from: Crimson Wizard on Fri 30/09/2016 12:42:07
in git's terminology "fork" means to...

Hey guys have you ever considered using the gitflow methodology? It really helps understanding what's the "development" branch, what are the "patch" branches (the ones being developed for the previous version, the ones being developed for the current version), the "last released" branch (aka "master"), etc. It's really useful to avoid getting mixed up. Icing on the cake : the "features" that allow you to group some commits and merges together in a way that lets the reader understand that they all aim at implementing one specific new feature. all of that without additional work. Just a little self-disciplin when switching between branches.



 

Crimson Wizard

#214
Quote from: Monsieur OUXX on Sun 23/10/2016 20:46:42
Hey guys have you ever considered using the gitflow methodology? It really helps understanding what's the "development" branch, what are the "patch" branches (the ones being developed for the previous version, the ones being developed for the current version), the "last released" branch (aka "master"), etc. It's really useful to avoid getting mixed up. Icing on the cake : the "features" that allow you to group some commits and merges together in a way that lets the reader understand that they all aim at implementing one specific new feature. all of that without additional work. Just a little self-disciplin when switching between branches.

We were using that all those years...
http://www.adventuregamestudio.co.uk/forums/index.php?topic=50001.0

Alan v.Drake

#215
Quote from: Fetito on Fri 21/10/2016 00:38:55
Is there an ETA when the new options will be merged into AGS 3.4?

Anytime between SOON and infinity (laugh)

Quote from: Monsieur OUXX on Sun 23/10/2016 20:46:42
Quote from: Alan v.Drake on Sun 16/10/2016 16:20:51
AGS Draconian r9 (October 16, 2016) DOWNLOAD

Could you explain to which AGS version your fork is the closest? (I need to know if it's ocmpatible with my AGS 3.4.0.x). I'd even suggest to name your versions after the AGS version (e.g. AGS Draconian 3.4.0.6r7)

Oh boy, I forgot one place where I didn't write "3.4.1". Fixed.

- Alan

Crimson Wizard

#216
There are still no means for the engine to detect that the game is saved with alternate editor. If there will be "official" 3.4.1 (or higher) version which ends up incompatible/different from this Edition, engine will think that it can load the game up, but in reality that may lead to errors.

There was a solution I was once trying to develop, but haven't yet, because I was not sure if anyone will be doing anymore alternate engine versions:
http://www.adventuregamestudio.co.uk/forums/index.php?topic=52555.0

If there were just a way to tag the game data with custom string, that would work as a simplier solution for the time being.

Alan v.Drake

Quote from: Crimson Wizard on Sun 23/10/2016 21:15:52
There are still no means for the engine to detect that the game is saved with alternate editor.

Nor it should, vanilla AGS shouldn't care about other custom editions. Should be the other way around.

- Alan

Crimson Wizard

#218
Quote from: Alan v.Drake on Mon 24/10/2016 07:29:03
Quote from: Crimson Wizard on Sun 23/10/2016 21:15:52
There are still no means for the engine to detect that the game is saved with alternate editor.

Nor it should, vanilla AGS shouldn't care about other custom editions. Should be the other way around.

Very well, I should rephrase that: games made with custom edition have no means to tell that they have custom data in them. Is this better?

E: Obviously we cannot force an author of custom edition to add a distinct indication of their program's data, but we can at least give an ability for them to do so easily. The rest is a matter of consciousness...

To elaborate, why I worry about such things, here is the real life example. On a number of occasions I was reported bugs in certain games by our port users (not loading up, not working properly). I had to waste time trying to understand what is going on before finding out that they were actually made with alternate incompatible AGS editions, and the authors of those editions did not even change engine version string or data format version.

Alan v.Drake

Quote from: Crimson Wizard on Mon 24/10/2016 13:01:24
[...]the authors of those editions did not even change engine version string or data format version.

Cough cough, ahem, right that reminds me I should probably do that. (laugh)

- Alan

eri0o

Hey, these blend modes, what blocks them from moving into the main engine code? They would be very useful for my game.

Snarky

What blocks you from using the draconian build for your game?

eri0o

I really want the new OpenGL render and the risk it won't work two years from now.

AnasAbdin

How did I miss this?! The vanilla editor really messed my sight :~(
I'm using AGS 3.3.3 640x400x32
Can I switch to AGS Draconian 3.4.1 r9 without jeopardizing the production of my project in anyway?

Alan v.Drake

#224
Hello,
I've upgraded this project up to the latest AGS 3.4.1 RC1, so OpenGL support and all the other stuff has been ported over from the main branch.

I noticed some mistakes on my part about Game.SetDirectionRatio(float ratio), I don't know what I was thinking back then, so for now let's say that 1.0 actually means default and 2.0 is good for perspective.

This build is based on my no-legacy branch. To import games that aren't upgraded to the latest AGS you need to get Crimson's latest build, open the project and save it. Then you can starting using the draconian edition over it.

This is beta, so make sure to backup your project and report here if anything breaks.
Linux thingamajigs not included yet.

Download it here

EDIT: Updated to RC 2


- Alan

eri0o

Hey Alan!

The blend modes, could it be a plugin somehow? I would like to be able to use it with the main branch. I would like to have an object using a blend mode like overlay or multiply, on top of everything, to help with proper lighting.

Alan v.Drake

Quote from: eri0o on Sat 09/12/2017 10:51:09
Hey Alan!

The blend modes, could it be a plugin somehow? I would like to be able to use it with the main branch. I would like to have an object using a blend mode like overlay or multiply, on top of everything, to help with proper lighting.

As far as I know, it can't.
I could update my blendmodes feature branch and mix it with master to compile a custom version. But that'll still break compatibility because needs to add the BlendMode property to characters, objects, guis and overlays.

- Alan

Alan v.Drake

Happy new year folks!

AGS Draconian 3.4.11 r10 (December 31, 2017) DOWNLOAD


- Alan

Vincent

#228
Grazie mille Alan,
Ti auguro un felice anno nuovo anche a te e congratulazioni per questa nuova versione di Ags Draconian! :-D
Now Downloading! ;)

RetroJay

#229
OH MY GOD !! 8-0

Hi, Alan.
This is a little late... or not... but Happy New Year to you too.
I can't believe that I missed this new version.
I was just browsing through today and thought... WHAT THE HELL !! (wtf)

Thanks, Alan.
I LOVE your Draconian version so much and have already downloaded.
On a side note. I really wouldn't worry about the Linux thingamajigs.(laugh)
Never used Linux nor do I ever intend to use Linux. I make games for Windows.(nod)

-Jay

SMF spam blocked by CleanTalk