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 - Monsieur OUXX

#161
I've always found it odd that character speech was rendered on top of GUIs. I suspect this choice was made randomly along the years -- Like, the function "RenderDialog" being written just below "RenderGUIs" (fictional function names!) in the C++ code, by cheer chance, by CJ one night while he was drowning his sorrow in whiskey on a rocking chair under the full moon.

- How hard would it be to swap them?
- Would that make sense? I think it would. Dialogs are part of the "inner" game while GUIs are out of it. They are meta, if I may say so.


#162
OK I never do that, but I'm so baffled that I see no other option than posting my whole AGS project here. I'm not even going to try trimming down the code to show only the bit of code that causes the issue, because I'm certain the issue comes precisely from some variable being overwritten somewhere where it shouldn't -- hence the need for the entire code.

Here is the scenario:
0) Download the app here : https://www.dropbox.com/s/6rzrq569vccuyvf/EasyPerspective.zip?dl=0
1) Run the app
2) Press key "L" (you'll see the little L at the top of the screen become red)
3) Press key "+" (your cursor changes)
4) Click anywhere. A cross appears. It's white. You'll notice that the caption at the top of the screen says "editMode=1".
5) Press key "space". The caption ow says "editMode=3"... and the cross should appear BLUE. Yet it still appears WHITE. Why, why why???

It all happens in function "Draw_VLines" .

It's so, so weird. The instruction "color=COLOR_BLUE" does get called, the color value is correct, and there is no other cross drawn on top of the expected blue cross.

Pro-tip: You'll notice by reading that function's code that if you press "D" while the cross is getting rendered you get some extra Display calls to see more of what's going on. Pressing D again removes the messages (even though it's a bit tricky to press D to both remove the Display and trigger the debug off. Just hold the key down until you succeed).
#163
I'm trying to find the best way to perform the following process:
- have a very large room (like 5000x5000) in a 320x200 game.
- at game's startup, I save the orginal background to a dynamicSprite
- then at every game cycle, I'll manually draw stuff into the view port. In order to do that, I need to restore the bit of background that's visible in the Viewport. So I just need to redraw a 320x200 area.

I've yet to find a fast way to do that. It's horribly slow, as if the performance dropped because the room is very large. Yet, it can't be the room's fault, because if I just let the game run normally (without doing any of my custom drawing operations), it runs at normal speed.

So I'm trying to fnd the culprit. Could it be GetDrawingSurface? I believe that behind the scenes it just sets a pointer to the memory location where the RGB values of the sprite are stored -- I don't think (I hope!!!) that it duplicates the whole sprite in memory. But I could be wrong.

Here is the code I run in repeatedly_execute:
Code: ags

DynamicSprite* bgWithGrid; //Global variable. It's a backup of the original room's background.

  ...

void repeatedly_execute()
{
  DrawingSurface* ds = Room. GetDrawingSurfaceFromBAckground();
  DrawingSurface* source = bgWithGrid.GetDrawingSurface();
  DynamicSprite* s = DynamicSprite.CreateFromDrawingSurface(source,  GetViewportX(),  GetViewportY(),  System.ScreenWidth,  System.ScreenHeight);
  ds.DrawImage(GetViewportX(), GetViewportY(), s.Graphic); //Let's redraw the original background
  
  source.Release();
  s.Delete();
  ds.Release();
}





#164
Beziers curves are a (not too slow) way of representing curves onto a screen. Look them up in Wikipedia. Not to be confused with Splines.
This module lets you define the settings of a curve and then render it onto a drawing surface.
The demo lets you see in real time how different settings render the curves.

Code: ags

//
//  AGS BEZIER MODULE
//
//  Summary : Draws Bezier curves onto the drawingSurface of your choice. (see http://en.wikipedia.org/wiki/B%C3%A9zier_curve )
//
//  AGS version: tested on AGS 3.3.0 RC1 (but also surely works with 3.2+ and 3.4+)
//  Author : 'Indiana Jones and the Seven Cities of Gold' development team. Support contact : 'Monsieur Ouxx' on the AGS forums
//  AGS was originaly created by Chris Jones, greatest benefactor of mankind. There, I said it. Special thanks to the newer support team!
//
//  LICENSE
//  This code free of rights, provided you credit Tolga Birdal on one hand, and the 'Indiana Jones and the Seven Cities of Gold' development team on the other hand.
//
//  HOW TO USE:
//  - Either leave the 'Bezier.Init(50);' present in the module, or call it yourself from some other place.
//  - Call Bezier.AddPoint(x,y); each time you want to add a point to the curve
//  - Call Bezier.Render(drawingSurface); to render the curve onto that DrawingSurface.
//  - Call Bezier.ClearAll(); to erase all previously-defined points and start a new curve.
//
//  PLEASE NOTE: you can define only one curve at a time.
//
//  HISTORY : Version 1.1 adds on-demand density change and connects the dots with straight lines.


(screenshot)




            >>> DOWNLOAD v1.1 <<<


Known issues:
- (version 1.0  only!) This is not a bug, this is by (poor) design : That is a very simple implementation, with a "fixed" density of rendered points --> It means that rendering a short line will create a very "dense" curve (with a lot of puffy pixels along the curve) while rendering a long line will create a very thin line with "holes" in it.
- (version 1.1) None.
#165
In late 2008, densming made this very cool series of tutorial videos, revolving around the main AGS features (inventory, baselines, etc.), explaining and illustrating each concept.
Before that, there was this very cool written series of tutorials that can be found in the documentation. It's also a step-by-step guide to get acquainted with all main AGS features.

What is still lacking, though, is a guide to best practices.

Professional game makers, or the elders that have been around forever, acquire that knowledge progressively, and by the time they know the tricks, they either find them obvious (hence suppressing the need of sharing them) or too busy (with a company to run). :)

Noticeable exceptions are tips/tutorials such as the ones of SkyGoblin, Dave Gilbert, and also Grundislav (& Ben304)'s podcasts. Sorry if I'm forgetting someone.

However there are many down-to-earth topics and best practices (perspective, scene composition, character scaling, fonts ripping, scene lighting, you name it!) that are often missed by beginners, and are then learned in blood and tears.

Some day I'd like to address those in a series of videos, each focusing on one essential topic, like densming's ones.

What do you think should be those topics? Just to be clear: I'm not talking about art tutorials, or tutorials about "how to make a good game", but only tutorials about "what screws you up when you start making a game, that you could have avoided if someone had told you".
Spoiler

A typical example: When you draw your very first side-view walkcycle ever, you don't know that the character's head should be a few pixels lower twice per loop. And then it looks crappy. And then you go to Critics Lounge, and you get told to do it -- it's like a tradition that has been here since before the dawn of times.
[close]

A list of raw ideas :
- What color depth and resolution for my game?
- Should I use plugins and modules? Why? (custom load/save, verbcoin/BASS/etc.)
- (related to the one above) How to achieve the most common visual special effects? (rain, flashes, overlays, tinted characters, etc.)
- How to successfully integrate many third-party modules?
- Tricks to successfully do pixel-art with Photoshop (there's a lot to tell about that)
- How do I make my game not awfully generic (e.g. : changing the basic fonts -- the thing that nobody bothers doing)
- How to animate a character and successfully export and import files
- What graphical file formats to use?
- How to do collaborative work?
- More generally : how to scale up a project?
- I'm terrible at animating: Should I rip walkcycles from classic games? How?
- What perspective should I use in my rooms?
#166
I clicked on the link to the personal info under user "HAL" and I got this very official serious error message from Microsoft Forefront:

Quote
Network Access Message: The page cannot be displayed Explanation: There is a problem with the page you are trying to reach and it cannot be displayed.

Try the following:
Refresh page: Search for the page again by clicking the Refresh button. The timeout may have occurred due to Internet congestion.
Check spelling: Check that you typed the Web page address correctly. The address may have been mistyped.
Access from a link: If there is a link to the page you are looking for, try accessing the page from that link.

If you are still not able to view the requested page, try contacting your administrator or Helpdesk.

Technical Information (for support personnel)
Error Code: 500 Internal Server Error. The data is invalid. (13).
IP Address: 217.174.240.177
Date: 18/02/2015 10:29:14 [GMT]
Server: SRV-UL-TMG.alsy.fr
Source: web filter

More precisely, I was reading a conversation thread, and saw that message from user "HAL", with his picture on the left of the message , and clicked on his name just below his picture. (just like you could click on "monsieur ouxx" on the left of this message)
<-----------------
#167
Two threads around here have dealt with bottom-up pixel-art shading in the past. By "bottom-up", I mean a pipeline starting from a sprite, and generating a pseudo-3D shading after computing some normal mapping. I can't find the forum threads right now, but there're somewhere around, each of them dealing with a specific tool.

Now, there is this top-down approach: it starts from the 3D mesh in a real-time 3D game, and applies a pixel shader that makes it look like pixel-art.

http://initialsgames.com/main/?p=1360

That's interesting.
#168

VOTING TIME

HERE : http://www.adventuregamestudio.co.uk/forums/index.php?topic=51610.msg636507559#msg636507559






==============================

LADIES AND GENTLEMEN, BOYS AND GIRLS...

The long awaited background Blitz is back!
(sounds of crowd releasing its massive enthusiasm)

THE THEME IS: A WRECK

EXPLANATIONS
You will immediately think of a ship wrecked on a shoreline or reef, or lying at the bottom of the sea, or even a spaceship crashed somewhere, or anything else the imagination can conceive. But more generally, it can be about any collision that leads to a deserted place or abandoned set.Maybe the most skilled of yous will be able to draw the scene so that the story of the wreck can be understood by the viewer just by looking at it!




SUBMISSIONS UNTIL : 15th of February!

CRITERIA
  - Concept (a scene that stimulates the imagination, or something interesting, or clever -- something that makes people say: "Oh, I see!")
  - Playability (could it be used in a real game?)
  - Artistic execution (you know, there's always this one contestant who makes everyone jealous of his skills ;))


TROPHIES :
You want them proudly sitting on your chimney and you know it!

BRONZE  SILVER   GOLD
https://36.media.tumblr.com/88cab959d24ea5136d3854e4e10f02a4/tumblr_nin3qkxgAW1tsfksfo1_75sq.png

#169
Engine Development / 64-bits engine
Mon 22/12/2014 23:11:39
We've been talking a lot about porting AGS to some fancy systems, portable consoles, even ScummVM was mentioned. We've been talking about how to enhance plenty of stuff in the code.

But thtere is something that we overlooked and that might be far more important: porting the engine to 64-bits.

Why is that? Because the clock is ticking and it's only a matter of time now until 32 bits goes unsupported, the same way 16-bits Windows 3.11 got decomissionned by Windows 95 (remember?).
Microsoft announced it wouldn't happen yet with Windows 9, but there are high chances that it happens with Windows 10. Maybe 5 years from now at most?

#170
I'm wondering if there is a way to intercept the sentence currently being said by a character. Something similar to ".Speaking" or ".Moving" but with the sentence instead.

If such a property doesn't exist, how would you do? In dialogs it would be a pain to replace each line of dialog with something like cCharacter.SayCustom();
#171
Alright, I know that the game is in Italian (I'm not an Italian speaker myself but I want to play this game so badly I'm trying anyway).

I'm stuck in the first room!
Spoiler

Indy says he won't leave the room without his wallet. I've searched the room : the bed, the drawer, etc. but couldn't find it. I've found Hemingway's book though. I've tried to open the driving license* but Indy won't open it.

*On an unrelated topic: It's hilarious how I've searched "taccuino" in google images (to know the meaning of the word) and the item sprite is one of the very first image results ;) I see we have the same work process!
[close]

EDIT ...AAaaaand of course after searching for 15 minutes and giving up, I found the answer litteraly seconds after posting this. That's not too big a pixel hunt, but still a pixel hunt </frustrated gamer> ;)
#172
The Rumpus Room / emo kawai guybrush
Tue 09/12/2014 23:47:23
I found that image randomly and I thought I should share.

#173
Continuing from those threads :
http://www.adventuregamestudio.co.uk/forums/index.php?topic=46223.0
http://www.adventuregamestudio.co.uk/forums/index.php?topic=46220.0
http://www.adventuregamestudio.co.uk/forums/index.php?topic=46471.0

The help file is getting more and more out of sync with the actual Editor. It's no big deal for most script functions, but there are many new features recently (e.g. : multiple platform builds).

The issue with the help file is that it's generated from some old LaTeX dialect, which in turn creates an old-school Windows help file (.chm files).
A few years ago I converted the .chm file to some Html-based online help, using a professional tool. That's great, but I don't think that's a good long-term solution. CHM files are a mess because that's starting to be a really old format (see the kind of trouble I had). Others tried other things along the years.
We need to find a solution.
#174
I know that 99% of GUI issues with alpha in GUIs have been fixed lately, for example since 3.3.0.

But I still found one tiny surviving issue:
- create a 32-bits game
- create a GUI. Use color 0 as background color, to make it fully transparent.
- Create a label onto it.
- Set the label's font to a font that has a few glitches.
  By "glitches", I mean a font where not all pixels are either fully white or fully black.
  Well, to be honest I'm not sure how this works in detail, but I'm certain the glitchy font has some dirty pixels -- whether not fully opaque, or they use a color other than B or W. I had that dirty font by importing a TTF font to a fixed size (you know, when AGS asks you what should be the height of the TTF-turned-pixels font). So as you see it's not an uncommon situation.

No, the interesting part:
- When the GUI background has a given color (e.g. yellow), the font is rendered properly
- When the GUI's transparent property is not 100%, everything still works fine.
- Only when the GUI has a transparent background color (pink or "0"), then the dirty pixels of the font are rendered fully opaque.

#175
Imagine you have this utility script that you're fond of, let's call it "StringUtility", that has a few generic functions that perform simple stuff on Strings. You use that module in every AGS project, because it's so simple yet so useful.

PROBLEM: you're developing several AGS projects at the same time, and from time to time you want to add a function to StringUtility. But if you modify that script in your first project, then you also have to change it in your other project. Quickly that can become a problem if you don't remember which version is not the most up-to-date.

If only there was a way to mirror changes to that script to every AGS project that uses it!
Well, there is.


=======

FOR WINDOWS VISTA/7/8

1. create that directory structure :
Code: ags

//Note: "<your_path>\Documents\AGS" can be any other folder you wish!
<your_path>\Documents\AGS\MyAGSProject1 //that folder contains your game, i.e. MyAGSProject1.agf
<your_path>\Documents\AGS\MyAGSProject2 //that folder contains your game, i.e. MyAGSProject2.agf
<your_path>\Documents\AGS\COMMON //that folder will contain all the modules you wish to share


2. Move the modules to the COMMON folder
Quote
For example, move "StringUtility.ash" and  "StringUtility.asc",
...from <your_path>\Documents\AGS\MyAGSProject1
... to <your_path>\Documents\AGS\COMMON

3. In the game folder, create a symbolic link to the COMMON folder
Quote
- Open a command prompt as Administrator (Start-->All programs-->Accessories-->Command prompt-->right-click-->run as administrator)
- Go to your game folder: cd <your_path>\Documents\AGS\MyAGSProject1
- type those two commands :
  mklink StringUtility1.1.asc ..\..\_COMMON\StringUtility.asc
  mklink StringUtility1.1.ash ..\..\_COMMON\StringUtility.ash

- now two files have appeared in your game folder! They look as shortcuts, but they are symbolic links. They act as real files.
- Repeat the same steps in your other game directory.

4. Test
Quote
- Open your first game in the AGS editor: <your_path>\Documents\AGS\MyAGSProject1\MyAGSProject1.agf
- Open the module's script files there. Modify them.
- Close AGS and now open your other game (MyAGSProject2.agf). Open the module files.
- They've changed here too! hurray!

5. Automate the process
Quote
- It's better if you can re-create those symbolic links in one click, just in case they get removed for some reason.
- To do so : create a .bat file in your game folder (e.g. <your_path>\Documents\AGS\MyAGSProject1\create_links.bat )
- Put all the commands you've typed in the command prompt into it.
- BUT precede them with cd %~dp0. That's because you'll need to run this batch file as Administrator, but unfortunately when you do so Windows makes the .bat file start in some random system folder. Using %~dp0 gives you the real folder where it got executed in the first place (i.e. : your game folder)
- I recommend you add a timeout at the end to be able to see if everything went fine. Note: "pause" won't work when running a bat file as admin. That's a safety measure from Windows, to forbid crazy batch files that don't require human interaction from getting blocked and preventing machines to be remotely shut down.

Code: ags

@echo off 
cls

REM the line below changes directory to the directory where the batch was run
pushd %~dp0
REM the line below makes sure we're not in C:\windows\system32 anymore
if "%CD:~0,2%"=="C:" goto wrongdrive

mklink StringUtility1.1.asc ..\..\_COMMON\StringUtility.asc
mklink StringUtility1.1.ash ..\..\_COMMON\StringUtility.ash

goto ok

:wrongdrive
	echo === Wrong drive! ===
        REM we use timeout instead of pause because pause doesn't work as Administrator
	timeout /t 20
	goto end

:ok
	timeout /t 20
	goto end

:end


6. If you want to do it like a Boss
Quote
I suggest you create two more .bat files :
- One that removes the symbolic links
Code: ags

@echo off
cls

pushd %~dp0
if "%CD:~0,2%"=="C:" goto wrongdrive

rem delete all symbolic links  (/AL) in this folder. /P is for confirming each file
del /AL /P *.*

goto ok

:wrongdrive
	echo === Wrong drive! ===
	timeout /t 20
	goto end

:ok
	timeout /t 20
	goto end

:end


- One that duplicates the whole game folder to some new output folder, and also copies over the real module files from "COMMON". This way, all you have to do is to zip up that output folder to distribute your full game code.
(note: this one doesn't need to be run as administrator)
Code: ags

@echo off
cls

REM delete Distrib folder and everything it contains
rd /s/q ..\Distrib
REM recreate it
mkdir ..\Distrib
REM copy contents (/s for subfolders)
xcopy *.* ..\Distrib /s

timeout /t 20

#176
What does it do : It's like a multi-line textbox. You can type some text, use the keyboard arrows to move the cursor, or click with the mouse. You can click on scrolling arrows to scroll up and down. You can use the buttons (or shortcuts) to copy&paste text.

Optional:
- You can forbid the text area from scrolling. When the user reaches its end, a message tells him he cannot add more text.
- You can use 256-characters fonts or 128-characters fonts. If the user types a special character (e.g. 'é') in 128-characters text area, then it gets converted to s standard character ('e').
- You can add sounds (e.g. typewriter sound, etc.)

Credits:
  Made by the Indiana Jones and the Seven Cities of Gold team (Monsieur Ouxx).
  Inspired by monkey_05_06's Text Area 0.0.1.1 here.

License:
  Use the script (not the images), copy it, modify it any way you want, even for commercial goals.

How to use:
- Download the demo and check out the room script. It's pretty much fully automatic, except you have to create and provide a bunch of GUIControls to the module.
- If the demo is not clear enough, check the header of the module.
- PLEASE NOTE that this module has several modules dependencies (StandaloneClick, StringUtility, etc.), that are provided with it (see the modules in the demo). Just import them in the same order.

Download:
   DOWNLOAD DEMO 0.92

Videos:

    VIDEO 1




    VIDEO 2




History:
- 0.9 : added cursor positionning by clicking or using the arrows. Added "insert" typing mode
- 0.92 : added scrolling, added cut/copy/paste


Known bugs:
- 0.92 :
  (these are all minor bugs, it's pretty stable overall)
   - If you press "return" immediately on the first empty line of text, and try to click there to put the cursor back onto that empty line, then the cursor does not get positioned properly. Simple workaround: You need to use the left keyboard arrow to move it back to the first row.
   - If you past text onto an empty line, it might get pasted at the end of the previous line.
   - If you have two text areas and select text in one, then the selection markers might also appear in the other one.
   - If you insert backslash ('') then it messes with the special characters.
   - special character 'ç' is not recognized (but I think it's an AGS bug)
#177
I've just come across that gameplay video, and it looks like a solid remake.

http://www.youtube.com/watch?v=J2TuF_v88yo

By "solid", I mean, it's only just a remake, but the new backgrounds seem to be excellent (not just the drawings, but also the composition, special effects, etc.) and the jokes and narration are preserved. Nice little touches like the transition effect between rooms with the shape of Larry's head (it's useless but it's those little things, y'know)

They've also re-thought the interface, they din't just copy-paste it. It seems to be much more intuitive now. A few examples: You now see the cab's itinerary. They didn't stuff all the casino's rooms on the ground floor. They re-thought the backgrounds to make them more dynamic.

So what do you say? Am I super naive or is this what you can call a good remake, as opposed to the Monkey Island SE?
#178
I'm thinking of something for our very own project. My idea fits right in for our project's scale, and is simple to implement BUT still I think it's better to listen to every AGSer's opinion before I do it. Maybe someone has a much better idea.

    - our graphics is on a versioned repository (Dropbox at the moment, but could be anything), sync'ed to a local folder on each of our hard drives (C:\Dropbox or whatever)
    - we do bulk import of sprites for animations.
    - if the animation needs to be changed, we re-export the sprites in bulk from the painting program,...
    - ...then inside AGS we do "re-import from source".

As you know, the thing with AGS sprites is that AGS stores an absolute path to them.
To make sure there would be no mistakes with the path, we created a folder "X:", using either Network folders, or a subst command. That folder actually points to the Dropbox folder (C:\Dropbox or whatever) This way the path is the same on every contributor's computer, and he doesn't mess up our sprites directories structure when importing his own sprites. When we import or reimport sprites, it's always from X:\something

I'm now thinking of implementing a small Editor plugin that would check if drive X: exists before importing sprites. If not, it would reconnect it, using the path to the Dropbox folder. This is to make sure that none of the team members imports sprites from some random, unsync'ed location.

What says you?
#179
There have been an awful lot of great remakes made with AGS:
- several king's quest, VGA version (I,II,III...?)
- Maniac mansion deluxe
- dott high resolution (just started)
- maniac mansion dott style (still in the making, very likely to be released)
- several space quest (space quest I being at beta test phase)
- several quest for glory, if i'm not mistaken.

I think it would be cool to have a page on the forums showcasing those, to show AGS newcomers that, if they came here for the nostalgia thing, then AGS is not just a toy. It's powerful enough for them to do the same as Ron Gilbert or Roberta Williams.
#180
Hi everyone,

WHAT DOES IT DO

AGS can already easily read and write to BMP files-- it can read any color depth, and writes to 32bpp (or maybe the game's color depth? I'm not sure).
BUT this module allows you to have more control over your BMP files. More specifically, it manages 8bpp files, including the palette. Also, it has a flood-fill function that was written by SSH.

This is all obsolete tech, but it can come handy for mad scientists who want to generate 8bpp files from within a game -- this color depth is compatible with the mask files that AGS uses for walk areas, walkbehinds, etc.

Eye candy: there is an automated progress bar for all slow operations.

CREDITS
- version 2.0 by monsieur ouxx
- version 1.1 by SSH (I created a new module thread because it's almost a whole new module now).

DEMO



>> Download here (version 2.0) <<
SMF spam blocked by CleanTalk