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

#1
Hey sorry if this doesn't belong as it's not a question specifically for an AGS game, but I was wondering if anyone had any technical knowledge of how AGS matches animation with movement, aka the anti-glide feature.

I'm busy writing some animation code for a player in a separate engine, and I'd love to be able to replicate this little marvel - at the moment all Ive done is manually calculated how many pixels of movement each frame should be shown for, and while this works great for tying the animation to the movement speed it still doesn't quite have the charm that AGS's solution does.
#2
I have a couple of structs that relate to the same object, I was wondering if there was a way to encapsulate them into a single object that I can create instances of.

My project is a simple 3D renderer in AGS Script (just for fun) and I'd really like to be able to create several instances of one object.

Right now my code is hard coded to accept only one mesh. I have it set up like this at the moment:

Code: ags
struct Vertex
{
  float world[3];
  float camera[3];
  float screen[3];
  int raster[2];
};

struct Triangle
{
  int vertex[3];
};


The arrays correspond to x, y and z coordinates.

I'd like to have it all encapsulated into one object, something like this:

Code: ags
struct Box
{
  Vertex vertex[8];
  Triangle triangle[12];
};


It would be even better if I could have a Vec3 struct, so I can access the box like

Code: ags
Box * box1;
box1.vertex[4].world.x = 1.4;
box1.triangle[0].vertex[1] = 3;


Is this possible? Sorry if this seems silly, I'm not really a programmer, just a hobbyist.
#3
I was looking at my old games for nostalgia's sake and noticed this review from the AGS Panel on my game The Netherworld, made for MAGS in some month of 2006.

This is what the AGS Panel has to say about it:

Quote"I started playing the game (June 2018) and went to a very nice graphical room. The player said a couple of lines and that was that... Nothing...Clicking everywhere got nowhere... Could not proceed. I therefore can not give it a rating in it's present state... will check back later in the year. "

I don't think this very fair. The game uses a Verbcoin interface and I find it hard to believe that an adventure game reviewer couldn't figure that out.

Granted, it's probably not the best design choice and maybe it should have been stated at the beginning of the game, but it is a MAGS game and was released nearly 12 years ago.

I'd really prefer it if people didn't think the game was broken (it's not) when they go its page on the database. Is there any way to fix this?
#4
I have such fond memories of this game. The art is fantastic, the voice acting superb and the cinematic feel is pretty decent.

But looking back at the puzzle design and overall gameplay, this game has so many flaws. As someone who has dabbled in adventure game design, I couldn't help but notice all the terrible design elements and think of ways I would have handled it differently.

Does anyone else feel the same way? Is it just nostalgia that makes me love this game?
#5
Found this cool app online. Relive some nostalgia!

Play it here!
#6
So I've been playing around with a practice background, trying to see where my skills are and the results aren't too bad so far.

In my background I have a section like this, which I drew and then added in the anti-aliasing. Now I've decided that I want to change up the colors.


(Old colors are on top, new colors on the bottom. As you can see, flood filling has messed up the anti-aliasing.)

I can't use the flood fill tool because of the anti-aliasing. Is there an easy way to switch up the colors without manually redrawing everything? I'm using The Gimp by the way. The anti-aliasing was done by hand using 1 pixel pencil tool at 30% opacity.
#7
Does anyone know if there's a way to check if text is clipping an overlay's width?

That is, if the text is spreading onto the next line.

What I'm trying to do is design a custom speech system that is closer to the actual way LucasArt's speech worked. If two characters are having a conversation, the text is normally displayed at the same y coordinate for both characters, and that would be the y coordinate of whichever character is taller.

So in order for this to work I need to be able to check whether an overlay is taking up one, two or three rows. I hope I'm making sense.

It would also be nice to be able to return a character's height, for offsetting the overlay and whatnot. This isn't the biggest issue right now since I can always manually set each character's height on game_start.
#8
Hi. I'm busy remaking an old game I made with new features and a new interface (and less typos ;) ) and I was wondering if anybody would be interested in helping me correct the colors, brightness/contrast, hue/saturation and all those other arty things :D

No drawing would be necessary, just need someone with a good eye for colors. There are only about 7 backgrounds (some of them look fine though and would need little touching up).

The game is 320x200 and the backgrounds will be cut to 320x160. There's no rush to a deadline.

PM me or post here if you're interested!

Example of a background (sorry about jpeg):
#9
Q. What is this?

A. It's a module for a custom dialog GUI modeled after LucasArt's games. But more importantly, it does a bunch of cool things. It's non-blocking (which means you can interact with hotspots during a dialog), and it addresses a bunch of things from the bug and suggestion tracker.

Q. What does NBD stand for?

A. It's an acronym, and acronyms are COOL.

Q. How's this different to the other dialog module out there?

A. This one doesn't use any of AGS's built-in features for rendering dialog windows. That means it doesn't block the script while it's running.

Q. That doesn't sound so special, what else does it do?

A. Oh shush you. Here, take a look at this:

Q: Can I run an individual dialog option using this module?

A: Why yes you can! Just use the RunOption (int option) command.

Q. Does this module have the ability to keep the dialog GUI visible while the conversation plays out?

A. Of course it does! This module is designed to be like LucasArt's dialog system, which it means it works well for games that have a GUI that takes up permanent screen space.

Q. Can I set the color the options are highlighted in?

A. You can do that too! Just #define NBD_SELECT_COLOR in the module header.

Q. Do I have the option of turning off the startup option?

A. That option is available too! Just run your dialog with the argument eNBD_DontPlayStartup.

Q. Are the options scrollable? Can I have like, arrow buttons on my GUI?

A. You sure can! This dialog GUI is designed to be a fixed width and height, which means that it NEEDS to be scrollable.

Q. Does this module provide me with the power of AGS's normal script editor, which isn't available in the dialog script editor?

A. Since all your dialog scripts will be written in a separate module, you can have ALL THE POWER of the normal script editor!

Q. Can I set font the options are displayed in, and can I change it at a later stage if I wanted to?

A. Oh you, of course you can do that. Since the options are displayed as labels on a GUI, you can just set the label's font to whichever you choose!

Q. Alright, I guess that does sound pretty cool. Where can I get it?

A. RIGHT HERE!

If anyone wants to do some more testing on please feel free! I think I've alpha tested as much as I can and while I can quite positively say there shouldn't be any kinks, some always manage to creep out of nowhere.
#10
I don't know if this is a bug or if I did something wrong (I don't think so?), but it seems that whenever I place any code in my room's repeatedly_execute function (it can be any code, from one line to a 100 lines) then SkipUntilCharacterStops is disabled.

I originally discovered this while keeping the text on an overlay updated (for debugging purposes). The problem seemed to resolve itself after I removed the offending lines (all of them!) from repeatedly_execute.
#11
So I've written quite a few modules for my current project. Right now my problem lies with three of them - I have a custom dialog system module and a non-blocking script command module.

They're ordered like this:

- Dialog Module (essence of the code)
- Non-blocking module
- Dialog scripts module (the scripts for each dialog)

The non-blocking module needs to call the dialog.Run command from the dialog module and the dialog script module needs to call the non-blocking functions from the non-blocking module.

This worked fine until today I realized I also need to call the RunDialogOption command in the dialog scripts module from the dialog module.

Is there anyway to call a function from a module that's below?
#12
See a few posts down for the code.

Code: ags
Typewriter.Type (int x, int y, int delay, int color, int font,
                 String text, style, display, optional AudioClip sound,
                 optional TypewriterFlash flash);

           
Displays 'text' as typwriter text at 'x' and 'y', in color 'color',
with a delay of 'delay' (in game loops) between characters, using
font 'font'

Style specifies which style you want to use.

Code: ags
eTypewriter_LongSpace

 
Spaces are delayed twice as long as other characters.
 
Code: ags
eTypewriter_Constant

 
All increments are delayed equally.

Code: ags
eTypewriter_ShortSpace

 
Spaces are delayed half the length of other characters.

Code: ags
eTypeWriter_Mixed

 
Spaces are randomized to be either half, double or the same as other
characters.

Pass an audio clip name as sound to play a sound with each letter.
Leave it out (or pass as '0') for no sound.

Set TypewriterFlash to eTypewriter_Flash to have the last character flash
in and out, and to eTypewriter_DontFlash to keep the last character
steady.

Display can either be displaying the effect on an Overlay or on a GUI element (either a button or a label)

eg.

Code: ags
Typewriter.Type (5, 185, 3, 65535, eFontNormal, "Write your text here[[AND WATCH IT TYPE ITSELF", eTypewriter_ShortSpace, eTypewriterDisplay_Overlay, aPop);


EDIT BY DUALNAMES: You simply import the module after downloading it from here.

http://duals.agser.me/Modules/Typewriter.zip

I've added some extra functionality. Check the header of the module for information and examples.

EDIT BY PHEMAR:

Dualnames' link seems to be broken. Original can be found here:

https://www.dropbox.com/s/vyeujxo7gbr06hk/Typewriter.zip?dl=0
#13
I've added a whole bunch of new functions, features and improvements.

An example of the code:

Code: ags
  BgSpeech.Add (cJoe, "Hi there!");
  BgSpeech.Add (cJoe, "How's the weather today?");
  BgSpeech.Pause (80);  //Adds a two second pause between these lines.
  BgSpeech.Add (cFarmer, "???", eBgSpeech_NotAnimating); //Farmer's talking animation won't play.
  BgSpeech.Add (cFarmer, "What did you say?");
  BgSpeech.Add (cBird, "SQUAWK!!!", 160, 40); // will display the speech at coordinates
  BgSpeech.Add (cJoe, "What was that!?");
  BgSpeech.Start (eBgSpeech_Loop); //optional param looping or not looping
                                   // and optional parameter which point of the queue to start in


Will queue up a bunch of speech to be looped in the background.

Download here.

Code: ags
BgSpeech.Add (Character *ID, String text, optional int x, optional int y, optional animating);


Will add 'text' to the queue, to displayed as speech for 'character'.

EG:
Code: ags
BgSpeech.Add (cEgo, "This is in the background!");


Will queue up "This is in the background!" to be displayed as speech for cEgo.

Code: ags
BgSpeech.Add (cEgo, "This is also in the background!", 120, 80, eBgSpeechNotAnimating);


Will add "This is also in the background!" to the queue to be displayed after the first message.
This time, it won't play the character's talking animation.

Optional x and y coordinates specify where the text should be displayed. Leave these
out for it to be displayed above the character's head.

Put these commands one after another to queue up speech.

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

Code: ags
BgSpeech.GetCurrentPlayingIndex ();


Gets the queue position of the currently displayed text. Returns an integer.

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

Code: ags
BgSpeech.GetCurrentText ();


Returns the text currently on the screen in the background.

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

Code: ags
BgSpeech.GetIndexLength ();

   
Gets the amount of messages currently queued up.

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

Code: ags
BgSpeech.GetQueueText (int index);


Returns the text at queue index 'index'.

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

Code: ags
BgSpeech.Looping ();


Returns true if the current conversation is looping.

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

Code: ags
BgSpeech.Pause (int loops);

 
Will add a pause between to lines of text for 'loops' amount of
game loops.
Basically a non-blocking form of Wait(int waitLoops);

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

Code: ags
BgSpeech.Playing ();


Returns true of the speech is currently playing.

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

Code: ags
BgSpeech.Reset ();


Resets the queue to its intial position, allowing you to overwrite it.

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

Code: ags
BgSpeech.Resume ();


Resumes the speech from the last line it left off.

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

Code: ags
BgSpeech.Start (optional looping, optional int QueueIndexToStartFrom);


This will start the speech going in the background.
Default is non-looping and from index 0 (the first message).

Pass eBgSpeech_Loop (or true) to loop the text or eBgSpeech_NoLoop (false or
leave it blank) to display the text only once.

QueueIndexToStartFrom is the position in the queue you wish to start playing from.

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

Code: ags
BgSpeech.Stop (optional ResetPlayQueue);


Will stop the backgound speech from playing.

Pass eBgSpeech_ResetPlayQueue to reset the queue or eBgSpeech_DontResetQueue
to leave the queue where it is.
Set to ResetPlayQueue by default.

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

KNOWN GLITCHES: Using BgSpeech.Add while the speech is playing causes the speech to jump to the next line. You can see why if you look at the code. I'm not sure how to fix this - If I don't stop the speech before adding to the queue the game seems to bug out.
#14
So I got interested in designing an iMuse type dynamic music system for a project. So far I've got the timing correct but there's just a few things I'm worried about.

Here's my code so far (still early testing):

Global Header:
Code: ags
struct iMuse {
  AudioChannel *room;
  import static function Jump (int dest);
};

iMuse room1;


Global Script:
Code: ags
static function iMuse::Jump (int dest) {
  if (room1.room == null) {       //audio is null, so don't continue
    Display("Audio is null");
    return;
  }
  else {
    while (((dest + 170) - room1.room.PositionMs) > 0) Wait(1); //wait until audio reaches it's switch point (plus 170 for timing)
    room1.room.Stop ();
    room1.room = a2.Play ();          //play new sound
  }
}

function game_start() {          //  Play the first sound
  room1.room = a1.Play(eOnce);
}


Room Script:
Code: AGS
function oObject_AnyClick() {
  iMuse.Jump (5000);
}


There's two audio files, each 5 seconds (5000 ms) long. When the game begins, a1 is played, and when the character interacts with an object, the script waits till a1 has reached 5000ms (plus 170, I found that's the delay AGS needs to time things up correctly), then stops a1 and plays a2.

Now, the first problem I have is that this script is blocking - I just don't know how to use it without the Wait(1); command. I tried Timers, but they never time out correctly.

The second problem is that in iMuse.Jump, I've specified that a2 is the next audio file it needs to play. However, I wish the audio file to be specified within one of the arguments to iMuse.Jump. I'm not entirely sure how to do that.

Thirdly, the other problem I have is that a1 needs to played from the global script otherwise iMuse.Jump returns "Audio is Null." I currently have a1 being played in game_start, however I would like to play it from a room script.

Any help? Is what I'm attempting to do even possible? This is just the beginning test. Once I get the kinks sorted out I can create multiple bookmarks on audio files (at the end of phrases etc) so that they can switch anywhere at those bookmarks, and hopefully non-blocking as well.

Thanks for any help!
#15
So I've been gone quite a while now (my last game was made in 2006 o_O) and I've recently started a new project with a few friends.

Well I was very sad to find out that a lot of resources that were available back in the day are now lost in the dark depths of time and broken links.

So I was thinking of starting a Dropbox to host a whole bunch of cool stuff (fonts/templates/modules/plugins/tutorials/nifty pieces of software etc). Anyone keen to help out? Anyone got some cool stuff lying around that they'd like to share?
#16
General Discussion / Transgender 7 year old.
Sun 22/01/2012 09:13:08
Seriously, wtf? What are your thoughts in this?

http://www.youtube.com/watch?v=7S5usRgY720&feature=player_embedded
#17
General Discussion / Organ Trail
Fri 11/11/2011 05:00:28
http://hatsproductions.com/organtrail.html

Original Oregon trail game remade for the zombie apocalypse where you head west in a station wagon trying to find safe haven. Everything you loved as a child about the Oregon trail but better, with zombies! Even the hunting mini-game is in here but instead of hunting for food you scavenge for groceries while shooting/avoiding the zombie hordes.

Spent 2 hours straight playing this when I first found out about it, and yes, people will die of dysentery.

Screenshots:

http://www.eatsleepwork.com/wp-content/uploads/2010/11/Organ-Trail-Zombie-Version-1.jpg

http://3.bp.blogspot.com/_S1MTpCImz1o/TNrMT1gLZxI/AAAAAAAAA5c/N3XFrnzd8sU/s1600/organ+trail+elliot.JPG
#18
General Discussion / Creating a CV
Tue 13/09/2011 08:56:55
Hello AGS!

Well I'm applying for my first job (nothing special, just a little summer job), but having never held a job before I have no idea how to create a CV. The job is for a "Customer Service Assistant" at the local Woolworths store.

Does anyone have any tips on how I should structure my CV/what all to include in it?

Thanks in advance!
#19
General Discussion / CCTV Footage
Tue 30/08/2011 13:28:28
A few days ago a friend of mine had his bike stolen out of the back of his truck. He managed to obtain CCTV footage from the building outside of which his truck was parked.
Now here's the problem: The video is encrypted/encoded in some weird format (file extension is .mp4). It doesn't play on any computer (including the computers at the police station) and when I tried to convert it to DivX/WMV format using Any Video Converter the video comes out all weird and unwatchable. Also VirtualDub doesn't seem to recognize the video.
I also tried downloading GeoVision codec, which is apparently used for viewing CCTV footage, but alas that did not work either.

So I phoned the people who own the CCTV cameras and they have no idea about their technology. They couldn't give me model numbers/the company's name or anything, but I doubt that matters as apparently according to them the company who installed the cameras went belly-up a few years ago.

The videos however do play on their PC, as the company who installed the cameras was kind enough to give them the software/codecs to play the video files.
I have thought about going over there, playing the videos on their pc and using some screen capture software to capture the videos, but before I do that does anyone know ANY way at all to convert these videos to a readable format?

Thanks in advance!
#20
General Discussion / Gardening woes
Wed 22/06/2011 13:00:11
So I just recently moved into my new place, and the garden was in a state of nuclear holocaust. I've spent the last week working on it, and I just need some help designing the flower bed. Here's a picture of it:



Following the wall I want to put in a flower/plant bed, but I don't want it to just follow the wall like a ruler, I'd like it curve slightly or something. The thing is, I'm having a bit of trouble designing the curve. If any of the more artistic-minded AGSers could maybe draw in a curve or something for me to work with, that would be absolutely fantastic!

I'd also take suggestions on plants to put in there that require minimum maintenance.

Thanks!

Edit: Box.net doesn't seem to want to display my image, so here's a link to it: http://www.box.net/shared/ygz7oos8i7bbym5d3jk6
SMF spam blocked by CleanTalk