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

#1
This is sort of specific question that might have more general applications, but it pertains to a game I'm working on.  Wasn't sure if it would be better to post here or Adventure Talk and Chat.  Feel free to move.

Basically, I am making a game that features Context Menu GUI.  Clicking will perform a default action, while clicking and dragging will bring up a list of all the actions that can be performed on an object/character/hotspot (some things can be taken, pushes, talked to, some things can't, etc.).  Separate submenus for conversations and actions involving inventory items (haven't decided yet how to handle using inventory items on eachother.  Perhaps I will have huge a list of all possible options come up under the inventory submenu you can access by clicking on the main character, or maybe I'll make a separate inventory screen like in other games--input on this appreciated).  Right click walks.

For people who don't like novel interfaces or whose mouses don't click and drag well, I intend to include a Windows Mode that will perform the same actions but behave more like windows, with right clicks bringing up a menu whose options can be selected with an additional left click, double clicks for default actions, and single left-click to walk.

There may also be abbreviated versions of the system that come up when having the player walk around or perform certain actions would break the story.  And I was thinking I would allow use of the mousewheel to cycle through the default options, though I'm not sure if that would be worth it.  Mostly, I just want to minimize as many of the inefficiencies in the verb-coin/pop-up menu style of interface as I can, without sacrificing the flexibility of the context menu.

I made a test game a while back with a sort of proof of concept version of this GUI.  I found myself sort of naturally designing a lot of puzzles that involved selecting the same options multiple times, for different responses, and something also the discovery of new interaction options.  It seemed to flow naturally, but the problem was it was obvious to me that players who could not read my mind would probably not be able to guess when selecting the same option more than once would yield new results and when it would not.

My best idea so far to get around this, aside from simply avoiding that type of puzzle, is to highlight options that haven't been tried yet, including ones that have been tried but haven't been exhausted.  Options that will not yield new results would then be some other, less eye-catching color, though still selectable for players who want recaps, where such makes sense.  If actions elsewhere in the world make it so a previously exhausted action will yield new results, it will light up again.  I might even do something to the mouse-over graphic to indicate when a hotspot has actions that haven't been tried yet, to save players time.

The one problem I see with this system is it seems to undermine a certain type of puzzle.  Namely, timing puzzles and other puzzles that rely heavily on the circumstances under which an action is performed but not the action itself.  Take the classic puzzle where a character looks away briefly allowing you to pocket some small item that they don't want you to take.  If the option to take that item instantly lights up when they look away, that gives away the solution to the (in this case really obvious anyway) puzzle.  It makes the puzzle easy for the wrong sort of reason, and the whole point of that type of puzzle is that it creates an alternative to the "Just click all the options" puzzle solving that I think this GUI system may already lends itself to.

One thing I thought might be a good workaround is to make a distinction between new variations or continuations of an action vs. new results from the exact same action performed under different circumstances.  If you've already tried to take the item, the TAKE ITEM option won't light up again just because its owner looks away, since both times you are attempting the exact same thing, but you will still get a new result.  By contrast, if you are supposed to push the same statue three times to knock it over, it will stay lit up after the first push, because the player and player character would reasonably see themselves as continuing the first push, or trying again, but harder. Since there is a logic to the distinction, and the player should be paying attention anyway, it doesn't seem unfair.  But I worry that the distinction won't be obvious enough, and players will think I'm just using the highlighting system to trick them into  thinking the real solution won't work.

My thinking is perhaps if I could communicate this distinction between, say, action and context early on in the game, then it might not be as much of a problem.  But I'm not sure how best to do that without relying on outside texts or egregious fourth-wall breaking.  But would this be enough?

The third option I suppose would be to have a third color for actions for which new attempts may or may not yield new results, so that players would know to keep trying them, but not when.  This has the advantage of not relying on the player picking up abstract conceptual distinctions but I worry it would still give away too much.

I'd love to hear thoughts on this specific quandary and the one about handling inventories.  I'd also love to hear feedback on the interface as a whole.  Any drawbacks or advantages I might have overlooked.  I know this is in the critics lounge, but I wouldn't at all be upset if it developed into a general discussion of Context GUIS.  As I said, I wasn't sure if I should put it in Adventure General.

If anyone wants to see it, I could also post the proof of concept.  Though it has some kinks and I haven't worked on it in a while.
#2
Hey everyone.  I whipped this up for my own family Christmas celebration this year and thought I would tidy it up and share it.


The Secret Santa Generator


The Secret Santa Generator is a simple, free application designed to generate a list of Secret Santas without revealing who is getting gifts for whom.  Think of it as drawing names from a hat.  Just input a list of everyone participating in your Secret Santa gift exchange, and the Secret Santa Generator will create a simple .txt file for each of the Santas, telling them who they are going to get gifts for.  This has a few key advantages over the age old hat drawing system:

* The Secret Santa Generator works without every participant having to be present for the drawing.  Are your friends and family scattered throughout the country or even the world?  Do busy schedules make it near impossible to get everyone in the same place at the same time?  Just use e-mail, instant messengers, or social networking services to send each of the Santas the .txt file with their name on it.  As long as you don't look in the files you won't know who is getting what for whom.  No need to involve an objective third party to draw names for you.  The corollary of course is that whoever is running the generator has to be someone who can be trusted not to peek.

* The Secret Santa Generator is faster.  When you draw from a hat, there is always the possibility that someone will draw their own name and then you will need to start the whole process over again.  However, the Secret Santa Generator can run up to 1000 drawings in a fraction of the time, and it will never let any Santa draw themselves.

* The Secret Santa Generator's special Rules feature allows you to control who can be a Santa for whom.  Don't want couples drawing each other?  Worried about personal grudges landing someone with a crappy gift?  Want to play favorites and rig things so you can get gifts for someone you really like?  You can do all these things by making Rules that tell the Secret Santa Generator not to allow certain people to be Santas for each other.  Use your own discretion.  This is of course another reason why running the generator is a responsibility best left to trustworthy individuals.


You can download the Secret Santa Generator at the  Game Page.  Note: Don't extract it to Program files or anywhere that requires special permissions to create or edit files, or the .txt generating function won't work.

Instructions are available in the ReadMe.

You can also get the source code here here.  Be warned, though: it is fairly simple, but there aren't many notes.

Enjoy the holidays.
#3
I've returned to using an old computer on a temporary basis while my laptop is out of commission.  I've had the laptop for a couple of years, but before that, I used this computer for everything and it never had any trouble running AGS or AGS games.

Since I have come back to using it, however, I haven't been able to run AGS games full screen.  I thought maybe this was due to some change in the latest version of AGS, but I tried playing some older AGS games (Ben Jordan 7 and when that didn't work 6 Day Assassin), but the problem persists.  Basically what happens is that the screen resolution will change based on the game settings and then the game window will fill the screen, so that I see the edges of the window, but nothing else (I think this is normal: it usually happens for a second when I start a full screen AGS game before being replaced with the game's visuals).  In 6 Day Assassin the screen goes black.  In either case, I will hear the games intro sounds/music if they have any, and I can still get out with alt+x, so it's not really frozen.

In Focality, Technobabylon 1 and 2, and ~Airwave~, I can get around this problem by playing in windowed mode.  In Ben Jordan 7, Gemini Rue, and Vegetable Patch Extreme Turbo 2, I encounter a problem that seems basically the same.  I will see the window outline and hear sound, but the graphics will not appear; instead I see whatever was behind the window before.  If I hold the mouse button down on the top bar (as if to drag the window around the screen) the game will animate normally until I release the mouse button, at which point the image will freeze again.  The most obvious dividing line seems to be age of the game, Gemini Rue being the exception (was it made in an older version of AGS?)

I'm not sure exactly what System specs are most relevant.  But my computer is running Windows 2000 Professsional.  NVidia.  One of the reasons I switched to the laptop was that my screen has been displaying artifacts (randomish colored pixels) and some people have suspected problems with the video card (Radeon 9200 series), so that may be my answer right there, but I don't recall having any problems with AGS games either after the artifacts started appearing or after a friend's unsuccessful fix attempts.  But it was two years ago, so I suppose I could have forgotten something like that.  And even if not, if tthe card was already deteriorating then, it has had plenty of time to get worse.

Just trying to explain this behavior to see if there is an easy fix.  Right now any computer related funds are going toward repairing my laptop, but I'd like to be able to play AGS games in the meantime, if I can.

EDIT:  I should note that I haven't noticed these problems with any other applications, as yet.
#4
Been working on a test game in 3.1.2 SP1, and for some reason every time I try to use the Wait() command I get the following error message.

Also Character.Walk on blocking mode (non blocking walking works fine), so I'm assuming it has something to do with blocking scripts, but Display works fine, too.

Code: ags
---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x00443870 ; program pointer is +379, ACI version 3.12.1074, gtags (1,5)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and post the details on the AGS Technical Forum.

in "room1.asc", line 336


Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.

An error file CrashInfo.dmp has been created. You may be asked to upload this file when reporting this problem on the AGS Forums. (code 0)
---------------------------
OK   
---------------------------


At one point the blocking scripts seemed to be working.  I couldn't say exactly when they stopped, though I recall getting some sort of error yesterday when I was saving.  Things seemed to be working, and it's just a test game so I didn't take much note of it at the time, but it wouldn't surprise me if that's when it started.

Any idea what's wrong?

The main thing I'm doing with this game is module scripting, so even if it isn't salvageable I should be able to lift out the important stuff, even if I can't salvage the "game."  Unless this is a problem with one of my scripts,  Is that possible?  It seems like it is happening on a deeper level than the script, but maybe I did something really weird?

Tested it with "Room load after fade in" and room RepExec, as well as repeatedly_execute in my module.
#5
So, I had an idea.  Don't know if anyone has tried this.  (Apologies if this is the wrong forum, but I couldn't think of one that was more appropriate.)

Say you are making an RPG, or another game that utilizes a large number of arrays and structs.  The numbers of variables that need to be set can increase rapidly, (exponentially in some cases), and while some of these variables can be set automatically through the script, many of them will need to be set manually, at least for their initial value.  This is the unavoidable cost of creating stats for large numbers of monsters, characters, items, or whatever other entities your game just can't get enough of.  What you can avoid, however, is the tedious copy-pasting of
Code: ags

guy[1].Name = 
guy[1].HP =
guy[1].Level =
guy[1].Etc. Etc.

Repeating with guy[2] and guy[3] and guy[256].

If you have Microsoft Access, or a similar program, all you need to do is input the relevant variables into a spreadsheet.  Input your variables (ID#, Name, HP, Level, etc.) in the columns and instances of the struct (be it describing characters, items, etc.) in the rows.  Then you just tell Access to generate a report or label with the data displayed in a format like (Access Psuedocode:)
Code: ags

guy[{ID#}].Name = "{Name}";
guy[{ID#}].HP = {HP};
guy[{ID#}].Level = {Level};

and then paste the resulting text into on_game_start()

When I tried this I wasn't able to copy the label text straight from Access, so I dumped it to a plain text file and copied it from there.

Also note that Access uses certain characters (such as {}, and I think quotes, actually) in its label generator, so you may need to use placeholder characters to signify those characters and then run a Replace All in notepad before copying into AGS.

Obviously, this won't be worth it for structs with only a couple instances, but for large ones, it might save you a bit of work.

I would not be at all surprised if a similar effect could be accomplished using Excel or another simpler spreadsheet program, but I haven't tried.  Another thought I had was programming a simple utility in AGS itself to generate simple code in a String and dump it into a .txt file.

Has anyone else used a similar (or dissimilar) method to generate AGS script and found it useful, or for that matter entirely unuseful (too much work or producing problematic code)?  Feel free to share your ideas/experiences here (or point out problem areas you see in this method or others), as this information could be useful.
#6
Arlene Campbell and Edward Yamamoto have just met at a boring work party.  It's your job to entertain them.





Show them talking, drinking, flirting, dancing.  Anything two professionals might do at a semi-formal social function.  Or if that's just too boring, see if you can help them find a creative (or destructive) way to liven things up a bit.  The sky's the limit.

But here are the other limits:

Official Rules:
-A sprite is supplied, with a theme.
-Participants must use the given sprite for their animation.
-The starter of each competition will decide on the winner.
-The winner, who will decide on the next competition's theme, must also supply a sprite.

My additional rules:
-You must use both of the supplied sprites, but you can reposition them as you see fit.
-You are free to resize the canvas.
-Both sprites must be at least minimally animated (That is, if one sprite is responsible for most of the action, at least make the other blink or laugh or something.)
-You may introduce additional sprites, be they props or other co-workers as you see fit.
#7
I'm trying to update a script to work with the new DrawingSurface functions, but I am having trouble getting the DrawSurface function to work.

I made a function that, among other things, draws an oval on the screen and a second function that, among other things, is supposed to take the oval away.  Previously, I could simply use RawSaveScreen at some point before the oval was drawn and then RawRestoreScreen in the second function to take it away, but I'm having trouble duplicating the effect.

At the top of the script I have:
Code: ags
DrawingSurface *screenBackup;


Then in the oval creation function:
Code: ags
  screenBackup = Room.GetDrawingSurfaceForBackground();
  DrawingSurface *surface = Room.GetDrawingSurfaceForBackground();
  surface.DrawingColor=31;
  surface.DrawEllipse(AnchorX, AnchorY, RangeX, RangeY);
  surface.Release();


And in the later function:
Code: ags
    DrawingSurface *surface = Room.GetDrawingSurfaceForBackground();
    surface.DrawSurface(screenBackup);
    surface.Release();
    screenBackup.Release();


As far as I can tell, this should produce the desired result, but instead, when I call the second function the game crashes and I get the error:
Code: ags
Error: DrawingSurface.DrawSurface: cannot draw surface onto itself


What am I doing wrong?
#8
I'm trying to make a custom text display function that puts text on a GUI with a fixed size.  I want to cut off the end of any string that gets too long for the GUI, but in order to do that I need to be able to test the string's width.  I could test the length in number of characters, but it would mean having to use a font in which all characters are the same size.  I thought I would use the GetTextWidth function like so:

Code: ags
function TextIt (String sa, int width) {
  int beginning=0;
  int end=sa.Length;
  while (width < GetTextWidth("%s", sa.Substring(beginning, end), eFontFont1)){
    end--;
}
  Display("%s", sa.Substring(beginning,  end));
}

But it won't compile.  It seems GetTextWidth doesn't work with any sort of string formatting.  Is that an accurate assessment or am I doing something wrong?  If the former, is there any other way to test the width of a string in number of pixels instead of number of characters?
#9
So I'm in concept stages on a new game, and since the story I have in mind will likely call for more characters than I feel entirely comfortable drawing and animating from scratch, I decided to draw one character and make a template (or templates) from it, so that I can more easily mix-and-match clothes and features, and save a ton of time on mass production (at the admitted expense of breaking the "Unique Silhouette" rule).

Anyway I drew a basic character (that I may or may not use in the game) at a few different angles and then "undressed" it to make the template:






x2




I was going for female, this time around, but everyone who has seen the character has automatically assumed it was male (I've edited it a little since showing it to anyone but I'm not sure it was enough), and the template has come out looking more like some sort of alien baby than anything.  Any tips on defining gender at this scale?  Or help with proportions in general, really.

Something looks off with the side view, but I can't place it.

This is also my first time working with eight (five) directions, so pointers there would also be greatly appreciated.  I will probably ask more specifically about them when I start trying to animate.
#10
Two (related) questions.  I am trying to confine a character inside of a circle on the ground.  The circle needs to be visible to the player and easily resizable and movable.  My first idea was to represent the "trap" using the RawDrawCircle function, but when I did, I realised two things = first, the circle is automatically filled, which looks strange, and second, a literal circle doesn't take perspective into account, since my rooms and character aren't drawn from a straight overhead viewpoint.  So question one: is it possible to RawDraw an ellipse without using an imported image of some sort?  And how?

Then there is the problem of keeping the character inside the "circle".  Since the size and location are not static, I can't use walkable areas.  My best idea so far is to anchor the character to the ellipse's foci, and somehow stop him or pull him back if he goes too far from them, but I can't figure out how to check the sum distance from the two foci.  Will I need to use floats?  (Bear in mind that my geometry is extremely sketchy at best.  Not bad at math so much as waay behind.)

If anyone could point me in the right direction it would be greatly appreciated.
#11
Hints & Tips / Stuck in Sky Adventure
Tue 28/03/2006 04:23:11
Alright, been playing Sky Adventure, and...
Spoiler
...I've got the anker/grapplehook, the baby angel, the shovel, and the saw.  I've buried the fruit seeds and talked to the tree-god, but I can't figure out where to go from here.  My only ideas are that I need to somehow get higher into the angel-tower, to find the guy from the beginning, or I need to find something to carry the magic water in.
[close]
Any pointers?
SMF spam blocked by CleanTalk