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

#941
Much appreciated Pumaman. As most pc users today are using 2000/XP I beleive it is more than worth exploring.

Take care.
#942
I appreciate the clarity Pumaman. However I beleive it is time now that we live in the 21st century for AGS to support both the standard icon format (byte swapping) and it's own resource swapping ability for icons such as 48x48 XP alpha blended icons to work.

Cheers.
#943
General Discussion / Re: Resource hacker
Tue 10/01/2006 04:35:43
Which sucks incredibly. Can we fix this please.
48x48 alpha blended icons too.

Thankyou!

#944
Hang on we've only loosley solved HALF the issue here.

AGS supports PNG files too. Targas and PNGs both support imbedded alphas. PNG files does not support an alpha channel per say but it rather imbedded transparency in the rgb channels.

If anyone didn't previously know what an imbedded alpha channel is then I beleive I'm wasting my time.

Alphas simply dont bloody work correctly. I use Photoshop CS2 and somehow, AGS can not deliver when it comes time to import my PNG files. I get horrid artifacts around my sprites which are opaque in the game.

If I open my PNG files with MS paint the same artifacts are visible. AGS is going to have to compensate for the newer file format and the way it handles alpha channels because I'm not about to email Adobe and tell them to correct their code to fit my needs.

This is simply rediculous and an absolute disaster for game development.

Somebody please fix the alpha channel problem for good.
I'm sick of it.

All that the artist should be required to do is paint a sprite onto a transparent background in photoshop (shadows or whatever).

None of this 'add and alpha channel and paint i the opaqness manually' buisness. What is that? I can't understand why somebody creating game art would actually go about it this way. Nothing but a tedious and an unessicary waste of time.

If you want a seperate alpha channel that is not imbeded (rather restrictive) then use the calculations feature in Photoshop. Sheesh.

For someone creating shadows and antialiased sprites for use with AGS then I suggest you stick with imbedded alphas. Otherwise your dealing with premultiplied alphas and all that jazz.

Let me give some advice.
If you have a character painted with a shadow and collapsed to a single 'background' layer in photoshop, when you create your alpha channel using calculations, your shadow is going to turn up funny. Can anyone guess why? Because the antialiased edges of your alpha chanel are most likely pickign up some of that white background surrounding the character and it's shadow. To have a shadow with non imbedded alphas it would be wise to have the character on a black background or supply the sprite with an extra bit of body around where the alpha is going to cut through.

It's so much easier to just paint your character and shadow and merge it into a single layer with a transparent background and save it as a png.

I hope all this talk about AGS antialiasing alpha blended sprites is not to do with he fact that most of you, including chris, just don't get the whole alpha thing.  Antialiasing in AGS and using alphablended sprites are mutually exclusive ways of having jaggy free graphics. It's futile and rediculous to combine the two approches.

I swear I'm I talking to a bunch of programmers attemting art.

Look, sorry in advance for my frustration and synical remarks but understand, this alpha business needs to be fully understood and applied to AGS correctly.

At the moment, for many, the feature is as good as gone.

Are we all on the same page?

Beers.
#945
Im sorry forgive me but I am a little confused.

How does antialiasing alpha blended sprites do any favors?

They are both mutually exclusive.

My point is why support antialiasing an alpha blended sprite when it can be as jaggie free as the alpha needs to be.

I can understand that antialiasing a sprite with standard transparency would acheive a similar effect without the need for alpha channels. Why combine the two seperate approaches of having jaggie free sprites? This is simply not making any sense.
#946
Tell me if you manage to get rid of the jaggies around the shadow.

I am having tremendous unfortunate issues with Photoshop CS2 and my alpha blended png sprites.
It's as if photoshop writes a png that ags cannot fully understand. The sprites in photoshop are contained in a single layer. The background is transparent (checkered) meaning the alpha is, naturally, imbedded in the RGB.

If I import the png into AGS, the area outside of what was drawn in photoshop is full of horrid artifacts. These artifacts appear to use the same colors as the sprite they surround. The alpha does not work at all. If I open the png into Windows paint, the same artifacts appear.

Therefore it must be a photoshop CS/CS2 issue and something that I beleive AGS needs to compensate for very promptly.

It's an absolute disaster!

Cheers.
#947
These people are right. AGS is very logical and intuitive. There's consistant support for beginners with technical issues and tutorials all over the internet with premade examples.

The graphics depends on your or your artist's 'skill with a pen' as many have expressed already.
The real question your asking is how much detail and graphical prowess can be applied to the engine.
The answer is, as much as any game of today supports.

You must understand that although AGS nativley supports a 'classic early 90's' type of gameplay, the power of the engine is up to date and you can very truly create an adventure game with today's graphics and visual effects.

Take a look at Runaway, a modern game by Pendulo Studios that sells for more than some of the latest 3d games.

http://www.pendulostudios.com/

From a technical point of view, game's like these are more than doable using AGS.
From an artistical point of view, game's like these take an incredible amount of time and dedication.

Ultimately, how far are you prepared to go?
Beers!

The best of luck to you and your development team!
#948
I've been developing a game for the past 3 weeks and have the same issue. Every 2nd or 3rd time I run my game it wont exit the program properly. To be more descriptive, it apears to for half a second quit out of the program but then a windowed version with no contents (just titlebar and borders) will pop back up and hang. End task works as a temporary solutin to the problem.

I am running WinXP SP2 with .net framework and McAffe Virus Protection.
I also have an Nvidia GPU and the beta drivers and my CPU is a 3.8 Pentium 4.

Lastly I am not running AGS from the C:\ drive.

Any help here would be hot!
Cheers mods and fellow AGSers'.
#949
So...

function DefineMode(int mode, String name, int AGSmode, char extension){
Ã,  //Define non-inventory template modes. Call it in game_start for each mode to
Ã,  //set up them all.
Ã,  Tmode[mode].name = name; //Line 160
Ã,  Tmode[mode].AGSmode = AGSmode;
Ã,  if (extension!=0) Tmode[mode].extension = extension;
}

EDIT: God I'm hopeless. That didn't work.

The error reads:
Error (line 160): cannot assign to 'cursormode::name'
#950
I also would like to express my interest in Locations.

Ideal for example:

Cool Bird's eye view shot:
player talks to Rupunzel, who is high up in tower.
EGO walks to Location which is assigned to both the Rupunzel character and the top of the tower.
EGO changes view (looking up and talking).
After conversation player decides to look at hotspot "Towertop". EGO is already at the Location point set for both the Rupunzel character and the towertop hotspot.
EGO thinks aloud, "Now that's a pad!"

etc.

I'ts pretty clear cut that the implementation of Locations is essential without question.

Looking forward to it. I really can't wait.

Beers.
#951
Wowsers Gilbot!

Could I trouble you long enough to convert the other functions I have?

They include:
Code: ags
function DefineMode(int mode, const string name, int AGSmode, char extension){
Ã,  //Define non-inventory template modes. Call it in game_start for each mode to
Ã,  //set up them all.
Ã,  StrCopy(Tmode[mode].name, name);
Ã,  Tmode[mode].AGSmode = AGSmode;
Ã,  if (extension!=0) Tmode[mode].extension = extension;
}


and

Code: ags
function DefineInvMode(int mode, const string name, const string preposition, int onlyinv, int caninteractwithinv, char extension){
Ã,  //Define inventory template modes. Call it in game_start for each mode to
Ã,  //set up them all.
Ã,  DefineMode(mode, name, 2, extension);
Ã,  StrCopy(Tmode[mode].preposition, preposition);
Ã,  Tmode[mode].onlyinv = onlyinv;
Ã,  Tmode[mode].caninteractwithinv = caninteractwithinv;
}


And finally how would I go about translating this to more native 2.71 style?

Code: ags
import function Translation(const string language);


Thanks for the help Gilbot. Beers!
#952
Hmm somethings wrong with mine.

When I hold down the Page Up/Down Key or the Home/End key the GUI pops up with +1 or -1 value but the values don't continue to change while I hold the key down.

And now that I have set my Text speed slider to have 5 as max PageUp wont work.

What am I doing wrong? I am using GUI 3 for both text speed and volume.

Also I have added Insert and End for Music Volume.
I have everything set to go except INS/DEL wont pop the GUI up.

Basically PageUp/Down = Text Speed
Home/End = SFX Volume
Insert/Delete = Music Volume

My code:
Code: ags
///////////////////////////////////////////////////////////////////////////////////
//////////////////SLIDER CONTROL///////////////////////////////////////////////////
#define KEY_PAGEUPÃ,  Ã, 380
#define KEY_PAGEDOWN 381
#define KEY_HOMEÃ,  Ã,  Ã, 371
#define KEY_ENDÃ,  Ã,  Ã,  379
#define KEY_INSÃ,  Ã,  Ã,  382
#define KEY_DELÃ,  Ã,  Ã,  383

#define TIMEOUT 120
int timer = -1;


#define SLIDER 0
#define VOLUME 0

function GetKeyPressed() {

Ã,  Ã, if (IsKeyPressed(KEY_PAGEUP)) return KEY_PAGEUP;
Ã,  Ã, else if (IsKeyPressed(KEY_PAGEDOWN)) return KEY_PAGEDOWN;
Ã,  Ã, else if (IsKeyPressed(KEY_HOME)) return KEY_HOME;
Ã,  Ã, else if (IsKeyPressed(KEY_END)) return KEY_END;
Ã,  Ã, else if (IsKeyPressed(KEY_INS)) return KEY_INS;
Ã,  Ã, else if (IsKeyPressed(KEY_DEL)) return KEY_DEL;
Ã,  Ã, else return 0;
}


function on_key_press_always(int keycode) {
Ã,  
Ã,  Ã, if (keycode == KEY_PAGEUP) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 6, GetSliderValue(3, 6)+1);
Ã,  Ã,  Ã,  game.text_speed = GetSliderValue(3, 6);
Ã,  Ã, }

Ã,  Ã, if (keycode == KEY_PAGEDOWN) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 6, GetSliderValue(3, 6)-1);
Ã,  Ã,  Ã,  game.text_speed = GetSliderValue(3, 6);
Ã,  Ã, }

Ã,  Ã, if (keycode == KEY_HOME) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 8, GetSliderValue(3, 8)+1);
Ã,  Ã,  Ã,  SetSoundVolume(GetSliderValue(3, 8));
Ã,  Ã, }

Ã,  Ã, if (keycode == KEY_END) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 8, GetSliderValue(3, 8)-1);
Ã,  Ã,  Ã,  SetSoundVolume(GetSliderValue(3, 8));
 }
 
Ã,  Ã,  if (keycode == KEY_INS) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 10, GetSliderValue(3, 10)+1);
Ã,  Ã,  Ã,  SetMusicMasterVolume(GetSliderValue(3, 10));
Ã,  Ã, }

Ã,  Ã, if (keycode == KEY_DEL) {
Ã,  Ã,  Ã,  timer = TIMEOUT;
Ã,  Ã,  Ã,  GUIOn(3);
Ã,  Ã,  Ã,  SetSliderValue(3, 10, GetSliderValue(3, 10)-1);
Ã,  Ã,  Ã,  SetMusicMasterVolume(GetSliderValue(3, 10));
Ã,  Ã, }
Ã,  
}


And in the repeatedly_execute:
Code: ags
#sectionstart repeatedly_execute
function repeatedly_execute() {//////////////////////////////////////Repeatedly Execute///////////Repeatedly Execute
Ã,  Ã,  // put anything you want to happen every game cycle here
////////PUT YOUR SCRIPTS HERE IF POSSIBLE///////////



////////////////////////////////////////////////////
// If the timer reaches zero, turns the GUI off.Ã,  
	if (timer > 0) timer--;
Ã,  else if (timer==0) {
Ã,  Ã,  Ã,  GUIOff(3);
Ã,  Ã,  Ã,  GUIOff(3);
Ã,  Ã,  Ã,  timer = -1;
//-----------------------------------------------------
}
#sectionend repeatedly_execute


And finally in the repeatedly-execute-always:
Code: ags
#sectionstart repeatedly_execute_always
function repeatedly_execute_always() {

Ã,  Ã, if (IsGamePaused()==0) on_key_press_always(GetKeyPressed());
}
#sectionend repeatedly_execute_always


Any Ideas?
#953
Its all good. I only had to add const to several functions.

My only problem now is this part which returns the same error.

Code: ags
// the button sprites probably deppend on the language being used 	
Ã,  if (Translation("default")){ // if no translation file is being used
//			mode	button	normal	highlighted
//				number	sprite	sprite
Ã,  Ã,  DefineButton(	GIVE,		0,	13,	22); 
Ã,  Ã,  DefineButton(	PICKUP,	1,	14,	23); 
Ã,  Ã,  DefineButton(	USE,		2,	15,	24);
Ã,  Ã,  DefineButton(	OPEN,		3,	16,	25);
Ã,  Ã,  DefineButton(	LOOK,		4,	17,	26);
Ã,  Ã,  DefineButton(	PUSH,		5,	18,	27);
Ã,  Ã,  DefineButton(	CLOSE,	6,	19,	28);
Ã,  Ã,  DefineButton(	TALK,		7,	20,	29);
Ã,  Ã,  DefineButton(	PULL,		8,	21,	30);
Ã,  }
//////////////////////////////////////////////////////////


It's weird because DefineButton contains no strings.

Also I tried this:

Code: ags
function Translation(const string language){
Ã,  // checks if the translation passed as parameter is being used. To check if no translation is being used, pass "none" or "default" as parameter.
Ã,  string currentlang;
Ã,  GetTranslationName(currentlang);
 if ((IsTranslationAvailable()==1 && StrCaseComp(currentlang, language)==0) || 
Ã,  Ã,  Ã, (IsTranslationAvailable()==0 && (StrCaseComp("none", language)==0 || StrCaseComp("default", language)==0)))
Ã,  Ã,  Ã,  return 1;
 else return 0;
}


and theres no spot in the following to put a const:

Code: ags
function DefineButton(int mode, int button, int normalbuttonpic, int overbuttonpic){
Ã,  //Define the buttons for a template mode. Call it in game_start for each mode to
Ã,  //set up them all.
Ã,  Tmode[mode].button=button;
Ã,  Tmode[mode].highlightedbutton=overbuttonpic;
Ã,  Tmode[mode].normalbutton=normalbuttonpic;
}


EDIT: Fixed. For anyone elses knowledge I just had to add constÃ,  in the translation part Example:
Code: ags
function Translation(const string language){
in both the global script and the script header:
Code: ags
import function Translation(const string language);


Naturally, adjusting the function_translation part will correct the DefineButton section.

Thanks for all of your help fellas. Much appreciated! Much indeed.
#954
Cheers to the both of you.

Funny though as I never had to state the word string in the actual "" for it to work before, or is this a shining example of the changes that were made between v2.7 and v2.71RC1/2

I know how to fix the problem I'm just slightly confused about the specifics.

Beers!
#955
so to bring this to practise,
it would go for example:

Code: ags
DefineMode( WALK, "const Walk to", 9, 0);//Line 631. The template uses AGS mode 9 for walk modes, instead of 0.



Or ideally, how would I rewrite this code to work as a new string instead of trying to hack around?
Cheers anyhow
#956
Yes and no. It's important to work with the developer to ensure a smooth and comfortable workflow. Obviously some major things have been changed since 2.7 (which we were warned about naturally) however I need 2.71's new features to work with. I've only just begun my game so theres really no harm in making a swift change over to the latest build.

In addition, after the upgrade and proper adjustments I don't think my game will become incompatible like it is now for quite some time. But as you said, it needs a few minor adjustments and at this stage, I'm prepared to try anything to get my games to work with the latest tools.

Again, if anyone could help me get the obsolete code to work with AGS v2.71 RC2 I would be most appreciative.

BTW: I've started a new thread. So please post there in regards to this issue.
http://www.adventuregamestudio.co.uk/yabb/index.php?PHPSESSID=ef5c5e1983193a0baabe32bb6a8a9a39opic=23252.0

Thanks again.
#957
Yes but it is safe to assume these changes in the way RC2 handles string constants is permanent. And I want my game to work with it as soon as possible. RC2 has been thouraghly tested or it would not be a release candidate.Ã,  :)

Minor bugs and hickups asside, I want my game to be compatible with the lastest + stablest version of AGS.

The point is, my game code isn't going to work with AGS 2.71 Final nor any future version. So I am asking anybody who 'knows what they're doing' for help in adjusting these minor errors to work with the new version's architecture sooner rather than later.

Too much?

Cheers.
#958
Still no update for MI2 Template? RC2 has been released and the MI2 template remains ever so.....incompatible.  :'(
#959
Here we go again! Sigh.

Here is the error I am getting now that I have upgraded to Release Candidate 2.

Error (line 631): Type missmatch: cannot convert 'const string' to 'string'

This section of my Global script is pretty self explanitory. Its from the MI2 SCUMM GUI template released for AGS 2.7

Code: ags
////////////////////// MODES SETUP ///////////////////////
//////////////////////////////////////////////////////////
//Normal modes:		MODE	"name"	 	AGS	Extension	
//						cursor
//						mode
Ã,  DefineMode(		WALK,		"Walk to",	9,	0);//Line 631. The template uses AGS mode 9 for walk modes, instead of 0.
Ã,  DefineMode(		LOOK,		"Look at",	1,	'l');
Ã,  DefineMode(		TALK,		"Talk to",	3,	't');
Ã,  DefineMode(		PICKUP,	"Pick up",	5,	'p');
Ã,  DefineMode(		OPEN,		"Open",			8,	'o');
Ã,  DefineMode(		CLOSE,	"Close",		8,	'c');
Ã,  DefineMode(		PUSH,		"Push",			8,	's');
Ã,  DefineMode(		PULL,		"Pull",			8,	'y');

//Inventory modes:	MODE	"name"	 	Prepo-	Only	Can	Extension
//						sition	inv.	interact
//								w/ inv
Ã,  DefineInvMode(	USE,	"Use",		"with",	0,	1,	'u');
Ã,  DefineInvMode(	GIVE,	"Give",		"to",		1,	0,	'g');

//*Only inv: 	Means that you can only use that mode followed by an inventory item:
//Ã,  Ã,  Ã,  Ã,  Ã,  Ã,  	USE has 0, because you can USE a hotspot also. However, you can't
//Ã,  Ã,  Ã,  Ã,  Ã,  Ã,  	GIVE a hotspot, you must GIVE an inv. item you already have, therefore
//							GIVE has 1.
//*Can interact	USE has 1, because you could have an inventory item like the 
//Ã,  Ã,  with inv:	"navigator's head" in Monkey Island 1, on which if you click 'USE item'
//		then the item performs some action, instead of putting 'USE item WITH'
//		and waiting for the player to select someting to USE the item WITH.
//		An interaction like "GIVE item" on its own, doesn't make sense, 
//		(because you must GIVE something _TO someone_) so GIVE has 0.

// the button sprites probably deppend on the language being used 	
Ã,  if (Translation("default")){ // if no translation file is being used
//			mode	button	normal	highlighted
//				number	sprite	sprite
Ã,  Ã,  DefineButton(	GIVE,		0,	13,	22); 
Ã,  Ã,  DefineButton(	PICKUP,	1,	14,	23); 
Ã,  Ã,  DefineButton(	USE,		2,	15,	24);
Ã,  Ã,  DefineButton(	OPEN,		3,	16,	25);
Ã,  Ã,  DefineButton(	LOOK,		4,	17,	26);
Ã,  Ã,  DefineButton(	PUSH,		5,	18,	27);
Ã,  Ã,  DefineButton(	CLOSE,	6,	19,	28);
Ã,  Ã,  DefineButton(	TALK,		7,	20,	29);
Ã,  Ã,  DefineButton(	PULL,		8,	21,	30);
Ã,  }
//////////////////////////////////////////////////////////


I hope I don't have to rewrite the majority of the game code.

Darn.

What do you guys think? Any Ideas why it's suddenly giving me hiccups? Ã, :o
#960
Care to explain it?
SMF spam blocked by CleanTalk