Menu

Show posts

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

Show posts Menu

Topics - abstauber

#1
Hey,
unfortunately I can't post from our corporate network anymore. I've checked if our IPs are on any blacklist, but it is not marked.
Is there an allowlist to circumvent this VPN and SPAM detection?
At least for our corp network I can assure that we're no spammers  :wink:
#2
Advanced Technical Forum / Overlay use-cases
Mon 18/04/2022 20:58:06
All this overlay talk made me curious: what can overlays be good for nowadays?


  • Sprite Replacement
    In the past I've used characters for this because they provide pixel perfect collision detection outside of AGS script. And that was way faster than search for transparent pixels.
  • Particles
    Right now I'm using a custom struct and draw all particles on a big surface. Would it be better that each particle would be it's own overlay?
  • Tiles
    Same story - would it be faster to say assign each tile on screen to it's own overlay instead of raw drawing everything to a room surface?

I still haven't fully understand the performance gain using overlays instead of drawing everything directly to a surface.
#3
Opposing Elements

Draw a background with one key element not belonging in the scenery. This can be a something like a crafted object in a prehistoric world, a gothic underground chapel or even a fossil space jokey on a deserted planet ;)
Just mix two opposing elements to an eerie experience, no restrictions on the resolution, palette whatsoever. But keep in mind: pineapple on a pizza is not enough :D



Entries
DBoyWheeler:


lorenzo:


kastchey:


Voting until: 1st January 2020

Trophies




Voting categories (as usual)
Concept: your background should tell us something about the place you have depicted.
Playability: does it have clearly defined walkable areas, things to interact with, etc?
Artistic Execution: does the image convey the wanted atmosphere? What's the feeling of the place?
#4
After learning about attributes, I am currently implementing them to my modules. Now I have also learned that static extenders are possible since 3.4.

I have a static struct like this, along with its extenders:
Code: ags

struct CustomDialogGui {
  import static void init();
  import static attribute int DialogGuiOptions[];
};
import void prepare(static CustomDialogGui, DialogOptionsRenderingInfo *info);
import void addOption(static CustomDialogGui, int position, int optionNumber, String optionText);
import void getOptionDetails(static CustomDialogGui, DialogOptionsRenderingInfo *info);
import void getRowCount(static CustomDialogGui, int width);


An extender function head looks like this in the .asc file, as it was explained here http://www.adventuregamestudio.co.uk/manual/ags38.htm
Code: ags

void prepare(static CustomDialogGui, DialogOptionsRenderingInfo *info)

Now here's the thing I don't understand.

The attribute extender has to be like declared like a non-static extender. And it even works (wtf)
Code: ags

bool seti_DialogGuiOptions(this CustomDialogGui*, eDialogGuiOptions index,  int value)


So yes, it all works but I don't get why attribute extenders have to be non-static on static structs.
#5
Over at the Scumm help thread, Daniel discovered some rather odd limites regarding descriptions.

It seems like inventory item descriptions can be 24 characters long, even though the editor allows more.
Hotspot descriptions can be almost infinite (tested 35 chars).
Object descriptions can only be 29 chars long and the editor also blocks any longer attempts.

Is there a technical reason for this or could these limites be removed in a future engine release?
#6
This is the long overdue overhaul of the classic 9 Verbs template:
Tumbleweed Verbs!

Here are a few highlights:

Thimbleweed(tm) mode


A new save&load system


...while offering the classic SCUMM experience


And it still speaks your local language... sort of ;)


A more complete feature list:
  • cancelable interactions, no need to wait until the character reaches the object/hotspot etc
  • doubleclick to exit locations
  • all new template graphics
  • contains a scrollable dialog gui
  • running with a double click
  • contains a nice door script in case you have lots of those
  • customizable: invent your own verbs, remove a few or add even more
  • helps with unhandled events
  • player follows the cursor while running (if the mouse button is pressed)
  • complete code cleanup: all functions are in structs
  • all settings can be reached and modified anytime
  • all settings are conveniently grouped in a separate script file
  • translations available for Spanish, German, French, Portuguese, Italian and Dutch
  • includes two demo rooms to get you started
  • it comes with a manual :)


Code
https://github.com/dkrey/ags_tumbleweed

Download
https://github.com/dkrey/ags_tumbleweed/releases

Documentation
https://github.com/adventuregamestudio/ags-manual/wiki/Tumbleweed

For historic reasons, here's an outdated version of the manual ;)
http://shatten.sonores.de/wp-content/uploads/2017/05/tumbeweed_doc.zip
#7
General Discussion / Embla, what's wrong?
Wed 19/04/2017 07:14:12
Why on earth are you participating here with great help and encouragement while on the other hand you delete your posts/accounts on a weekly base. ???

I might have discussed this in private but since the account is gone for good (again): here it is.


#8
I just stumbled upon this:
The basic MP3 decoding and encoding technology is patent-free in the European Union, all patents having expired there by 2012 at the latest. In the United States, the technology will be substantially patent-free on 31 December 2017 [....] If the longest-running patent mentioned in the aforementioned references is taken as a measure, then the MP3 technology will be patent-free in the United States on 30 December 2017 when U.S. Patent 5,703,999, held by the Fraunhofer-Gesellschaft[73] and administered by Technicolor,[74] expires.

Source: https://en.wikipedia.org/wiki/MP3#Licensing_and_patent_issues


So after this, I assume we can safely scrap the mp3 free branch.
#9
Have you ever been tired of drawing all your GUI buttons in a paint program? Is it even more boring to create versions for highlighted and clicked buttons in all the different languages? If your answer is 'yes', continue reading :)

Abstract:
This module generates rectangular buttons, which you can assign to anything: GUI buttons, objects, inventory or dynamic sprites - you name it.

Dependencies:
AGS 3.x
Alpha support in AGS has been fixed recently, so you might want to use AGS 3.3 if you need proper alpha channel support.

Download:
http://shatten.sonores.de/wp-content/uploads/2016/04/BtnHelper_1.1.1.zip

Demo:

Now with rounded buttons

Usage:
To turn this

into this:


all you need is this bit of code:
Code: ags

  import cBtns Btns[MAX_BTNS];
  // Button1: normal. Define the basic values
  int btn1 = BtnHelper.createFromGuiButton(ActionButton1, true);
  Btns[btn1].setColors(2, 48599, 16937);
  Btns[btn1].setBorder(3);
  Btns[btn1].setBevel(3);
  Btns[btn1].setBackgroundImg(3, 0, false);
  Btns[btn1].setBackgroundGradient(28030, 19445, eBtnBlend_easeIn, 50, 70);  
  Btns[btn1].setForegroundImg(1, 0, eBtnAlignVertical_center, eBtnAlignHorizontal_right);
  Btns[btn1].setText("Ags",59228, eFontFont3);
  Btns[btn1].setTextShadow(16937);
  Btns[btn1].render();
  
  // Button2: highlight. Set an outline and change font color
  int btn2 = BtnHelper.createFromGuiButton(ActionButton2, true);
  Btns[btn2].copyAttributes(btn1);
  Btns[btn2].setOutline(59228);
  Btns[btn2].setText("Ags",65490, eFontFont3);
  Btns[btn2].render();
  
  // Button3: clicked. Inverse bevel and adjust border
  int btn3 = BtnHelper.createFromGuiButton(ActionButton2, true);
  Btns[btn3].copyAttributes(btn2);
  Btns[btn3].setBorder(4);
  Btns[btn3].setColors(2,16937, 48599);
  Btns[btn3].render();

  // Assign the graphics to the GUI buttons
  ActionButton1.NormalGraphic = Btns[btn1].getGraphic();
  ActionButton2.NormalGraphic = Btns[btn2].getGraphic();  
  ActionButton3.NormalGraphic = Btns[btn3].getGraphic();  





Documentation:
First you need to import the button struct called Btns in your script
Code: ags
import cBtns Btns[MAX_BTNS];


Now here's a simple rounded blue Button with white text.
Code: ags

  //The Gui Button we want to use is called Button1
  int btn = BtnHelper.createFromGuiButton(ActionButton, true);
  // Set some attributes
  Btns[btn].setRoundness(10);
  Btns[btn].setColors(1);
  Btns[btn].setText("Hello",15, eFontFont3);
  // Create the image
  Btns[btn].render();
  
  // After the image has been rendered, we need to assign the new graphic to the button.
  Button1.NormalGraphic = Btns[btn].getGraphic();    



To create a button, you need to call BtnHelper struct - think of it as a factory which creates button dummies :) After that, you call the button struct directly with the generated id.
Code: ags

// First we call the helper
int id = BtnHelper.create(30,20);
// Now use the struct
Btns[id].setColors(15);
Btns[id].render();

This results in a white 30x20px rectangle. But you can't see it yet. First you need to assign it to some AGS element, e.g. a GUI button.
Code: ags
  
Button1.NormalGraphic = Btns[id].getGraphic();    

There you go. The button will now show as a white rectangle.

These are all public helper functions.
Code: ags

  // creates a button from scratch and returns the id to address it in the button struct
  int id  = BtnHelper.create(int width,  int height,  bool preserveAlpha );
  // same as above, but takes the sizes and (optional) image from the GUI Button.
  int id2 = BtnHelper.createFromGuiButton(Button *guiButton, bool preserveAlpha );

  // Deletes a button. Make sure it's image isn't in use anymore
  BtnHelper.reset(id);  

  // Deletes all buttons. Make sure the images aren't in use anymore
  BtnHelper.resetAll();


These are the public functions to change the button's look.
Code: ags

copyAttributes(int src_btn_id);
setColors(int baseCol,  int highCol,  int shadowCol);
setBorder(int amount);
setBevel(int amount);
setBackgroundGradient(int startColor,  int endColor, eBtnBlend blendMode, int startTransparency, int endTransparency);
setForegroundGradient(int startColor,  int endColor, eBtnBlend blendMode, int startTransparency, int endTransparency);
setText(String text, int color, int font, eBtnAlignVertical vAlign, eBtnAlignHorizontal hAlign); 
setTextShadow(int color);
setTextGradient(int startColor,  int endColor, eBtnBlend blendMode, int startTransparency, int endTransparency);
setBackgroundImg(int spriteSlot, int transparency, bool scaling);
setForegroundImg(int spriteSlot, int transparency, eBtnAlignVertical vAlign, eBtnAlignHorizontal hAlign );
setRoundness(int amount);
setOutline(int color);
getGraphic();
render();

The private functions start with an underscore, you shouldn't need to call them directly.


Revision History:
1.0   initial release
1.1   rounded button support
1.1.1 added the function "getGraphic()", minor touch ups
#10
CGA
Christmas Game Arcade

Enjoy three nice laps of classic racing goodness. Or grab the sources and make a game yourself.


Features:
* 1 track, 3 laps, 24 presents
* 4 blazing colors
* Christmas spirit from 1981 8-)

Hopefully this evolves into a proper game next year, think of this more like a Christmas greeting card :)

Downloads
http://www.adventuregamestudio.co.uk/site/games/game/1994/

Sources:
You need to use AGS 3.4.0.6 or higher to open and compile the sources
http://shatten.sonores.de/wp-content/uploads/2015/12/CGA_sources_1.0.7z (24 MB)
#11
Hey,
I'm currently working on a Christmas game (or Holiday Season game including snow, gifts and an altruistic old man... whatever you prefer ;) )
And since working on it in secrecy is boring, I've decided to start this thread.

So what is this about, you might ask?
Remember Red Hot Overdrive, Outrun, Super Hang-On or even TechnoCop? That is pseudo-3D racing. Ever dreamed of Roger driving to his next adventure? Maybe soon he might be able to do that. There's an excellent site on the net explaining how everything works: http://codeincomplete.com/posts/2012/6/22/javascript_racer/

My personal goal is to create a small Christmas themed racing game in CGA, but let's face it... time is short and I have no idea if I can make it. So in the meantime I just post my progress here and maybe some of you might  look at the code and find it useful (or even improve it and post it back.. *cough* that would be wonderful to be honest)



So here's the first preview - made with AGS 3.4.0.6 (hooray for managed structs!)
Current features are:
* curves
* hills
*slowdowns



Download the source here:
http://shatten.sonores.de/wp-content/uploads/2015/12/xmasracer_01.zip
Get the game/sources here:
http://www.adventuregamestudio.co.uk/forums/index.php?topic=53023

PS
Many thanks to Khris and AprilSkies for all their advice and input so far! You guys rock.
#12
Recruitment / Christmas Midi Remix needed
Fri 27/11/2015 10:44:37
For a silly (and free) Christmas kart racer, I'm in the need of a certain music track.
The game is going to be a pseudo 3d Racer in the vain of Outrun, just with a Sleigh and CGA graphics.
Therefore it would be awesome, if the game could have a Christmas remix of the famous "Magical Sound Shower" http://www.vgmusic.com/file/c9f955c172868127f952fc6b6d0b1db1.html
Adlib /OPL2 sound is highly appreciated.

Is anyone willing to do this?
#13
Hey everyone,
Dualnames made me make this hourgame :) And since nobody except Cuiki every played it, I thought I'd share it with all of you!

http://shatten.sonores.de/wp-content/uploads/2014/12/xmashour.zip
You have 30 seconds to fetch as many presents as you can get.
* Move in 4 - yes, F_O_U_R breathtaking directions
* be greedy
* train your reflexes
* no DLC, no ingame purchases

You need the Stella Emulator (or a real VCS 2600) to run it:
http://stella.sourceforge.net/downloads.php

Oh - and this is my first Atari game ever, it's a bit .. err. rough around the edges :P
Merry XMAS from GMT+1 :D
#14
Sorry, I still don't have the rights to access the Suggestion Tracker, so I post it here:

How about adding native joystick support to AGS?
Currently we only have Wyz' closed source windows-only plugin. I googled a bit and found out that Allegro4 has at least joystick support for Linux and Windows. So that would be an improvement :)
#15
Hey,
I'm thinking about to translate the 9-Verb GUI to russian cyrillics. Unfortunately I don't have any experience with non-latin-char based translations - is there anyone who already did it?
Any fonts to suggest? Or if you do speak russian, do you mind translating the 9verbs + a few strings?
#16
I think this has already been discussed, but the search function doesn't reveal it to me. So I'm sorry in advance in case I waste your time ;)

In the mid of development I converted my project from 16bit to 32bit, so there are quite a few 16bit sprites left and the editor identifies them as 16bit sprites. Now unfortunately these sprites aren't rendered on 32bit/alpha GUI surfaces (they simply don't show up), only after I re-import them.
But since I have hundreds of 16bit sprites in my project I would prefer to convert them inside the editor instead of reimporting them.

Something like: "right click -> convert to 32bit" would be really helpful.
#17
I just found out that Aseprite has finally reached 1.0!
http://www.aseprite.org/
It's still free if you decide to compile it yourself.

Working with it is pretty fun so far - especially the pixel-perfect drawing is neat. It also features RGB-color modes and a pretty advanced rotation feature (Rotsprite).
#18
The Rumpus Room / cardboard robots + chiptunes
Sun 25/05/2014 00:04:55
in case you have a party going on and are all out of chiptunes:
https://www.youtube.com/watch?v=bk1_oxSuaSg
#19
Hey,
I've worked a bit on custom dialogs again. The dialogs work fine and are rendered correctly, but unfortunately the warnings.log is full of these:
Code: ags

(in room 10): RawDrawImage: Sprite 387 colour depth 15-bit not same as background depth 16-bit
(in room 10): RawDrawImage: Sprite 393 colour depth 15-bit not same as background depth 16-bit
....


I've just imported a 8-bit gif and the game is in 16 bit mode. Also in the editor, the file looks perfectly normal.


Does anyone have a clue what this means?
#20
Is there a way to determine, whether dialogs options are currently displayed?
I have a custom dialog GUI and few function in rep_exec_always which I only want to check while the GUI is shown.

Thanks for any help :)
SMF spam blocked by CleanTalk