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 - doimus

#1
Hi,

I was experimenting with 8bit 256 color graphics as of lately and have run into a few issues.

First, palette importing. When importing from bmp file it all goes well, but when importing from a pal file, the palette rgb values have some weird offsets, appearing much higher than 255, and throwing an error in AGS.
I'm using ProMotion app for palette export, it may be that the problem is on its end.


Next is the palette cycling. I admit I've never used it in AGS before, but this kind of behavior is really odd... For example, when using CyclePalette(0,15) function, I understand the palette indices from 0 to 15 should *all* shift one color value every tick, right?
In my case, only the index 0 shifts until it reaches 16 then wraps. Indices 1-15 remain static.
Example:

If I use anything but 0 as function parameter, ie. CyclePalette(1,255), nothing happens. ???
I'm on AGS 3.4.2 alpha1, but I remember similar thing happening few versions ago too. Tested so far on two machines, one desktop with nvidia gpu and one Intel Atom tablet. Both running Win10.

And finally, since 256-color graphics are only supported in software rendering mode, does it make sense to use it at all? I vaguely remember reading about people having issues with software renderer, and not having a fallback option doesn't seem like a great idea. In any case, 8bit graphics is only relevant for palette manipulation, everything else works the same in 32bit mode anyway. But palette manipulation IS a great feature to have. :-D

------

EDIT/SOLVED: If you're one of those forum searching people from the future (Hi people from the future! Did you come here in a flying car?) the full explanation is in the post #16.
#2
Hello everybody!

Few years ago, I was working on this one AGS adventure that sadly never got finished because reasons, most of them being of financial and/or scheduling nature.

One reason I got discouraged about (although the least important to be honest) was AGS's lack of cross platform support and somewhat too complex scripting.

So, instead of idling and not doing anything I decided to try and develop something of my own.
Fast forward a few years of learning how to program in everything from bare-metal C++ to Actionscript, I went for the middle ground and choose Gamemaker Studio for this (ad)venture.

And now I got this little point'n'click framework I would like to show you.
Here's a short demo video:
(Pay attention to the bottom-left, outside of game window, where debug console prints out stuff that shows game logic in action.)

https://youtu.be/9n9pDDjvT-U

The goal was to create a scripting environment for non-programmers that would be mostly similar to movie script-writing.
For script commands, I was mostly driven by the way how stuff works in SCUMM and AGS. Actual syntax is dictated by Gamemaker's GML scripting language which sadly doesn't support dot notation, so everything is done as procedural, C-style function calls.

I kept the one-script-per-room system similar to AGS, as it seems more intuitive for non-programmers. It's like having the movie script page in front of you and everything that happens in the room is on that page.
The Real Programmers(TM) can still use separate scripts if needed, for example to define GUI layouts or cutscenes, or whatever.

The engine uses AGS-style hotspot system, and sends string messages, or events, whenever mouse cursor interacts with something, or player enters a region etc.

You parse those messages in "room scripts" through simple switch statement or by using more Sierra-like if said() function calls. Other game events can also throw messages. For example, "room entered" message is thrown on room entry and you can use it to initialize stuff before the player takes control.  Anything that can be scripted in GM can throw a message to the script parser.
This message style is actually a byproduct of the game initially intended to be fully text parser controlled, AGI style.



And here's the room script that's used in the video:

Code: ags

scr_gui_gameroom(); // Runs GUI script separately to keep this one clutter free, actor scripting only.


switch (msg_line)
{
    
    case "room entered":
        scr_define_room_gui();
        actor_set_state(Sam, state_sam_idle);
        cursor_set(cursor_walk); 
        gui_activate(gui_main_bar);
    break;

    case "look at the city":
        cursor_set(cursor_none);
        actor_set_state(Sam, state_sam_walk);
        actor_path_to(Sam, 166, 178);
        actor_set_state(Sam, state_sam_idle);
        wait(0.3);
        txtbox("The city was following the sun into darkness.");
        cursor_set(cursor_look);
    break;

    case "look at Sam's building":
        cursor_set(cursor_none);
        actor_say(Sam, "Yes...");
        actor_say(Sam, "It's my building. I like my building.#My building is very nice.");
        actor_say(Sam, "And this is a#three line#sentence.");
        cursor_set(cursor_look);
    break;
    
    case "look at large key" :
        cursor_set(cursor_none);
        actor_set_state(Sam, state_sam_walk);
        actor_path_to(Sam, 155,190);
        actor_set_state(Sam, state_sam_idle);
        wait(0.6);
        actor_say(Sam, "It's a key of some sort.");
        cursor_set(cursor_look);
    break;
    
    case "use large key":
        cursor_set(cursor_none);
        actor_set_state(Sam, state_sam_walk);
        actor_path_to(Sam,170,190);
        actor_set_state(Sam, state_sam_idle);
        actor_add_item(Sam, "large key",spr_inv_key, 1);
        prop_deactivate("large key");
        txtbox("You take the large key.");
        cursor_set(cursor_use);        
    break;
    
    case "use door":
        if flag_is("sam's door", "locked") txtbox("The door is locked.");
        else if flag_is("sam's door", "unlockable")
        {
            actor_set_state(Sam, state_sam_walk);
            actor_path_to(Sam, 321, 140);
            actor_set_state(Sam, state_sam_idle);
            txtbox("You unlock the door.");   
            flag_set("sam's door", "unlocked");
            actor_remove_item(Sam, "large key");
        }
        else
        {
            txtbox("The door is already unlocked.");
        }
    break;
    
    case "talk to door":
        flag_set("sam's door", "unlockable");
        txtbox("Open sesame!");
    break;
    
    case "talk to large key":
        actor_path_to(Sam,170,190,true);
        gui_deactivate(gui_main_bar);
        cursor_set(cursor_opt);
        conversation_start(conv_large_key, gui_conversation);
    break;
    
    case "actor entered door-to-agnes-office":
        fade_out();

        scr_actor_to_room(Actor, rm_agnes_office, 32, 180);

        if (Actor == Player) {
            //actor_set_state(Player, Player.idle_state);
            switch_room(rm_agnes_office);
            }        
    break;
    

    //inventory items
    case "item item1 door":
    case "item item2 door":
    case "item item3 door":
        actor_say(Sam, "I can't use that on door.");
    break;
}



Scripting system is based around command-queue which exists on a timeline. Each timeline has it's own command queue and is detached from others unless you instruct it to wait for certain event on another timeline.
So you can for example have characters in the background who go about their own business, until player triggers an event which interrupts them and brings them on the same timeline as the player.
You can have as much of those timelines as you see fit.
Commands themselves can be blocking (timeline waits until the command is finished) or non-blocking (timeline continues as soon as command starts). This is essentially the eBlocking parameter from AGS.

Everything is done in GML standard scripting language and should work on all platforms GMS runs on, including mobile and HTML5. It requires Gamemaker to work obviously, which is free for Windows, paid for other platforms.

Current status of the framework is functional-alpha. Most of the essential stuff is in there, save-game system is in progress and I'm considering adding support for localization where scripts get exported AGS style, ready for translation and then get imported on load.
Apart from that, it needs lots of polish and quite some bug extermination.



Since this thing has kind of outgrown itself and is getting harder and harder to maintain in my spare time, I'm on the edge of declaring it my job and going either for a crowdfunding campaign or selling it on itch.io or something. It would certainly help me with my game issues and in the process I'd be helping others create their own games.
I also have grandiose plans of developing it further into a full standalone product, but that is the topic for another conversation.


Thoughts?
Ideas?
Insults?
Torches and pitchforks!?
#3
AGS Games in Production / Deadly Sunsets
Mon 16/01/2012 16:33:56
Hi everybody!

My name is Duje and I've lurked around here for a past decade or so...
Now I finally decided to actively participate in forum discussions, and what's a better way to do it than by announcing a brand new game!?  ;D



**** The Deadly Sunsets: A Sam Preston Adventure ****


A point'n'click adventure set in post-war 1940s. Player takes the role of Sam Preston, private investigator, in a classic noir tale of DECEPTION!, INTRIGUE!, PASSION! and MURDER!

Here are some teaser character concepts:


The game is still in very early stages - story is finished, I'm currently working on graphics and AGS scripting.
Partial reason of me introducing it this early, and actually choosing AGS to make it in, is because of the community. I'm counting on you guys to helpnag me through this!

It is intended as a commercial product and estimated release date is late 2012 (so you can still play it before the world ends).

Of course, I will be looking for beta testers and even some active team members. Background artists and musicians are especially welcome to check in as I still haven't entirely filled those roles. Proof readers will be needed too once it reaches final stages, since English isn't my native language.

So, I'll try to keep this thread regularly updated, and you can ask whatever you wish, obviously!  I'll be more than pleased to discuss everything and anything game-related.

Cheers!
Duje


---------------------------------------

Update 16.1.2012: Game Screenshots

This is current state of the game. Since in-game screenshots are mandatory, here they are. Yeah, I love to work in dark tones (and background artists are not cheap!).

Generaly, game is in its infancy, but some scenes are playable, such as this one, where two main characters meet.
... OK, some of the dialog lines here might have been modified slightly, for advertising purposes!   ;D
(You might want to download these, as I'm replacing them for shure, as soon as I get proper background art. Then later, when the game becomes global phenomenon, you could blackmail me.)




---------------------------------------------------------------------------------------------------------

Update 27.6.2012.

Long overdue update is finally here! Game is still going, albeit slower than expected (and I always wondered why it takes sooo long for people to finish seemingly simple adventure games).

There is a new team member who's doing backgrounds and GUI: Martin Arvidsson, fellow AGSer, who you might know from his game Story of Joijo.

I'm adding some proper screenshots with GUI and finished backgrounds, and some more character sprites.









SMF spam blocked by CleanTalk