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

#1
General Discussion / Steam Summer Sale 2014
Thu 19/06/2014 18:44:41
It's that time of the year again - what's everybody getting/having their eyes on?

Currently I'm disappointed in the first day deals, all these games have been on sale for the same or less before. FarCry 3 is something I'd like to buy but it's been 75% off half a year ago at the Winter sale... I really expected it to go lower this time around. And since it's a daily deal, I think that means it definitely won't get any cheaper throughout the sale. :(
#2
The Art of Dying

The Art of Dying is a really challenging platformer I've made in AGS. It features two difficulty levels (really hard and unbelievably really f*cking hard), a six level campaign and a full-featured level editor. So you can make your own levels, then share them and find others to download and try to beat yourself on the official level sharing platform: http://dkh.agser.me/die. The whole project is also open-source, so go ahead and take a look at the source - it's not in great state but it should be useful to some I guess! Gamepads and other external controllers are fully supported, although the controls work nicely on keyboard as well.


Download (Version 1.1)
Download the Source (Version 1.1)
(build with AGS 3.2.1, requires the joystick plugin found in the game archive)

I produced four development diary videos, so if you want to get a first impression before downloading anything, take a look:


The Art of Dying - Dev Diary Entry #1: Movement
[embed=640,390]http://www.youtube.com/watch?v=D_WmTg8Az9k[/embed]


The Art of Dying - Dev Diary Entry #2: Attacking
[embed=640,390]http://www.youtube.com/watch?v=np4ixRjp5w4[/embed]


The Art of Dying - Dev Diary Entry #3: Enemies
[embed=640,390]http://www.youtube.com/watch?v=8kD2iZJ7qs4[/embed]


The Art of Dying - Dev Diary Entry #4: Editor
[embed=640,390]http://www.youtube.com/watch?v=b_5ryKGxWkM[/embed]

Please let me know what you think! Refer to the readme-file for the credits and some important notes. You can rate the game over on the AGS gamepage. Have fun, prepare to die a lot and make sure to let me know if you managed to beat the game. :)

CHANGE LOG:

Version 1.1

- fixed a crash caused by level filenames shorter than 4 characters (plus file extension)
- fixed an issue when hitting ESCAPE while the save level dialog in the editor was open
- improved the way decorations are placed in the editor, now you left-click to place, right-click to remove and use the left/right arrow keys on the keyboard to cycle through the available types of decoration
#3
The Art of Dying

The Art of Dying is a small new game I've been working on for about a month. It's a platformer made in AGS of course! The idea is to start with easy levels and then ramp it up to pretty ridiculous degrees of difficulty. I'm doing everything including art and animation except for the music! The game features an ingame level editor that's easy to use and should hopefully result in a couple of self-made levels by you, the players! The way I am presenting the game is with several short Youtube videos that focus on a particular aspect of the game - here's the first one talking about movement. Please check it out:


The Art of Dying - Dev Diary Entry #1: Movement
[embed=640,390]http://www.youtube.com/watch?v=D_WmTg8Az9k[/embed]


The Art of Dying - Dev Diary Entry #2: Attacking
[embed=640,390]http://www.youtube.com/watch?v=np4ixRjp5w4[/embed]


The Art of Dying - Dev Diary Entry #3: Enemies
[embed=640,390]http://www.youtube.com/watch?v=8kD2iZJ7qs4[/embed]


The Art of Dying - Dev Diary Entry #4: Editor
[embed=640,390]http://www.youtube.com/watch?v=b_5ryKGxWkM[/embed]

Please let me know what you think! I'd also like to get an idea about how much interest there is in the level editor. Stay tuned for further video updates, I'm going to produce them in very regular intervals. Keep a close eye on this thread and/or subscribe to my Youtube account to stay up-to-date. The next one is going to focus on how attacks work in the game. More and more information will be revealed about the whole game with each video.
#4
I decided I had enough free time to work on this stuff again! Yay!

I'm still fascinated by symphonic orchestras and I've been able to get a hold of East West Quantum Leaps Symphonic Orchestra Gold Edition VST - studying Computer Science with a focus on media actually pays off some times!

So, I've composed this little intro piece: https://dl.dropboxusercontent.com/u/42455/ewql_test2.mp3

My biggest problem is that I don't know how to create these awesome, epic (Wagner) bass drum, timpani, crash, metal parts for the percussion. I just can't do it and I don't know what's wrong. This version of the track only has some very sparse parts in it. I'm talking about the percussion in these kinds of pieces: http://www.youtube.com/watch?v=ZGPp1GOPpPY

So, if you have any kind of feedback on anything or tips on how to get that kind of percussion into my song, that'd be awesome. General feedback is well appreciated too, of course.
#5
The user Stroumf has just registered today and mass-downvoted/flamed a lot of AGS games in one swoop. Interestingly enough, he also seems really enthusiastic over some select other titles. At any rate, his comments and votes are entirely unreasonable and there is obvious bad intent going on. Can we remove the user, his comments and votes please? Is that even possible?

I made this thread because I've never come across anything like this on the AGS games database, so I'm not sure how to handle it. I really hope we're not just going to have to 'deal with it' as game authors. Would be a shame!
#6
Hello there! Slowly but surely I'm closing in on my Computer Science degree, so I decided to start putting together a slim, minimal yet visually attractive website where I can put my portfolio and all the reasons why game developers should hire me. :p

Take a look and let me know what you think, what I could improve and so on. It's all pure HTML5 + CSS3, no scripts and only one image (the slider). That image is a placeholder and will be replaced with teaser shots from my portfolio projects. I'm looking for feedback on whether or not the page looks good to you, attractive, still business-okay and like a decent portfolio/blog place.

LINK: http://dkh.agser.me/portfolio/index.html

EDIT: And yes, I will be back when I have actual content. This is about layout/design/usability, not content quite yet!
#7
KTX-1 is a game I made for the MAGS March 2013 competition. It was made in ~90 hours over the course of the month and the entire creation process from beginning to end, without leaving anything out, was livestreamed and recorded on twitch.tv/nihilstarcraft.


DOWNLOAD LINK

It features a lot of custom scripting (interface and minigames), several solutions to most puzzles (with consequences) and picture-in-pictures!

You play as an agent, briefed to defuse a bomb on a high-speed train. A DAW (Digital Warfare Assistant, ie. a hacker) is assigned to you and helps you through the game.

Give it a try and let me know what you think! :)
#8
I decided to document my work on my MAGS (march) game this month. Make yourself known in the stream chat for audience interaction!! :)

Please check out twitch.tv/nihilstarcraft if you want to take a look at my progress or just watch a fellow game maker work! Chances are I'll be on and streaming, if not, you can check the videos I already streamed!

Should be plenty of fun!

I'm kinda interested to find out if this is something people are interested in seeing/watching. I fully expect to have 0 viewers most of the times, but who cares.
#9
Hi AGSers!
Remember us?
We're Pixel Hunt, the band that should have recorded songs but instead we started recording Let's play videos because it's fun! Yaaaaay!

The first game in the series will be a game by Radiant: Errand.
It is the winner of the Monthly AGS competition of October 2012 with the theme: This is bullshit! It can be downloaded right here!

[embed=720,576]http://www.youtube.com/watch?v=1ELTexvnwak[/embed]

Just a reminder as to who exactly we are again:

dkh - Our producer of Gründlichkeit and a very lousy German accent (funny fact: did you know dkh actually stands for 'door knob handle'? Wow, isn't it amazing?)
NoaVana - Our amazing vocalist and occasional kazoo magician
Wyz - Our fabulous keyboardist and elevator music provider (funny fact: did you know Wyz actually stands for weird yellow zoo? Wow, isn't it wonderful?)
Snake - His solos are so moving and striking it made his mic leave in shame (no really, he doesn't have a microphone right now).
Dualnames - No further introduction needed, he's an AGS superstar! When he's not fulfilling his army duties (we miss you!) he'd be whacking his strings for us (that's what she said).

We're looking for games to play next, if you have a brilliant idea of a short game we should check out because it's quirky, funny or silly, let us know! Likewise, if you have any suggestions or comments, go ahead and shoot!

-- Pixel Hunt
#10
So in my first semester of studying computer science we had to make a game with Java, this is a commentated gameplay trailer of what I came up with:

[embed=640,400]http://www.youtube.com/watch?v=NBh95fvcEag[/embed]

I already posted this in AGS IRC but I figured I'd post it here as well, in case somebody enjoys it! Let me know what you guys think! It was developed in about 2 months!
#11
General Discussion / Tester(s) needed!
Tue 28/08/2012 01:59:19
I've been looking into multiplayer programming (commonly called "netcoding") over the last couple of months and now I would love to find a couple people to actually test my work with. This is neither game nor AGS related (yet?), so I decided to post here and not in the Recruitment area, if that was the wrong decision, please kindly move the thread where it belongs!

I'm looking for a handful of people that have stable internet (speed doesn't matter, it's good to test both fast and slow connections), are willing to spare 10 minutes or so every now and then, are willing to add exceptions for my programs to their firewall and - if they are behind a router - have access to the router to check for blocked ports and such.

Let me know if any of you are kind enough to help me out by posting in this thread and I'll get back to you! It goes without saying that whatever we'd end up testing is all 100% safe software but you will have to take my word for that!
#12
General Discussion / HTML/CSS Question
Wed 04/07/2012 20:18:59
Hey there!

I'm working on a website for a project and I have a little problem with the layout. What we want is a blind table layout like this:

|----|--------|----|
|    | HEADER |    |
|    |--------|    |
|    | NAVBAR |    |
|    |--------|    |
|    |        |    |
|    |        |    |
|    |        |    |
|    | CONTENT|    |
|    |        |    |
|    |        |    |
|    |        |    |
|    |--------|    |
|    | FOOTER |    |
|----|--------|----|


The left and right columns are what we call bumpers. There's cool pre-rendered art in there as this is for an upcoming game! I have this laid out easily as a blind table in HTML where the left and right bumpers use the rowspan property and all the middle table cells have a width and max_width of 1024px.

My first question is: how can I ensure this collapses properly in lower resolutions. The middle column is 1024px wide and should ALWAYS stay at that size and centered in the middle. When you shrink the browser window or view the page in lower res, the bumpers should simply shrink.

My second question is: at 1920x1080 screen resolution, for example, the bumper art is still a bit wider than the space it's got. When looking at the page in 1280x720, for example, the bumper art for those left and right columns is much to wide of course. Is there a way to have the tables cut off the bumper art FROM the right direction? That is, the INSIDES of the bumpers (right edge for left bumper and vice verse) should always stay at the edge of the table cell, the OTHER side should get cut off. I've tried overflow:hidden tags and a couple other things and nothing really works properly, overflow:hidden doesn't do anything in my case for example.

I'm stumped on how to set this up properly, and would greatly appreciated any help from you web-designers! If you need more info or anything, please let me know!
#13
Quick question to other AGS plugin authors: when using D3D9 drivers, how do you guys retrieve the D3D9 device on startup? I have always done this in the AGSE_PRESCREENDRAW by counting frames and setting things up on the very first frame and before rendering anything. This is not a very elegant solution however, I wish there was some kind of startup event that would pass the D3D9 device but I couldn't find such a thing. How are other people doing this?
#14
Hey there,

after years of being on the lookout for means to get a decent sounding orchestra VST I finally got myself Edison Orchestral - using it with Fruity Loops 9 XXL currently and it seems to do its job pretty damn well. Anyways, one sort-of-classically-arranged idea I always had lying around, composed as a MIDI, fell victim first and I made a real recording of it. I believe it actually was for a Tune Contest years ago and yes, it is supposed to sound as (melo-) dramatic and epic as possible pretty much.

Keeping in mind I have very little knowledge about real orchestra arrangements and stuff I'd like to know (a) what you guys think and (b) what I can improve, please! :p


Streaming link, just open it in a new tab or window and it'll stream in the background by itself. No need to download!

Oh and before I forget, it is not an entire symphony quite yet... More like two minutes work in progress haha.

Cheers!
#15
Hey there! I'm working on a little 640x400 game, the characters all have very much transparent space around them for various big animations (so that their anchor point doesn't change) so the normal character.Say function doesn't position the text very well anymore (ie. way too high). So I wrote a super simple custom extender function called character.SayEx which is supposed to take care of the matter, here's the code:

Code: ags

function SayEx ( this Character *, String text )
{
	this.SayAt ( this.x - 100, this.y - 148, 200, text );
}


(Lucas Arts style speech BTW!)

It's only about the horizontal positioning of the text. For some reason all text will appear all the way to the right side of the screen! I checked the value of this.x and it is 256 (in a 640x400 room), so I don't see any reason why it would do that apart from being bugged.

What I'm trying to do is have the speech be displayed centered over the character like it would be when just calling character.Say but at a custom defined height (this.y - 148 in my case). So I pass the center coordinate of the player (this.x) - 100 as the boundary and a width of 200 (effectively this.x + 100) as the right one.

There are lots of other reported issues with the SayAt function, is it really bugged or documented improperly or am I doing something wrong? Any insight is appreciated!
#16
Hey there, I'm 99% sure I've seen a code snippet around that did this (semi-) elegantly at least, but I can't find it for the life of me.

I call DrawingSurface.GetPixel () and want to retrieve the seperate RGB values from the color value it gives me. In other words, I'd need the reverse of the Game.GetColorFromRGB () function.

Any insight?
#17
Hi guys,

I have a problem. I have written a nice C++ plugin that uses the D3D9 driver to overlay any adventure game room with a fullscreen quad (a layer basically) and blends that using true additive blending. As far as I know, this effect is really not doable from within AGS any other way.

It works and gives awesome results - but one thing is bugging the living hell out of me:

(1) If the user runs the game using a graphics scale filter from winsetup.exe (say x2), that fullscreen rectangle only covers the top-left quarter of the screen. It doesn't get scaled along. Scaling that thing myself would be trivial but I haven't found a way to actually determe if the game is running at a different scale or not.

(2) If I run this (640x400 BTW) game in fullscreen instead of windowed, and only at x1 scale without modifier from winsetup.exe, it puts black bars all around the screen, to the left, right, above and below it. I don't quite know why that happens but it's always been like that on my 1920x1080 screen. Switching any options around in the game and in winsetup.exe achieves absolutely nothing, no change whatsoever. This isn't so much of a problem, but when it has the black bars on top, my fullscreen quad is offset by that as well. The bars left and right don't matter at all, but those that (I assume) AGS just draws on the screen there, the top and bottom ones, they affect the position. So the room 0/0 is actually somewhere around 100/100 in actual screen coordinates. My fullscreen quad should be at 100/100 but it is at 100/0.

Is there any way to fight these issues?

Any input is well-appreciated!
#18
Hey guys, is there any easy way that I'm not seeing currently to draw something on a layer underneath characters but above the room background including all its objects?

In my case, I have a room that I want to be dark. Now, for a special reason, I want that dark layer (which is an overlay) to not affect any characters in the room, just objects and the room background.

Is that possible somehow?
#19



This video explains it all:


CLICK BELOW TO WATCH!



Grab Version 1.0 HERE. Note that it does contain a few undocumented functions and there might be bugs - especially in the collision detection area. The important thing for now is that the core functionality is there. Being able to load and display models with custom shaders and so on.

It comes with the demo game that you saw in the trailer (and source code, assets etc. to that) as well as the documentation and - of course - the DLL itself. Using the source code to the demo game and the documentation, it should be a piece of cake to start putting a 3d game together in AGS. Open the demo game up in the editor and run it from there please. If you run it from the Compiled folder it won't find its resources. If you want to publish a game, you have to copy your models and shaders folders into the compiled folder before distribution!

Let me know what you guys are thinking.

One thing I didn't mention: Razorblade 3D also supports casting rays (lines basically) into the level and then you can check if they hit anything and at which distance. This allows you to check whether a bullet hit an enemy for example.

Two notes:

- Sorry for overusing the phrase "you know" in the video. :D
- I misspelled the title of the plugin in the link image above, it's Razorblade, not Razerblade.

Credit goes to Davi "Exsecratus" Arakaki for the art in the demo game!


Here's a guide that straydogsstrut kindly provided! Make sure to read this before trying to develop with Razorblade 3D!

Quote from: straydogstrut on Sat 25/02/2012 23:33:07
** Pre-requisites for using the plugin **


  • AGS 3.2.x

** Installing the plugin **


  • Download the plugin and extract
  • Put the AGS Razorblade Plugin.dll in the main folder where AGS is installed (This is the same folder where the AGS Editor.exe is)

** Running the demo Game **


  • Download the demo game and extract
  • Start the AGS Editor and choose Open an Existing game
  • Find the Razorblade 3D Testgame and select the Game file
  • If the plugin is installed correctly you should see the active plugin listed under the Plugins node in the main tree in AGS (right hand side of the program)

Run the game but be aware that if AGS is installed anywhere other than 'C:\ AGS 3.2.1 SP1' (for example, mine is at C:\Program Files\AGS 3.1.2) it will complain about missing textures. This, it seems, is due to the 3DS Max models supplied with the demo game referencing absolute paths. You can dismiss these errors and the game will still run with a default texture. I no longer have 3DS Max on this machine to test the suggestion of changing the setting in the preferences unfortunately.

The demo game features an environment to move around in. WASD keys to move and arrow keys to move the light source around (IJKL can also be used but are commented out in the code). Left mouse click will cast a ray towards the location of the click and report on what was hit (like a gunshot in any FPS). The base model will return "hit nothing" while the lightbulb will tell you the name of the model hit. Note there is no collision detection in the plugin (this is intentional, it's a graphics engine primarily) so you can move through objects.

** Using the plugin in your own games **


  • Having installed the plugin, launch the AGS Editor and start a new game
  • You should see the plugin listed under the Plugins node in the main tree in AGS - right-click it and choose Use This Plugin
  • Make sure that Default Graphics driver is set to Direct 3D 9 Hardware Acceleration
  • Any models and shaders you want to use can be placed in subfolders in the main game folder called models and shaders respectively like the demo game.
  • Models should be in .dmf format (I haven't seen a link to the exporter previously mentioned)
  • The default texture default.png should be placed in the main game directory - I could not get the game to run without this but again presumably this is a path referenced by the demo models themselves?

Going by the demo game, the 3D scene is created in the GlobalScript file - the main bits to look at are:


  • The variables declared at the top of the GlobalScript.asc file (a boolean to track whether the initial setup has been done and integers for the models, lights and shaders).
  • The init function which sets some defaults (background colour, camera culling and clip distance), adds the the object models, shaders and lights
  • A crosshair GUI (see the example in the demo game under the GUI node) is placed and shown at the end of this function
  • The HandleControls() function calls the PlayerControl and AttachWeapon functions found in the Camera script (look under the script node) to allow camera movement and update the placement of the gun
  • The rest of the handleControls function sets up key presses to move the light source around
  • The GameStart() function sets the max FPS, positions the mouse, camera and shows some debugging info
  • The repeatedly_execute() function checks if the initial setup has already been done and if it has does stuff with the shaders that is beyond me ;) It also calls the HandleControl() function described above.
  • Finally the mouse_click() function contains the hit testing code (notice we added an extra model for the hit test)

The documentation that comes with the plugin is excellent and lists many of the commands available. This includes a description of what they do so you can work it out just by looking up the function call in that file.

** Publishing the game **

It has been mentioned that the models and shaders folders should be added to the Compiled folder when publishing the game. I have not tested this.

For people that just want to check out this plugin's capabilities without downloading anything, here's the current documentation:

Quote from: Documentation
CAMERA
   
function RB_SetCameraPosition ( float x, float y, float z )
float RB_GetCameraPositionX ( )
float RB_GetCameraPositionY ( )
float RB_GetCameraPositionZ ( )

   These functions allow you to set the position of the camera and retrieve it.
   Should be self-explanatory.


function RB_SetCameraTarget ( float x, float y, float z )
float RB_GetCameraTargetX ( )
float RB_GetCameraTargetY ( )
float RB_GetCameraTargetZ ( )

   These functions allow you to set the position of camera target and retrieve it.
   The camera target is a point in 3d space that the camera is looking at.
   Use this point as well as the camera position (see above) to position and orient
   the camera in any way you want.


function RB_SetCameraFOV ( float fov )
float RB_GetCameraFOV ( )

   These functions allow you to set the field-of-view of the camera and retrieve it.
   Play around with this value and see what happens for yourself.
   The FOV defaults to 60.0 - which is a standard value to use - so you don't HAVE to
   set it if you don't want to specifically.


function RB_SetCameraClipDistance ( float clip_distance )
float RB_GetCameraClipDistance ( )

   These functions allow you to set the clip distance of the camera.
   That is the distance at which things will start cutting off.
   Make sure this value is large enough so that your scene is visible.



MODEL

int RB_AddModel ( String filename )

   This function adds a new model into your scene.
   You have to supply a filename relative to the game folder that AGS creates for your
   games and the model has to be in the DWF format. Use an exporter for your 3d model
   program to export your assets in that format.
   The function returns a handle that you have to store (as an integer) if you want to
   change further parameters of the model.


function RB_RemoveModel ( int id )

   This function removes a model from the scene.
   You have to supply a handle to an existing model.


function RB_SetModelShader ( int model_id, int shader_id )

   This function tells the game to use a certain shader for a certain model.
   You have to supply a handle to a model as well as a handle to a shader.
   Models with no shader set will default to a very basic one without lighting.


function RB_SetModelPosition ( int id, float x, float y, float z )
float RB_GetModelPositionX ( int id )
float RB_GetModelPositionY ( int id )
float RB_GetModelPositionZ ( int id )
function RB_SetModelRotation ( int id, float x, float y, float z )
float RB_GetModelRotationX ( int id )
float RB_GetModelRotationY ( int id )
float RB_GetModelRotationZ ( int id )
function RB_SetModelScale ( int id, float x, float y, float z )
float RB_GetModelScaleX ( int id )
float RB_GetModelScaleY ( int id )
float RB_GetModelScaleZ ( int id )

   These functions allow you to position, rotate and scale a model in any way you want as
   well as retrieve their current position, rotation or scale.
   The first parameter has to be a handle to an existing model.
   Rotations are done in degrees.


function RB_SetModelCustomCullMode ( int id, RB_CullMode mode )

   This function sets a custom cull mode for a specific model. If your game doesn't use
   automatic backface culling, this function won't do anything. If it deletes faces that
   are counter-clockwise for example, but you have one specific model that is done the
   other way, you can use this function to set up a different cull mode for this mode only.



HIT MODEL

int RB_AddHitModel ( String filename )
function RB_RemoveHitModel ( int id )
function RB_SetHitModelPosition ( int id, float x, float y, float z )
float RB_GetHitModelPositionX ( int id )
float RB_GetHitModelPositionY ( int id )
float RB_GetHitModelPositionZ ( int id )
function RB_SetHitModelRotation ( int id, float x, float y, float z )
float RB_GetHitModelRotationX ( int id )
float RB_GetHitModelRotationY ( int id )
float RB_GetHitModelRotationZ ( int id )
function RB_SetHitModelScale ( int id, float x, float y, float z )
float RB_GetHitModelScaleX ( int id )
float RB_GetHitModelScaleY ( int id )
float RB_GetHitModelScaleZ ( int id )

   These functions are equivalent to the respective model functions (see above).
   The difference is that these concern not normal models but hit models.
   Hit models are always invisible and are only used to calculate collisions with.
   This way you can have a triangle-heavy visible model and a simplified one
   (a box, a cylinder, a sphere maybe, or a combination of these shapes with very
   few triangles) so that collision calculations are much faster.



LIGHT

int RB_AddLight ( RB_LightType type )

   This function adds a new light to the scene.
   You have to supply a light type. Currently only point lights are supported.
   The function returns a handle (integer as always) to the new light that you have
   to store if you want to change its parameters after the creation.


function RB_RemoveLight ( int id )

   This function removes a light from the scene.
   You have to supply it with a handle to an existing light.


RB_LightType RB_GetLightType ( int id )

   This function returns what particular light type a light in the scene is.
   You have to supply it with a handle to an existing light.
   The function returns the respective light type.


function RB_SetLightPosition ( int id, float x, float y, float z )
float RB_GetLightPositionX ( int id )
float RB_GetLightPositionY ( int id )
float RB_GetLightPositionZ ( int id )

   These functions allow you to set the position of a light as well as retrieve it.
   The first parameter has to be a handle to an existing light.


function RB_SetLightAmbientColor ( int id, floatare, float g, float b )

   This function sets the color of the ambient term of a light.
   The ambient light is added to all of your scene regardless of distance or orientation
   or anything. If you would want your scene to be lit by nothing except a single point
   light, set this to black. If you also want a distant moon lighting all of your scene up
   just a little bit, set it to a dark yellow.
   You have to supply it with a handle to an existing light.


function RB_SetLightDiffuseColor ( int id, floatare, float g, float b )

   This function sets the color of the diffuse term of a light.
   The diffuse light is only added to triangles that face the light to a certain degree and
   that are close enough. If you imagine a candle in a dark environment, the orange light
   coming from the candle and lighting up nearby objects would be the diffuse light.
   You have to supply it with a handle to an existing light.


function RB_SetLightSpecularColor ( int id, floatare, float g, float b )

   This function sets the color of the specular term of a light.
   The specular color is the light that reflects back from a lit up surface to the camera.
   It's particularly strong on objects with a wet or metallic surface.
   You have to supply it with a handle to an existing light.


function RB_SetLightIntensity ( int id, float intensity )
   
   This function sets the overall strength of the light.
   The more intense a light is, the brighter it will appear and the more area will be lit
   up by it.
   You have to supply it with a handle to an existing light.


function RB_SetLightCutoff ( int id, float cutoff )

   This function sets the exponent that is used to calculate the cutoff for the light.
   Setting this to 1.0 would result in a linear cutoff meaning a triangle x units away from
   the light would receive twice the light as a triangle double that distance would.
   Increase the value to get more realistic results where a certain region around the light
   gets lit up a lot and then it fades away very quickly.
   You have to supply it with a handle to an existing light.


function RB_SetLightShininess ( int id, float shininess )
function RB_SetLightSpecularIntensity ( int id, float specular_intensity )

   These functions allow you to control the exact behaviour of the specular part of the light.
   You have to supply them with a handle to an existing light.



SHADER


int RB_AddShader ( String filename )

   This function adds a shader to the scene.
   Store the handle it returns (as an integer) in order to apply it to models.
   You have to supply it with a filename relative to the game folder that AGS creates for your
   game where it can find a shader in the FX format (written in HLSL).


function RB_RemoveShader ( int id )
   
   This function removes a shader from the scene.
   You have to supply it with a handle to an existing shader.


function RB_SendFloatToShader ( int id, String name, float value )
function RB_SendFloat4ToShader ( int id, String name, float value1, float value2, float value3, float value4 )
function RB_SendFloatArrayToShader ( int id, String name, float value[], int element_count );\r\n" );
function RB_SendFloat4ArrayToShader ( int id, String name, float value1[], float value2[], float value3[],
float value4[], int element_count );


   These functions allow you to send varying floating point vales and arrays of values to the shader.
   You have to supply them with a handle to an existing shader, a name to a variable of proper type in
   the shader code as well as the necessary values. For sending arrays you also have to tell the function
   how many elements there are in the array in the last parameter.
   

function RB_SetShaderAutoSendWVP ( int id, String name, bool toggle );\r\n" );
function RB_SetShaderAutoSendW ( int id, String name, bool toggle );\r\n" );

   These functions allow you to make your game send a shader the world-view-projection matrix or simply
   the world matrix automatically each frame.
   You have to supply it with a handle to an existing shader, with a name to a matrix variable in the
   shader code and a boolean value to determine whether you want to turn the automatic sending on (true)
   or off (false).



MISC


function RB_SetClearColor ( floatare, float g, float b )

   This function sets a global clear color.
   That is the color the scene will default to every frame. The color will be visible when you don't have
   a model that surrounds the camera completely.


function RB_SetGlobalCullMode ( RB_CullMode mode )

   This function sets a global cull mode. You can improve performance by letting the game delete faces that
   don't face the camera as these wouldn't be visible anyways.
   Note that the global cull mode can be overwritten for each model.
   You don't have to set this value, it will default to not using culling at all as a wrong cull mode makes
   your models invisible.


int RB_SendRay ( float x1, float y1, float z1, float x2, float y2, float z2, RB_IntersectionType intersect_with )

   This function sends a ray from a position in 3d space to another location.
   You have to supply it with both the origin and the target points.
   You can also choose whether you want the ray to collide with anything or just hit models.
   The function returns a handle to a collision object, use that to check the collision test for results and
   retrieve further details.


int RB_SendScreenRay ( int x, int y, RB_IntersectionType intersect_with )

   This function works in the same way as RB_SendRay except that you can specify 2d coordinates on the screen
   and the game will send a ray through there. This is great for when you want to shoot a bullet through the
   center of the screen and check if it hit an enemy for example.


float RB_GetIntersectionDistance ( int id )

   This function returns the distance at which an intersection occured.
   You have to supply it with a handle to an existing collision object.
   If there was no collision, it will return -1.0.


int RB_GetIntersectionModel ( int id )

   This function returns a handle to the model that collided with the ray first.
   You have to supply it with a handle to an existing collision object.
   If there was no collision, it will return -1.

Edited by Dualnames. Included/replaced with working download link
#20
Are there any nice workarounds for when you have a function that does a bigger task and you need to return several basic variables (in my case, floats and ints)?

I didn't realize pointers to these types weren't allowed in AGS.

Usually I would create several functions that would all perform the task and just return a different variable but I'm talking about a process that is quite processor heavy and thus I really don't want people to have to call a function three times more than necessary just to get all the necessary values returned.

This is actually ultimately something for a plugin but that shouldn't really matter as the plugin-functions also have to follow AGS's script rules.
SMF spam blocked by CleanTalk