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

#2421
Unless you need special functions added after the last stable version (2.71) it's best to stick with that, yes. However, if you created the game with a later 2.72 beta version of the editor, you can't revert to a previous version. Then your only solution is to get the latest beta (RC2a) where CJ fixed the audio bugs introduced in RC2.
#2422
I haven't played the game yet, since I'm waiting for the voice pack and bug fixed version. But I do find it a bit strange to make a 1:1 version of a game with so much room for improvement (design-, not storywise). I loved the original, but it had so much running back and forth between rooms to trigger randomized events. Still, I look forward to see how you've handled the spellbook part of the game.

Oh, and what's up with this part of the press release:
QuoteUnfortunately, due to the advances made in computer technology over the last twenty years, such classic games no longer run on the modern computer. It was with this in mind that Infamous Adventures decided to remake this game, bringing it up to the quality of Kings Quest 5 & 6

Does anybody actually have problems running AGI games? In my experience is the later games with soundcard support that needs all kinds of emulation and timer patches. Ironically I think it's harder to get King's Quest V and VI to run on a modern computer than King's Quest III.
#2423
Yes, I commented on this in Darkmaster400's first thread in the Tech forum (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=27076.0) but I wonder if he noticed.
#2424
Sorry, it's Player Enters Room
#2425
If you're using the interaction editor:
Player Enters Screen (before fadein) -> Game - Play Music -> Change music number to 1

Also make sure that the midi file is named music1.mid
#2426
Advanced Technical Forum / Re: Is this a bug?
Fri 23/06/2006 10:54:28
Which AGS version did you use? One of the recent betas (2.72 RC2) had crash problems related to sound. If you're using that, try updating to 2.72 RC2a.

Edit: Also, whenever you report something like this it's helpful to copy-paste the error message. Oh, and you do have a midi file named music1.mid, right? And no other files of other types named music1 as well?
#2427
EDIT: I feel slightly embarassed asking this, but you DID activate "Enable mouse wheel support" in the General settings page of the editor, right?


Ok, I think the problem is the line:
Code: ags
else if (button == eMouseRight || eMouseMiddle || eMouseWheelSouth)


I'm not sure the or (||) conditional can be used like that. Try to put instead:

Code: ags
else if ((button == eMouseRight) || (button == eMouseMiddle) || (button == eMouseWheelSouth))


And see if that works better. I suppose this line for some reason always registers as true, so the script doesn't get to the MouseWheelNorth section.
#2428
It looks more or less ok, what are you having problems with specifically?

There are a few things though. First of all you've put eModeUseinv in the last line where it, according to your comment,  should be eModeTalkto. However, there seems to be no way to get to eModeTalkto if you DO have a inventory item seleted - if so it skips directly to eModeInteract. Also, depending on your game design, you should take into consideration that not all cursor modes are always available (such as Walkto missing in first person views etc.).

edit: updated code, not tested :
Code: ags

function on_mouse_click(MouseButton button) {
  // called when a mouse button is clicked. button is either LEFT or RIGHT
  if (IsGamePaused() == 1) {
  // Game is paused, so do nothing (ie. don't allow mouse click)
	}
		else if (button == eMouseLeft) {
			ProcessClick(mouse.x, mouse.y, mouse.Mode );
    }
		else if (button == eMouseRight || eMouseMiddle || eMouseWheelSouth) {
			//Any of these mouse events trigger Select Next Mouse Mode
			mouse.SelectNextMode();
    }
		else if (button == eMouseWheelNorth) { 
			// simulate "Mouse Select Previous Mode" which is currently unsupported
			if (mouse.Mode == eModeUseinv)
                        mouse.Mode == eModeTalkto;
                        else if (mouse.Mode == eModeTalkto)
			mouse.Mode == eModeInteract;
			else if (mouse.Mode == eModeInteract)
			mouse.Mode == eModeLookat;
			else if (mouse.Mode == eModeLookat)
			mouse.Mode == eModeWalkto;
			else if (mouse.Mode == eModeWalkto && (cCharacter.ActiveInventory != null)
			mouse.Mode == eModeUseinv;
			// player has inventory item active so go to Useinv
			else if (mouse.Mode == eModeWalkto && (cCharacter.ActiveInventory == null)
			mouse.Mode == eModeTalkto;
			// player has no active inventory item so skip to Talkto
		}
}
#2429
SaveCursorUntilItLeaves() is a horribly glitchy function that doesn't take all kinds of fun stuff into consideration. I had so much trouble with it that I simply ended up scripting my own replacement, and I recommend you do the same. It is after all only a single int that needs to be stored to remember the cursor and one pointer to remember the hotspot (or an int if you store the ID instead).
#2430
lol, ironically my posts in that tracker entry became obsolete the moment DynamicSprite scaling was introduced.
#2431
Just create a DynamicSprite of the object graphic and resize it to whatever scale you need. Then assign it back to the object (you would need a struct to keep track of the original graphic for each object).
#2432
PNG support for in-game import/export would be nice. The compression is good, and it's already support in the editor. In this case it would probably be too much for the CPU, but for regular screenshots it shouldn't be a problem (especially since you usually end up using wait(1) anyway to hide GUIs etc.)

Edit: It would also be nice, if you could save/import images with a different file extension than the actual format. If you use external files to store large DynamicSprites (e.g. altered backgrounds) to save memory, it would at least add some degree of security if the user wasn't aware of the file format. This could be done with an optional parameter like sprite.SaveToFile("RotatedAvatar.dat", eBmp) or SaveScreenShot("101.tmp", ePcx)
#2433
One thing that bothers me is the hue of the frontmost row of buildings. Usually objects in the distance get more bluish the further away they are, so it seems wrong to have them purple while the buildings behind them are more reddish. It's can't be explained by them being in the shadow of the other buildings, since you have a clearly defined light source from front/left. (I didn't notice the buildings in the bottom of the screen, but being their natural grey they work better).


The clouds could also use some more work. First I interpreted the sharply defined shadow on the cloud to the left as an airplane. Now I think it makes the cloud look like a pair of buttocks. Perhaps something as simple as lowering the contrast between cloud and shade would solve this.

Other than that, I think it's a beautiful skyline you've come up with. The egyptian influence is rather subtle, but it's there. I love the scarab-O's on the Heliopolis sign. Great work.
#2434
I'd like to see a revamp of the dialog system with ability to move/delete dialog topics in the editor, and some way to access dialog topics and dialog text from other scripts to allow for more flexibility without abandoning the built-in system entirely.
#2435
Since you're not using mouse control and thus don't need pathfinding, there's little point in keeping AGS's own walk system. So I say go for Ashen's simulated walking animation. Another thing is that in a platformer you probably want the player to be able just to take one step at a time unlike two steps in a normal walking animation. So it would be a good idea to have the left/right foot movement in separate loops if you're going to use Character.Animate.

Edit: The one-step thing above was in reference to a Prince of Persia type of game, where you always move one whole step at a time. If you just need the player to move for the exact time that the button is held down (not waiting to finish their step) a la Mario, just use normal loops with full walkcycle.
#2436
This is one of the things that I pretty much implement from scratch every time, since the core function itself is just a while-loop shortening the text until it fits and then counting back to a space or a hyphen. But the overall implementation is very different depending on what you're trying to do: For the Shadowplay Hypertext Engine (SHytE) for instance, I need a variable line width for inserting images into the text, and a check for every linebreak to see if the whole image has been drawn yet. My conversation log works in yet another way where remaining lines wrapping onto the next page must be handled differently.

One thing I can recommend though is to optimize the linebreaking function heavily. If you shorten it one character at a time and check the length every while-loop, it's slow as molasses when doing this on 300 Strings every frame (yes, some of us need that). A quick fix for this is to check how many characters you would need to fill out the line with a very slim character, say "i", and the start counting down from that number of characters.

Let me know if you need any help/advice with this module. I have lots of experience with the pitfalls of linebreaking.

Edit: I just realized that in most cases it would take less loops to add to a new string until it's too long than shortenening the full string until it's short enough. I'm off to implement this right away  ;D

Edit 2: Still, starting off from the smallest possible number of characters (how many would it take to fill up the line with "W"s) would help speeding things off.
#2437
Cheers CJ, thanks a bunch for the enhanced editor line length and the new text box functionality!
#2438
You could also add a dummy character and hide the real one and do something like this:

Code: ags

//in player_enters_room_beforefadein
  cDummy.View = player.View;
  cDummy.Loop = 3; //up loop
  player.Transparency = 100;
  cDummy.Room = player.Room;


Code: ags

// in repeatedly_execute_always
if (cDummy.Room == player.Room) { //or any variable you set to trigger this effect
  cDummy.x = player.x;
  cDummy.y = player.y;
  cDummy.Frame = player.Frame;
}


Edit: if you need more animations than just walking (talking, idle etc.) of course you have to change the cDummy.Loop manually. You can add a section in the repeatedly_execute_always to catch the player.Loop and set the cDummy.Loop to the corresponding up loop. Just make sure to do it before the line where you set cDummy.Frame, or the game could crash (if for example the player.Frame is frame 13 in a 15 frame idle animation and your walking animation is only 8 frames, then the cDummy.Frame = player.Frame would be trying to set a non-existent frame number).
#2439
Critics' Lounge / Re: game idea
Thu 15/06/2006 23:15:11
Great idea, and potentially a very unique game. The main pitfall as I see it would be to make the dog too human. If you want to show the player what it's really like to be a dog, stay far away from the antropomorphism of The Incredible Journey etc. and make it purely about instincts, needs and survival.

Perhaps you could take a look at the 1994 game "Wolf": http://www.mobygames.com/game/dos/wolf
I suppose it's more of a simulation, but at the time I saw it as a roleplaying game (possibly because life simulations like The Sims weren't very common back then)..
#2440
Quote from: Bernie on Mon 12/06/2006 18:47:45I'd hoped something like int myval=hotspot[Hotspot.GetAtScreenXY(mouse.x, mouse.y)].ID would work, but no go. Is something like that possible at all? Pointers kill my brain dead.

I think this should be enough:
Code: ags
int myval=Hotspot.GetAtScreenXY(mouse.x, mouse.y).ID;


But I'm not sure, perhaps you need a step in between like this:
Code: ags
Hotspot *myhotspot = Hotspot.GetAtScreenXY(mouse.x, mouse.y);
int myval = myhotspot.ID;

SMF spam blocked by CleanTalk