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

Messages - RickJ

#461
Joseph there are a number of cross platform plugin systems, QT being the one that comes instantly to mind.  QT also has nice graphics, multimedia, network, web support, etc that could freely (as in beer) be taken advantages of if the runtime were to become open source.  I am certain there are other possibilities equally attractive possibilities.   

If the goal were to get AGS runtime ported to multiple platforms then open source would be the way to go about it, IMHO.

The compiler is irrelevant to the preservation of legacy resource files which seems to be your concern.   As previous posters suggest a new compiler output could be created that would be open source.   The legacy format could be supported by a closed source binary in the form of a DLL, static linked library, ect.   
#462
Wow!  There is a lot to think about here....

I don't mean to disparage anyone but I think it's important to keep this discussion rooted in reality if anything is to be achieved.   Many of the above comments are a bit naive with regard to the magnitude and difficulties sure to be encountered via OS or in bringing assistants on board.    For example these few things come immediately to mind.  There are certainly other issues which would quickly surface.

- Coming up to speed on legacy code is tedious and boring 
- CJ's singular dedication to AGS is irreplaceable
- Open source doesn't automatically solve everything
- :

I would suggest that AGS be opened up in stages rather all at once.  This would make it easier to control and adjust the transition process (presumably by CJ. perhaps with input from the AGS community).

Perhaps a first step would be to open source the runtime.   As mentioned above this would potentiality lead to ports to other platforms.   The legacy resource file formats problem is either a non-problem or is easily resolved.  There are already three people intimately familiar with that codebase (CJ, EvilTypeGuy, and Electroshocker) who would be able to mentor new developers.   We would perhaps be able to attract the interest of the SCUMM project in making their engine capable of running AGS games?  And who doesn't want to see an Android port so AGS games can run on all the other "PAD" computers soon to be on the market?

I suspect the relationship of the current AGS editor to the runtime is less modular than desirable to support multiple target platforms.  So perhaps this could be the first non-CJ editor work to be
done?  There are perhaps other editor development tasks CJ would like done that others would be able to undertake.   This would allow some others to become familiar with the editor and CJ's design/coding practices.  Under his mentorship they would become familiar with the editor code and would acquire CJ's vision. 

This could the beginning of an open source editor that would avoid some of the pitfalls such as fragmentation, stagnation, etc..   

#463
Many moons ago I bought Quatro, a spread sheet program, from Borland.    In a time when copy protected software was all the rage (using techniques such as, seri9al port dongles, "vandalized" floppy disks , etc, Borland simply used a common sense, human readable copyright statement.   It's basic theme was "Copyright means it;s just like a book ... as long as only one person uses it at any one time the copyrioght agreement is not violated.    It made me a loyal customer of Borland to this day.   

http://www.fundinguniverse.com/company-histories/Borland-International-Inc-Company-History.html

Borland started out by selling TurboPascal for $49.   At the time compilers sold for $1000s of dollars and one for $49 was unheard of.  The conventional wisdom was that it was necessary to sell compilers for $1000s because people would make illegal copies.   Borland's response, at the time, was that they were counting on it.  People did in fact make illegal copies of the software which was simply a matter of duplicating a couple of floppy disks.  There was also a nice user manual that came in the form of a nicely bound soft cover book.  Making photo copies of the book was expensive (if you couldn't get free copies at work) and more importantly very tedious and time consuming.  People quickly realized that it was worth $50 just to get the book.   

There are two things to take away from all this:

1.  Have a no-nonsense copyright statement, user-license agreement, or whatever kind of statement making it clear what people can and cannot do with the material.

2.  Assume that there will be some copying, sharing, etc among friends and colleagues and make that into a marketing advantage.

- I thought the personalization idea is quite good.  Presumably every page would have a copyright statement, so why not add an additional line stating "this copy - property of John Q Public " so similar.    The first page could have more personal information, even custom text entered by the customer (think gift, dedication, etc).

- Consider option of customer ordering high quality hardcopy.

- Are there other amenities that could be offered to paying customers.

- Include some ads in each print for other products, composers, etc client may be interested.

- Include reference to your company and website on every sheet printed out

Just some ideas to help  you find the right formula for your new venture. 

I hope you are successful.
Rick
#464
I would also point out that most women feel uncomfortable disrobing and engaging in other personal activities in the presence of people, especially males, who would potentially be sexually gratified by the experience.  However, they are never referred to as being sexist or manaphobic. 

I think most men have similar discomfort.  Why are they treated so differently? A bit of a sexist double standard, eh.
#465
QuoteIt's just a way an organisation is trying to avoid the cost of totally predictable legal suits/inquiries/bad publicity. As long no one tell, that's resolving the issue.
DADT was instituted by Bill Clinton as a matter of political expediency.

I think all the talk about homophobia and discrimination misses a critical point.   In a combat situation a soldier expects that the others in his group be deeply and equally committed to each other (i.e. be willing to risk life and limb for one compatriots).   Now consider how the equality of commitment would be affected if two members of the group were lovers?   Would they not be more committed to each other than to others in the group? 

It should also be noted that members of the military give up their freedom when they sign up.  Their conduct is subject to military rules 24-7.  They are told when to wake up, when to eat, when to sleep, and what activities and under what circumstances they may engage in.   Any freedoms they enjoy are privileges given by the military and can be taken away at any time.   From their point of view disallowing sexual activity with a non-spouse married person is no different that disallowing sexual activity with persons of the same sex.   

I didn't join the military because I like to wake up when I'm not sleepy,
eat when I'm hungry, drink when I'm dry ...,

Spoiler

... and if the Rugby doesn't kill me, I'll live till I die.  - "sorry, couldn't resist  :="
[close]
#466
Yes, I would find it very handy for many things.     
#467
First of all AGS only supports pointers for managed objects.  GUIs, GUI Controls, Characters, Objects are in this category;  dasic data types, functions,  custom structs are not.   So to answer your question tyou can't have pointers to bool but you could use a bool array instead, perhqaps something like this...
Code: ags

#define GLEAM_LEN 5

bool  gleamList[GLEAM_LEN];

function showGleamType_HideOthers(int type)
{
  // first make all false
  int i;
  while (i<GLEAM_LEN) //5 types of gleams (A,B,C,D,E)
  {
    if (bType != gleamList[i])
    {
      if (gleamList[i] == true) gleamList[i] = false;
    }
    i++;
  }
  // second make the type "true"
  gleamList[type] = true;
}


However, it seems like you want to be able to turn on one GUI and turn off all the others in a specific group.  To do that you could just do something like the following ...

Code: ags

function showGleamType_HideOthers(GUI *enable)  {

   // second, make all the others false
   int i;
   while (i<guiAmount)  (A,B,C,D,E) {
      if (guiList[i]==enable) {
         guiList[i].Visible = true;
      }
      else {
         guiList[i].Visible = false;
      }
   }
}
#468
What are the actual folder and exe names?  You do know there is a length restriction on the folder name? (either 8 or 12 chars)
#469
First of all, to the best of my knowledge functions and variables must be defined before they can be used because AGS compilation is done in a single pass.

Second of all I wouldn't recommend calling system event handler functions.  IMHO, this is not a good practice and is prone to all sorts of problems.   If I were doing this I would make a separate function that contained whatever functionality is comon to both the event handler and the custom function.  This function could then be called by  either or bnoth the custom function and the event handler function.  Exampl;e below.

Code: ags

// Common Function - functionality  common to both custom and event handler functions below.
function common_function((int x, int y) {
   // Do something
   :
   :
}


// Custom Function - my custom function
function CustomFunction(int x, int y) {
   // Do something interesting
   :
   :
   common_function(x,y);
   :
}

// Event Handler Function - called when a mouse button is clicked. button is either LEFT or RIGHT
function on_mouse_click(MouseButton button) {
  if (IsGamePaused() == 1) // Game is paused, so do nothing (ie. don't allow mouse click)
  {
  }
   // Do something else more interesting
   :
   :
   common_function(x,y);
   :
}


Thirdly, I believe Crimson is being kind when he says "You need better algorythm.".   ;)   Functions calling each other,  calling system event handler functions, multiple returns, etc are simply evil things.  They inevitably lead diabolical errors and other mischief.    Life is much easier if you follow a righteous path ;)  (righteous == simple, stright forward, unclever, etc), IMHO.   

Hope you find this helpful or at least amusing...
#470
I am running AGS on Kubuntu Linux via VirtualBox/ & XP.  I keep the game filers on the linux disk by mapping a linux directory to drive Z as you have done.  This works for me flawlessly.  

I have set the AGS preferences so that New Games are created in the Z:\ directory.  I don't know if this helps or not?  Also you may want to check file/folder properties such as ownership, permissions, etc.   There was a different problem writing to a network mapped drive in an earlier version of AGS but has been fixed in later versions.
#471
What will the tether be attached to?  The density of Saturn is 0.687 grams per cubic centimeter which is less than water so there would be nothing solid to which a tether could be attached.     

http://www.universetoday.com/guide-to-space/saturn/does-saturn-have-a-solid-core/
http://www.universetoday.com/guide-to-space/saturn/density-of-saturn/
#472
Just put some code in the room's repeatedly execute function that looks up each character's x,y position and translates that to a position on the radar GUI.
#473
I don't know if AGS has a line continuation character or not but you could use string formatting to accomplish what you descriobe.  It would look something like
the following:

Code: ags

Display ("Hi, %s %s",
   "Im a super long text that makes", 
    "me have to scroll all the way in AGS editor." );
#474
In contemporary version of AGS dialogs may contain AGS script,
Quote from: AGS Manual
Conversations
While the old Sierra games were mainly based on action and not talking, the Lucasarts games took the opposite approach. ...
   :
   :
   :
AGS now lets you put normal scripting commands in your dialog script, by indenting the line with spaces or tabs. For example:

@1
ego: "Hello. How are you?"
narrator: The man looks you in the eye.
  player.AddInventory(iKey);
  Display("This line is displayed from a normal script command");
otherman: "I'm fine."
return
   :
   :
ego: "Hello. How are you?"
narrator: The man looks you in the eye.
  if (player.HasInventory(iKey)) {
    player.Say("Actually, I'd better go.");
    return RUN_DIALOG_STOP_DIALOG;
  }
otherman: "Here's a key for you."
return

Your example doesn't work because you put a dialog instruction into an AGS script code block.   You should have used the script function SetOptionState(..) instead.

Quote from: AGS Manual
SetOptionState (dialog)
(Formerly known as global function SetDialogOption, which is now obsolete)

Dialog.SetOptionState(int option, DialogOptionState)

Changes whether an option in a conversation is available to the player or not. This allows you to add extra options to a conversation once the player has done certain things.
OPTION is the option number within the topic, from 1 to whatever the highest option is for that topic.

The DialogOptionState controls what happens to this option. It can have the following values:

eOptionOff
  The option is disabled - the player will not see it
eOptionOn
  The option is enabled - the player can now see and use it
eOptionOffForever
  The option is permanently disabled - no other command can ever turn
  it back on again.

Btw, use of a global variable can be eliminated by calling SetOptionState(..) from your script instead of setting a global variable.
#475
The contents of the header are included (i.e. inserted into) every script.   So what you have done is declare separate variables in each script, each having the same variable name but not the same contents.  I think what you want to do instead is to put the variable declaration and export statement in the module script and then put a corresponding import statement in the header.

Code: ags

// *** Module Script *** 
int MyVariable;
export MyVariable;

// *** Module Header *** 
import int MyVariable;
#476
Friendlier Interface?
Who gets to decide what is friendlier and will everyone agree?    I suspect it doesn't matter who decides because people won't agree on what is friendlier.   So IMHO it doesn't make a lot of sense to spend a lot of effort to enshrine a new version in a compiled language where most people won't have opportunity or knowledge to modify it to their own whim.  I think it would make much more sense to just do it in an AGS module.   

It's not that difficult to read and write ini files using AGS.  I wrote a now  obsolete module that does this.  As I understand it, the problem with this approach is that the changes would not take effect until the game was exited and then re-started.   As I understand it the SSH Game launcher module overcomes this but requires VBS which is a problem with Linux (which by the way is also a problem using .Net).

I was thinking that this could be overcome using RunAGSGame(...).  A quick test reveals that a game can indeed run itself via RunAGSGAme()  but does not reload the configuration file.   I have not tested the possibility of using a second game as an intermediary to see that would cause the original game to reload it's config data  but I suspect not. 

CFG File Location
The obvious and simple solution is to use a search list.   When the game starts it could use the  config file in the save games directory.  If there wasn't one there it could use the default in the exe directory.   

Conclusion
1.  It would not be too difficult to update the INI module and add some extra functionality specific to the cfg file.  It's demo game could  contain GUI and code example that duplicates winsetup.exe  People could use and modify  this as they see fit. 

2. To get the file location problem straightened out it will be necessary to ask to make a modification to AGS.   In addition to asking for an option to store the CFG file in the Save Game directory we could also ask for the ability to reload the cfg file and restart a game. from within it's own script.
#477
Using your current method I wonder if it wouldn't be more efficient and easier to just to do a wholesale copy of the section(s) of the background that is to be reused instead of reconstructing it from tiles every time?  For example to scroll right you would just copy the background minus the left column of tiles and redraw on the background at the left margin.  Then the only thing left to do is draw the column of tiles on the right hand side of the background.

This could perhaps be further optimized by using a background that's twice the size of the viewport.  Scrolling is accomplished via AGS scrolling room feature.   It's not necessary to reconstruct the background each game cycle.  Construction of the background outside the viewport can be distributed over multiple game cycles.   As in the DemoQuest Looping room example, when the viewport reaches the right/left edge of the background it is set to the opposite side of the background.   So for our purposes here it means that a copy of the current background must be at that location.   This can be accomplished using the above wholesale copy method or spiting it into a number of operations distributed over a number of game cycles. 

Hope this helps ;)
#478
Quote
Im guessing the only thing thats different is its less time consuming in the pane?
One man's trash is another's treasure.  It depends on one's point of view.   Folks comfortable scripting most likely do it in the script while those who are not use the pane.   
#479
General Discussion / Re: The Twitter Trials
Tue 18/05/2010 02:55:02
Quote from: Zooty on Mon 17/05/2010 15:18:38
The Chain of evidence went something like, off duty security guard searched her twitter feed for where she worked, reported it to her bosses who called the police who (A WEEK LATER) arrested him.

Hardly the rapid response of an organization taking a threat seriously!
Sounds like the basis of a legal defence ... "The tweet wasn't a threat, the author knew it wasn't a threat,  the intended recipients of the tweet knew it wasn't a threat, and the authorities (as evidenced by their actions) knew it wasn't a threat!  So then what is the crime?"

Quote from: Buckethead on Mon 17/05/2010 16:05:38
Quote from: Zooty on Mon 17/05/2010 15:18:38


Hardly the rapid response of an organization taking a threat seriously!

actually, he gave them a week.  :=
Better yet if there was a deadline and the authorities took no action until after it passed or until it was too late to prevent an attack.   It would be further evidence the authorities considered this whole thing to be a non-threat.

The problem with criminalizing communication is that only the sender and the intended receiver are the only ones who can truly know the meaning of the message.  A third party intercepting the message will not have the contextual and historical basis of understanding shared by sender and receiver and will only be able to know the literal meaning of the message which is not necessarily the same.

An example that comes to mind that happened in the late 80s or early 90s.   A couple of guys  got an interesting idea to make a computer game about hacking computers.   As one would expect part of the game play consisted of breaking into game world computer systems using the same techniques one would use to break into real world computer systems.   As game makers ourselves it is easy to visualize the game elements and design process associated with such a game.   I don't recall the details of how but the authorities intercepted or became aware of some communications between the developers involving a discussion about, yes that's right, how one would go about breaking into a computer system.   So the FBI raided the office of this tiny startup company, arrested the developers,  and seized their computers  thinking they had just busted the biggest baddest and down right orneriest gang of cyber-criminals ever. They even boasted about seizing a "User's Manual" written by the alleged criminals that gave details of how to break-in to computer systems (Apparently without even once wondering why criminals would go to the trouble of writing a User's Manual).  The guys got out of jail and soon after it was apparent to all that they had been wrongly arrested for the heinous crime of planning a video game; all except for the government, of course, who kept their computers, manuals, and other materials seized int the raid for several years.  This was long enough to put the little startup out of business and kill the game but more importantly long enough for the news people to forget about what had happened and so the would not have to look like the complete fools they were.

It's the same when they wire-tap alleged criminals and then present the recorded phone conversations as evidence.   Those recordings in the absence of corroborating evidence are meaningless.  For example a phone conversation between Bill and Fred that went like this ...

     Bill:    Can you believe Joe's obnoxious behavior last weekend?
     Fred: I know, he can be a real obnoxious SOB. 
     Bill:    Someone should put him out of his misery.
     Fred: Well I'm free next Saturday
     Bill:   Sounds good to me.

Are these guys planning to kill Joe?  If Joe turns up dead does this prove they did it?  Obviously no; not unless they found Fred and Bill in possession of the murder weapon and map to some remote  location where the body was hidden.

And if'en nobody don't like it what I got to say just remember my pals Darth, Zooty,  Buckethead, LimpingFish, Radiant, Mr. Fibble  (sound like an infamous gang of mobsters eh) and I are free next weekend.   ;D
#480
To the best of my knowledge this is what happens:  In full screen mode AGS attempts to set the resolution of the graphics card.   Programs running inside the virtual machine don't have access to the actual hardware and so AGS fails  it's attempt. 

I use one of the filters x2 or x3 to make the test window large enough to see on my screen.
SMF spam blocked by CleanTalk