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

#1
Quote from: magintz on Mon 01/12/2008 18:16:14
A communication between two different versions of the same game, using string manipulation to get the contents between the XML tags. (Does AGS have an XML parser?)

XML is not a great idea, and the reason is twofold: it imposes messaging overhead, which is bad for latency-sensitive networking protocols (such as game stuff, like object or character positions, as well as game state), and it also imposes XML parsing on the client side. And, last but not least, any human-readable protocol can easily be 'hacked'.

I think a binary protocol is more suited. Having said that, a high-level AGS module could handle the message passing and state maintenance, using the TCP-IP plugin as a framework.
#2
Quote from: Pumaman on Sun 23/11/2008 22:18:22
This seems to mainly be geared towards algorithmic applications, I don't think it would work with a graphical application such as AGS.

Not at all... Here's Doom I in Flash thanks to Alchemy, for your pleasure. I know of a Quake I port too, but was not able to find any links.

I suggest you to take a look at the forums for Alchemy, right now they seem to be the best source of information.

[]s
#3
Quote from: Ryan Timothy on Sat 22/11/2008 15:00:44
If ags could be ported to Flash, in theory could ags games be run on a cellphone?  Cause that would be very cool.

AFAIK, Flash is not fully supported in most mobile phones. I guess we would have to wait a little longer for it to happen.

The other issue with mobile phones would be the size of the games. AGS games tend to be very large these days, because (currently) the engine does not apply compression to the images. But that would be easy to implement... ;-)

Quote from: subspark on Sun 23/11/2008 02:04:43
I beleive you could in theory run them on a ps3 and the upcoming 4th generation psp (which has flash 9+ support).

Sure, modern consoles normally have a browser built-in, and the browser should be able to run Flash without problems.
#4
I'm excited about the latest news from Adobe, which is releasing a beta for Alchemy, their C/C++ to Flash compiler. This does not directly mean that now AGS games can be ported to Flash and will run smoothly, but this scenario is surely closer than ever before. After all, they have already ported the Quake I engine to Flash with it.

I wonder what CJ thinks about this:

Quote
With Alchemy, Web application developers can now reuse hundreds of millions of lines of existing open source C and C++ client or server-side code on the Flash Platform.  Alchemy brings the power of high performance C and C++ libraries to Web applications with minimal degradation on AVM2.  The C/C++ code is compiled to ActionScript 3.0 as a SWF or SWC that runs on Adobe Flash Player 10 or Adobe AIR 1.5.

http://labs.adobe.com/technologies/alchemy/

There is also a similar trend going on for Microsoft's Silverlight, but it seems it is restricted to Quake enthusiasts.
#5
What about music stuttering? Is it still an issue, or has it been sorted out? At least in my game, it still happens when entering rooms, especially the first (at game start).
#6
Infinite loop watchdogs are a good thing, IMO. Occasionally, when I'm coding, I forget to increment the loop index inside the loop, and then the watchdog bails me out.  ;)

The discussion seems to be around when there are nested while's, currently it appears that the watchdog binds to only one of them (the outermost?). I can't think of another solution than to implement a stack of watchdogs...  ::)

On a side note, I find 'noloopcheck' a very dangerous keyword to use. 150000 iterations without checking for user input is likely to be something that would freeze the interface, at least for a while (no pun intended). Instead of using 'noloopcheck', I prefer to 'WaitMouseKey(1)' inside the loop. This way, you don't freeze the interface and you can always interrupt the long operation should the user chose to cancel it.
#7
Quote from: scotch on Wed 24/09/2008 09:03:09
Dave Gilbert needed something like this a long time ago, and I gave him the ags shell plugin: http://www.adventuregamestudio.co.uk/yabb/index.php?topic=30948.msg397988#msg397988
So the ShellExecute method should work fine for loading a default browser.

Yeah, that is basically what I encapsulated in my plugin. It was nice to see your handling of the URL, through rundll32.exe, to open the default browser. I used the same call and now my plugin opens the page in the default browser too!  :)

I find a little scary that anyone using your plugin can call ShellExecute and basically do whatever they want on my machine... in windows land, this can lead to disastrous effects...

Anyway, my plugin also enables you to open a local page, provided it is on the same folder as the compiled game or the saved games folder. I have to rely on windows API to find the path to these folders, since AGS (for security reasons) won't tell you where they are.
#8
Quote from: JpSoft on Tue 23/09/2008 22:52:51
AGS could offer a new world of posibilites to the game creator and some games could be easily expanded.

Well, I really aprecciate your comments and enthusiasm Jp, but everything my plugin does so far is open a browser window on a given website...  :)

To be able to 'expand a game' using my plugin, you would have to open a browser window, then ask the user to click on some link, most likely an .exe or a zip, and then ask him to extract/execute it. Two out of three actions are outside the scope of my plugin, then I wouldn't say that games can be 'easily expanded' with it...  ;)

Anyway, if you want to go in that direction, take a look at the FileNet plugin, I think it would suit this better.

Quote from: JpSoft on Tue 23/09/2008 22:52:51
I believe that the final user confirmation could be optional (as a programmer, i hate when the tools are not fully customizable)

Yes, I hate it too, but I wonder if you, as a gamer, would like to be taken, out of the blue, to some .ru website in the middle of the game, just because the game author wanted to increase his pageviews and generate traffic...  ::)

I would hate to stain AGS's reputation as a safe gaming platform with my plugin, so, for the sake of it, and my own peace of mind, I guess some sort of confirmation is needed.

Quote from: JpSoft on Tue 23/09/2008 22:52:51
for security purposes, i believe is a good idea if the final release of the plugin is available in the same site as AGS, so the creator knows that the plugin is at least than trustable as AGS itself (of course, CJ must add a download link to it in the AGS main page)

This is not really necessary, and it would create yet another burden for Chris. The plugin author can post the MD5 hash of the DLL on the plugin thread, then anyone can check the file to see if it is legit, regardless of where it was downloaded from or hosted at.
#9
Quote from: dkh on Sun 21/09/2008 11:57:42
You're absolutely right, there's no way to be safe with (AGS) games... ever. Any plugin could contain malware and in the end, people could even write their own malware and easily make it look like an AGS game in no time

Well, these days you must use extra caution to download only from trusted sources.

Anyway, I wrote the plugin with a clear use case in mind, which is to enable the user to print some stuff from the game on his local printer. Since AGS does not have printing functionality (which is totally understandable), I decided to use a Flash file, so I need to call the browser and point it to this Flash file when the game exits. Hence, the plugin was made.

As you said in your edit, my concern is just that allowing people to redirect users to websites makes it all a lot easier.

Well, anybody with a reasonable amount of knowledge can code a plugin like mine, but I see your point. I am going to insert some sort of confirmation to the end user, prior to opening the browser window.

Quote from: dkh on Sun 21/09/2008 11:57:42
I mean, with the amount of joke-games we have and are still getting every month, I wonder how many would use this to direct you to questionable content just because the author thinks its funny. I'm undecided on this issue.

Ok, so the confirmation seems to alleviate this...

Quote from: dkh on Sun 21/09/2008 11:57:42
Good work though and I think that - at least in theory - it's an important feature for AGS to allow this, especially for demos to redirect players to the project's website after ending the game, like many commercial games do.

Yeap, I wrote it with legitimate use in mind...
#10
Quote from: dkh on Sat 20/09/2008 20:35:31
Well, it would be very practical to figure out a way to use the user's standard browser. Some people don't even have the Internet Explorer installed, etc.

I totally agree with you, ideally, the default browser should pop up. It's an extra mile I was too lazy to go through, but I will look into it. But as for IE not being installed, I guess it's not even possible... IE is buried way too deep inside Windows.

Quote from: dkh on Sat 20/09/2008 20:35:31
How did you do it?

In the most simple way possible, using ShellExecuteEx(). CreateProcess() is also a way, but that would be a little more trouble.

Quote from: dkh on Sat 20/09/2008 20:35:31
And, is this really safe? I mean, if I download some guy from some guy, possibly from some[/b] webside, I don't want it to call porn or virus-infected sites or whatever.

That's definetly an issue, but you incur that risk whenever there's a plug-in involved. Any plugin can be used to host malicious code, since it is a DLL. I mean, even if you trust a plugin, there's nothing that guarantees that the DLL you're using is 'safe', unless you inspect the code and compile the plugin yourself. But that's not feasible, especially in windows-land.

Unless CJ implements code signing in the engine somehow, there is no way to prevent malicious code inside the plugins. It would be simple to do it, though. The plugins could be signed using a MD5 hash of the original source file, for example. Then in the editor, you should enter this hash in order to use the plugin and compile the game. Of course, the plugin author should publish the proper MD5 hash for his plugin, as well as having his plugin code verified by some trusted source, like CJ himself...  ;)

EDIT: Maybe I misinterpreted your post. Of course, using such a plugin, any game writer potentially could open a page to whatever website he wants. I wouldn't want to ask the user to confirm whether he wants to browse to some site or not, but that's a possibility.
#11
I wrote a very simple plugin to open a browser window in any given website. I was thinking in posting it here and give something back to this community, which has been awesome to me. But before doing so, I want to hear feedback from you.

Right now, the plugin can open a local html page, which sits in the same folder as the compiled game, or, if the address starts with http:, it opens a web page. Both of them open in iexplore.exe, which is hard-coded by now.

Do you guys have any use for this, and if so, any requirements that I should include? Also, suggestions are welcome.
#12
Quote from: visionastral on Wed 13/08/2008 14:09:02
PLEASE PLEASE PLEASE allow video obfuscation!!!

That's not just a matter of a video plugin, in my point of view. But in case you want to try it, I came across something that should allow you to do that.

It's a project called Pismo File Mount. I quote the site:

"Encrypted and/or compressed folders can be created that exist as simple files while locked, but become file system folders when unlocked. Contents can be viewed, edited, and executed, without copying to unprotected storage."

Among other things.
#13
Quote from: LinkMaestro on Wed 13/08/2008 19:26:17
I guess I'm just going to have to tinker around with this for a while until I get more familiar with it.  I can make pretty damn good art..but I'll be damned if I'm any good with file types and all that jazz.

That's for sure. But if you have the art skills, that's more important.

I've setup a little 'pack' for you, with a PSD file, the PNG that was exported, and the AGS game in which I imported the PNG into a character. You can walk him around and see that the drop-shadow is semi-transparent, and the edges are soft. Here's the link.

Hope it helps.
#14
Quote from: LinkMaestro on Wed 13/08/2008 18:59:43
I can save as a .png, but the save options are grayed out...so i can't choose alpha channels.

You _don't need_ to choose alpha channels manually, that's why it's greyed out. Like I said, PS will set an alpha channel for you automatically, based on the transparency of your layers.

It seems your problem has more to do with your PS skills than with AGS usage.
#15
Quote from: KhrisMUC on Wed 13/08/2008 16:51:47
Like explained, it's sufficient to set AGS to 32bit mode, then import proper 32bit PNG files containing an alpha channel.
Questions about creating alpha channel PNGs don't belong in this forum.

I think I know what is happening. I've been through this problem once, maybe you're going through the same situation.

The fact is that PS has three color modes: 8-bit, 16-bit and 32-bit. These color modes represent how many bits are used in EACH individual color component (R,G,B). So, in PS's '32bit color mode', the image has in fact 96bits (32bits x 3channels).

This is DIFFERENT than what is called '32-bit PNG'. In PNG, 8bits are used for each component (R,G,B and A, for alpha), so 8bits x 4channels= 32bits.

Thus, to save a '32bit PNG' that is compatible with AGS, you must use '8bit color mode' in PS, and then you can save the file as a 32bit PNG. As long as your image has a transparent layer (i mean, if it contains any layer that is not a 'background' layer), the see-trough parts of the image will be transferred to the PNG file. You don't need to ask PS to do this, it will do it automatically.

It's a bit misleading, but that's the current scenario.
#16
Quote from: Lt. Smash on Thu 07/08/2008 10:13:01
OFF-TOPIC: I have a non-transparent gui and an alpha-blended button. But the button isn't alpha blended in game. What can I do to make it transparent?

Well, it is really off-topic, but that one is a quickie: apply an alpha channel to your GUI background sprite, even if it is going to fully opaque. Last time I checked, that's the way it (oddly) works.

See further info on this thread.
#17
Quote from: SSH on Fri 04/07/2008 23:27:15
So, your one isn't compatible with voice packs? Mine was primarily made for Dave G, and I know that he needs voice support...

What are 'voicepacks'? I've never heard of them...  ;D

Anyway, no, it was not my intention to use it, simply because I never knew such thing existed.
#18
Quote from: naltimari on Fri 04/07/2008 20:07:10
When the user calls 'SayGUI(text)', the method fills the text inside the label, and it keeps calling WaitMouseKey() while changing the talking sprite, just like you did.

Now I realized I could have used Button.Animate() to make the character 'talk' instead of changing the sprites explicitly...
#19
Quote from: SSH on Fri 04/07/2008 20:00:53
If you don't use Say, how do you display the text?

I place the text inside the Label that is in the GUI. You see, I placed one Label there specifically to act as a placeholder for the text.

When the user calls 'SayGUI(text)', the method fills the text inside the label, and it keeps calling WaitMouseKey() while changing the talking sprite, just like you did.
#20
I've made a similar module to my game myself. Yours is easier to use, since it does not require almost any effort from the game designer besides importing the GUI (or creating one and naming it accordingly).

But in my module I ended up using two features that now seem very cool:

  • I used a button as a 'placeholder' for the character, so I can place it exactly where I want inside the GUI. Like centered, for example. Or, if the GUI background is customized, I can place it at the corner, inside a box, you name it.
  • Since I can place the character anywhere, I can place the text too, using a Label as a placeholder.

    I thought these two would be great additions to your module, and the 'installation' is not that hard for the end user, all you have to do is name the controls accordingly.

    As to why I didn't release my module so far, well, I wanted it to have a 'back/forward/skip' feature as well, and I had a hard time doing it. It is now almost complete...

    * Note: now I realize my module has a WaitMouseKey(), because the 'normal' behaviour of Say() is to wait for a user interaction. If you remove the 'Say()' from yours, you have to do it as well.
SMF spam blocked by CleanTalk