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

#1
Hi all,

For quite some time (almost a year, to be precise), I wanted to write some fan fiction for RoTN. I have finally managed to finish my first piece. It is a tale concerning a certain photograph in Max Griff's office.

I have one or two more ideas for possible stories, and hopefully I will get enough time to etch them in virtual ink and share them with you.  :smiley:

Considering the variety of devices used for reading these days, I have made the story available as a PDF, which can be downloaded here.

As usual, comments, criticisms and constructive feedback are always welcome.
#2
Hello Everybody,

This is a short game in the Reality on The Norm series with Elandra as the player character.

The game is set a sequel to The Affair of the Weirdo.

Story:



The year is 2199.

The inhabitants of Reality Station are paid a visit by a traveller from distant worlds. The traveller speaks of events leading to great destruction in the days to come.

And the only person who can do anything about it happens to be Elandra...

Comments, suggestions and criticisms are welcome.

More details here.
#3
Greetings to all!

Here is my second RON (and AGS) game. This is a short game with Elandra as the player character.

The game is set a sequel to The Affair of the Weirdo.

Screen shot:


The storyline is as below:

The year is 2199.

The inhabitants of Reality Station are paid a visit by a traveller from distant worlds. The traveller speaks of events leading to great destruction in the near future.

And the only person who can do anything about it happens to be Elandra...


The puzzles are pretty simple and should not be much of a problem (I'm not that good at making difficult to solve puzzles).

Though I have tested the game a few times, it is quite possible that some bugs, UI issues, spelling mistakes, character related issues, etc. might have escaped my notice. Please take some time to play the game and let me know about bugs, if any.

If all is well, then I will request the Powers That Be to upload my game on the RON website.


A big thanks to Dylan Downing (Renegade Implementor) for the superb Space Theme pack (available here).

Comments, criticisms and suggestions are always welcome.

You can download the game here.


Please Note: Since I work on this game in my spare time, it may be some time before I am able to release an update. Also, as I may not be online everyday, there may be some delays in replying to your mails/queries.
#4
Hi all,

I have been experimenting with the AGS source code for the past couple of days, in order to understand the working/code structure better. I decided the best place to start was by attempting to merge code from plug-ins (this and that) I had written into the engine.
Spoiler

The idea here being that plug-in code gives you an idea of where to look in the engine's source code for a particular piece of code, which happens on certain occasion, e.g. Any function where plug-in's AGS_EngineOnEvent is fired by passing AGSE_SAVEGAME as one argument is the function (or is called by the function) where the save game is written to the disk.
[close]

Without further waste of time, here are the changes carried out:

The change in the editor end is merely update of the script header with the new script function declarations. The AGS manual source has also been updated and is included in the download.

The following changes have been made:


  • Support for setting Custom Properties at runtime. The user set values are saved to the save game file when the game is saved and read back from the save game file when the game is restored.
         
    For rooms having room number greater than 300 (i.e. the non state-saving rooms), custom properties for hotspots, objects and room are reset to their initial values once the player character leaves the room.
         
    A call to the ResetRoom function will also reset the custom properties of the room as well as the objects and hotspots in that room.



  • GetRoomProperty has been renamed to Room.GetProperty. The old name has been retained for backward compatibility, but it won't show up in the editor's autocomplete list.


  • The method signature and behaviour of SetTimer has been changed slightly. The new declaration of SetTimer is:
         
    int SetTimer(int timer_id, int timeout);
           
    The behaviour is as below:
         
    Attempts to start timer TIMER_ID ticking. If timer TIMER_ID is not available, then it attempts to start a timer which is free.
    Returns the id of the timer actually started, or -1 if no timer is available.
         
    The main reason for this change is to allow the use of SetTimer in module scripts without any side-effects. For example, if the module script contins a statement like SetTimer(10, 100) and some other (room or global) script also contains a call to SetTimer setting the same timer id, e.g. SetTimer(10, 20), then the behaviour of both scripts becomes unpredictable (Although this scenario seems like a rare case, it is certainly possible in large games where the call to SetTimer itself depends upon some event whose exact time of occurrence can't be predicted, e.g. when a randomy wandering NPC enters the room).
         
    The suggested usage of this new SetTimer is as below:
    #define TIMEOUT 100
    int timer_id = 10;
         
    //initialization code
    timer_id = SetTimer(timer_id, TIMEOUT);
         
    //in repeatedly_execute or repeatedly_execute_always
    if(IsTimerExpired(timer_id)) {
     //do whatever is required to be done
      timer_id = SetTimer(timer_id, TIMEOUT);
    }
         
    function UpdateTimeout(int timeout)
    {
      UpdateTimer(timer_id, timeout); //see below
    }


  • A new method named UpdateTimer has been added. This method updates the timeout value of any running timer to a new value. A brief description follows.
         
    bool UpdateTimer (int timer_id, int timeout)
         
    Attempts to update the TIMEOUT value of the TIMER_ID. If TIMER_ID refers to an OFF timer, or timeout is not positive, then it does nothing.
    Returns true if the TIMEOUT for TIMER_ID was successfully updated, else returns false.
         
    The timer denoted by TIMER_ID must be a running timer (i.e. it must have been started by calling the SetTimer function) and its TIMEOUT should not have elapsed (no call to IsTimerExpired should not have returned true).
         
    TIMEOUT should be a positive value.

Update (July 19, 2011): Following changes also done:


  • AudioClip has two new static members for iterating over all the AudioClips in the game.
          These are:
          01. Count, which returns the number of AudioClips in the game, and
          02. GetAtIndex, which returns the AudioClip at a specified index.


  • Each AudioClip object also has a ChannelID property. This will be the id of the channel on which the AudioClip is playing. If the AudioClip is not playing, then ChannelID will be -1. This can be used in conjunction with System.AudioChnnels array to obtain the channel of any clip which is playing.


  • The 'Print dialog options upwards' in the game's General Settings dialog works as expected.


  • EXPERIMENTAL: The Import Font dialog can now load OpenType fonts (*.otf) as well. The same code which imports TrueType Fonts is used for this.


  • SOURCE ONLY: Some data mangling in save games is now possible. Define MANGLED_SAVE_GAMES whle compiling. See restore_game_data and save_game_data in ac.cpp.

See also the ReadMe included in the downoad.

Comments, criticisms and suggestions are most welcome.

Download links:
#5
This is an attempt to make a portable version of the AGS Editor, where access to Windows Registry will be kept to a minimum. Conditional compilation is used to ensure that the same code can be used to make both the normal as well as the portable versions.

Changes made:
A new file which defines Registry and RegistryKey classes is created. The classes defined in this file mimic the methods provided by classes with the same name in the Microsoft.Win32 namespace. These classes will either access the Windows registry, or read/write from an xml file on the disc, depending upon the version (normal or portable) being built.

See the Readme for details.

The download includes only the modified files and Readme.

Note:The details about obtaining the source code of the AGS editor can be found here. The /dev folder is the
one which should be checked out.

Download here.

Comments, suggestions and criticisms are always welcome.

Edit: Apr 14, 2011: It appears that the word portable in the subject is getting interpreted as cross-platform. Hence, updated the subject line to make the nature of the code change more clear.
Please note that this is still a Windows only version of the editor, the only difference being that it has reduced dependence on the Windows Registry, enabling it to be run from removable (flash, USB, etc.) drives.

Update: Apr 30, 2011: Added null checks in code.
#6
Hello Everybody,

Finally, my first RON (and AGS) game is complete. This is a short game with Max Griff as the player character.

The game is set in the years 2010-2011, so I don't think there will be any continuity issues.


The storyline is as below:

One fine day in February 2011, the Town Weirdo comes to Max Griff's office claiming that he is being spied upon. Max, thinking it to be another one of the town weirdo's multiple personalities acting itself out, does not take it seriously.

The weirdo is attacked shortly afterwards. Circumstances force Max to take up the weirdo's case and as the investigation progresses, Max learns that things are not what they seem to be...


The puzzles are pretty simple and should not be much of a problem (Hopefully, my puzzle making skills will improve with time).

Though I have tested the game a few times, it is quite possible that some bugs, UI issues, etc. might have escaped my notice. Please take some time to play the game and let me know about bugs, if any. Also, if possible, please let me know whether I have got the characters right (by this I mean their style of talking), so that I may not make the same mistakes in any future RON games I make.

If all is well, then I will email the Powers That Be to upload my game on the RON website.

Comments, criticisms and suggestions are always welcome.

You can download the game here.

Note: Since I work on this game in my spare time, it may be some time before I am able to release an update. Also, as I am not online everyday, there may be some delays in replying to your mails/queries.
#7
Hi all,

This is a small plugin which allows you to set custom properties for Rooms, Characters, Objects, Inventory Items and Hotspots.

Inspiration:
I had always wanted runtime manipulation of user defined (custom) properties
in AGS. This plugin started out as an attempt to try to achieve that.

The idea of modifying the AGS editor for merging script headers (link below) also came
to me while developing this plugin.


Working:
The plugin modifies the existing GetProperty/GetTextProperty methods and adds
SetProperty/SetTextProperty and ResetProperty/ResetTextProperty methods.

The corresponding values for Room, Object and Hotspot properties will be reset
whenever ResetRoom function is called.
i.e. ResetRoom(1), will remove all Room/Object/Hotspot properties related to
room number 1, in addition to AGS's default processing.

IMPORTANT: Rooms with room number above 300 do not store state. The same
is true for the properties set by SetProperty/SetTextProperty methods
for Rooms, Hotspots and Objects.

This DOES NOT APPLY to Character and InventoryItem objects.

More details in the included readme.

IMPORTANT:
There are two versions of this plugin in the archive provided for download, one for use with the normal editor,
and another for use with a modified editor, the details of which are posted here.


Download from here
#8
This is a modified version of AGS Editor. I have performed a very small modification in the RegisterScriptHeader and UnRegisterScriptHeader methods, as mentioned in the title. Here it is in more detail:

Changes in this version:
 A small change in the RegisterScriptHeader and UnRegisterScriptHeader methods in
 NativePlugin.cs. A new class named ScriptMerger has been added for this purpose and the two
 methods in NativePlugin.cs have been slightly modified.
 
 THIS CHANGE WILL AFFECT ONLY THOSE PLUGINS WHICH REGISTER THEIR SCRIPT HEADER IN THE METHOD
 DESCRIBED BELOW. Other plugins will remain unaffected.

 
IMPORTANT NOTE:
 THERE IS NO CHANGE IN THE AGS PLUGIN API. ONLY THE OPERATIONS PERFORMED BY THE EDITOR WHEN
 THE RegisterScriptHeader AND UnRegisterScriptHeader METHODS ARE CALLED FROM THE PLUGIN HAVE
 CHANGED.
 
 
A more detailed description:
 The ScriptMerger class is used to merge the struct member definitions from the header registered
 by the plugin with the built in AGS header. This allows the plugin to define new members for
 structs/enums. THIS IS APPLICABLE ONLY FOR AGS's BUILT-IN TYPES.
 
 For example, assume that some plugin registers a header as below:
 managed struct Room
 {
   import static int GetTimesVisited();
 };
 
 Then the declaration of GetTimesVisited will be added into the declaration of Room struct in AGS's
 built-in script header, i.e. it will be available as a member function of Room object in scripts.
 
 Similarly for enums.
 
 The newly added function can be used in scripts in the following way:
 int timesVisited = Room.GetTimesVisited();
 if(Room.GetTimesVisited() > 5)
 ... and so on.
 
 The plugin should register the GetTimesVisited function as:
 
 _lpEngine->RegisterScriptFunction("Room::TimesVisited^1", <address of method here>);
 
 in the plugin's AGS_EngineStartup method.
 

Why was this done?
 This change was done mainly because unlike scripts, extender functions are not available to
 plugins. This code change started out as an attempt to see whether this issue could be somehow
 handled at the editor end.
 
 So, if any plugin has to add new functionality to a built in object (e.g. the Room object above),
 then the plugin author has to create the necessary script functions through the plugin and the
 extender functions have to be implemented through a separate script module.
 
 One more advantage of this approach is that it allows the plugin author to add static functions
 to the built in objects (such as the hypothetical GetTimesVisited mentioned above). This cannot
 be done through extender functions or any scripting techniques.

 
Issues/Limitations/TODO:
 The change has not been thoroughly tested, but should work for most situations. USE AT
 YOUR OWN RISK.


 See the enclosed readme file for details.

Download here. Note the self extracting archive contains both the binaries and sources.


Edit: Updated download link
Update 29 Mar 2011: Updated with new editor build made from latest code from SVN.
#9
Hi all,

My second AGS plugin. Like the previous one, this is also open-source.
Main details are as below:

Description:

This plugin will add a method called a script GetTimerID and a define a macro
AGS_TIMERHELPER_IS_ACTIVE.

NOTE: The macro is named as <DLL name>_IS_ACTIVE. This is done in order to
guarantee uniqueness, as there can be only one AGS_TimerHelper.dll in
AGS's root directory.


The documentation of GetTimerID is as below:

int GetTimerID()

Gets an available id which can be used for subsequent calls to SetTimer.
If all timers are currently in use, then it returns -1.


Inspiration:

I got the idea for developing this plugin while writing some code involving
SetTimer. Since currently the programmer has to choose a timer id, this can
create problems if SetTimer is being used in different pieces of code which
are being written by different programmers.

e.g. Suppose there are two modules using SetTimer. If, for some reason, both
of them are to be used in one game.
Also, consider that SetTimer is required in repeatedly_execute for some room
scripts. Then unless the timer ids in all places are different, there is
going to be unexpected behaviour.

Also, module writers cannot use SetTimer since they cannot decide which timer
id to choose. Even if they go on the safer side and choose one of the last
five ids (15 to 20), the game developer has to ensure that no two modules are
unintentionally using the same timer id.

Please note that this plugin is intended to be used only when SetTimer is
being called at more than one script, as described above.
If the use of SetTimer is limited to just room scripts, then this plugin is
not required.


Usage:

01. Put the AGS_TimerHelper.dll in the folder where AGS is installed.
02. Start AGS Editor and load/create a game. In the Right hand top pane under
"Plugins" right click on the dll name and select "Use this plugin".
03. Selecting "Plugin Properties" from the pop-up menu in step 2 will show
a detailed help dialog. Please refer it for help on using this plugin. Or you
can refer to the ReadMe_long.txt file included in this distribution.

AGS Version:

Tested with AGS version 3.2. But should work fine on older versions as well, since SetTimer is not a new function.

IMPORTANT NOTE:
This plugin was developed using the Code::Blocks IDE, with MS Visual C++ as
compiler. So the project file cannot be opened in Visual Studio. Create a blank DLL project and add the source files,
if using Vicual C++ IDE.


Comments and criticisms are always welcome.

Download here
#10
Description:
 This is a template for making Reality-on-the-Norm (RON) games using AGS. It has been created using AGS 3.2.  This is a modification of the RON 3.1 template which is available on the RON website (see below).


AGS Version: Tested using AGS version 3.2. Not tested for older versions of AGS.


Differences with respect to RON 3.1 template:
 The following are some of the changes done in this template:

  • Updated Script files and GUI's to use AGS's new object based scripting commands, introduced in version 3.x.
  • Updated formatting in GlobalScript.asc.
  • Added a new shortcut key (F1) to display mouse/keyboard shortcuts.
  • Screenshot is now named after current timestamp (hhmmss-ddmmyyyy) instead of "scrnshot.bmp".


Important Notes:

  • AGS 3.2 introduced a new Audio file management system. Hence, it is possible that this template may not work at all in versions below 3.2. AGS 3.2 can be downloaded here.
  • Templates for 3.1 and older versions of AGS can be found on the RON Website.

Update: April 01, 2011: New version released. This has the following changes:

  • A new macro GAME_AUTHOR is defined in GlobalScript.ash. Update as required. This is used by the about dialog to display the game's author(s).
  • A new macro GAME_VERSION_NO is defined in GlobalScript.ash. Update as required. This is used by the about dialog to display the game's version number.
  • Added an HTML Template (Readme.html) for creating HTML Readme for the game.

Update: July 22, 2011: New version released. This has the following changes:

  • Code in unhandled_event now updated to work correctly for scrolling rooms.

Comments, suggestions and criticisms are welcome.

Download here
#11
My first AGS plugin!!!

Inspiration:
I got the idea for developing this plugin while playing Adventure - The Inside Job, as the video file in that game contains a spoiler to the game's ending, and the game author has no option other than suggesting players not to view the file before playing the game.


Description:
This plugin will modify the video files used in your game so that they cannot be played back in a media player. This feature is useful when the videos contain spoilers and hints to puzzles and viewing them beforehand will spoil the gameplay experience.

AGS Version:
Tested on AGS versions 2.72 and 3.1.2 SP1. Not tested on older versions of AGS.

Supported formats: AVI, WMV, Ogg Theora video files having extension other than .OGV.

Note: AGS has built-in support for Ogg Theora video files, see the manual for more info.

Download includes the plugin, documentation and a runtime-only version, with the AGS editor related functionality removed. Source code is also available (as a Visual C++ 2008 solution).

If you encounter any bugs, please let me know. If possible, I will try to fix them.

UPDATE: 17 Sep 2010: New version with PlayFlic support added.

Download Here
#12
Description
  This is a small module for adding snow/rain functionality to the game. A small demo game is also included.
  Some features are as below:
 

     
  • Multiple sprite images can be used
  • Ability to change type of system (Snow/Rain) at runtime
  • Setting of Wind direction for particle movement
  • Change the amount of particles drawn in the foreground
  • Support for rotating the particle images

  AGS version 3.1.2 and later is recommended. Not tested on older versions.
 

Download link below includes zip file with demo game as well as .scm file. For documentation, please refer the .ash file

UPDATE: 17 Sep 2010: New version uploaded. This has:

  • Transparency, and modified logic for making particles disappear.
  • Collision detection logic takes into account the 'Solid' property of objects and characters
  • Code organized in a more object oriented way
in addition to the features mentioned above

Download here
#13
General Discussion / eBooks on Drawing
Fri 16/07/2010 18:25:20
SMF spam blocked by CleanTalk