256 Colour Tutorial Part 2(V2.62): Difference between revisions

Jump to navigation Jump to search
m
no edit summary
mNo edit summary
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{deprecated}}
{{non-OOP}}
'''Palette effects using pre-defined functions'''
'''Palette effects using pre-defined functions'''
(by [[user:Gilbert|Gilbert Cheung]])
(by [[user:Gilbert|Gilbert Cheung]])
==Palette related functions==
==Palette related functions==
In [[256 Colour Tutorial Part 3|Part 1]] we had learnt about how to create and import 256 colour images for use with AGS games, let's move on to some applications.
In [[256 Colour Tutorial Part 1(V2.62)|Part 1]] we had learnt about how to create and import 256 colour images for use with AGS games, let's move on to some applications.


If you had seen the stunning colour effects like in old VGA or Amiga games created in the early 90's this tutorial is for you, I'll demonstrate some simple ways of doing these effects using palette here.
If you had seen the stunning colour effects like in old VGA or Amiga games created in the early 90's this tutorial is for you, I'll demonstrate some simple ways of doing these effects using palette here.
Line 32: Line 35:
Don't get confused, yet, it's not really that hard, let me demonstrate it with an example. You may still remember that I made [[media:8bittut_dizzy.pcx|this background]] in Part 1, and its palette is like:
Don't get confused, yet, it's not really that hard, let me demonstrate it with an example. You may still remember that I made [[media:8bittut_dizzy.pcx|this background]] in Part 1, and its palette is like:


[[Image:8bittut_dizzypal.png]]
[[Image:8bittut_dizzypal.png|center|Dizzy background palette]]


You may have noticed that, I used the "rainbow" colours in slots #240 through #253 (the first 14 slots in the last line of the above palette) to draw the "warping frame" of the background, if the colours of these slots are altered the colours of that "warping frame" will be changed accordingly (you can load the background into a graphics programme and play with the colours of these slots and see what will happen). To make an animated effect, you may try using the function '''CyclePalette()''' with ''starting slot'' #240 and ''ending slot'' #253. Here's a graphical illustration of what will happen if you do that:
You may have noticed that, I used the "rainbow" colours in slots #240 through #253 (the first 14 slots in the last line of the above palette) to draw the "warping frame" of the background, if the colours of these slots are altered the colours of that "warping frame" will be changed accordingly (you can load the background into a graphics programme and play with the colours of these slots and see what will happen). To make an animated effect, you may try using the function '''CyclePalette()''' with ''starting slot'' #240 and ''ending slot'' #253. Here's a graphical illustration of what will happen if you do that:


[[Image:8bittut_dizzypalcp.png]]
[[Image:8bittut_dizzypalcp.png|Diagram illustrating the effect of CyclePalette()]]


Whenever the function CyclePalette(240, 253) is executed, the colours in these slots are shifted to the left by one slot, and the original colour in the first slot (#240) will be warped to the last slot (#253).
Whenever the function CyclePalette(240, 253) is executed, the colours in these slots are shifted to the left by one slot, and the original colour in the first slot (#240) will be warped to the last slot (#253).
Line 67: Line 70:
==Changing an individual colour==
==Changing an individual colour==
Sometimes you may want to change the colour of a particular slot for some reasons, in such case you may check out the function '''SetPalRGB()''', again, let me just copy something from the AGS manual to bloat this space a bit:
Sometimes you may want to change the colour of a particular slot for some reasons, in such case you may check out the function '''SetPalRGB()''', again, let me just copy something from the AGS manual to bloat this space a bit:
  '''SetPalRGB (int slot, int red, int green, int blue)'''
<blockquote>
  Changes the RGB components of one of the palette slots. The palette
'''SetPalRGB'''<br>
  is initially set up in the Palette Editor, but you can override it
SetPalRGB (int slot, int red, int green, int blue)<br><br>
  during the game using this function for special effects. The RED,
Changes the RGB components of one of the palette slots. The palette is initially set up in the Palette Editor, but you can override it during the game using this function for special effects. The RED, GREEN and BLUE parameters each range from 0 to 63 (as used in the Palette Editor).<br>
  GREEN and BLUE parameters each range from 0 to 63 (as used in the
If SLOT is a background slot, then this function's effect will last until the player changes screen, when the palette is changed to the new room's palette. If SLOT is not a background slot, the effect of this function is permanent.<br><br>
  Palette Editor).
'''NOTE:''' This function will allow you to change the colours which are "locked" in the Room Editor. However, you should not normally do this as it can cause strange colours in the game.
  If SLOT is a background slot, then this function's effect will last
</blockquote>
  until the player changes screen, when the palette is changed to the
  new room's palette. If SLOT is not a background slot, the effect of
  this function is permanent.
  '''NOTE:''' This function will allow you to change the colours which
  are "locked" in the Room Editor. However, you should not normally do
  this as it can cause strange colours in the game.
 
Well, I won't bother explaining the above word by word, basically what this function does, is to change the colour of a slot directly, ''all'' pixels on screen which use this slot will be changed to the new colour immediately.
Well, I won't bother explaining the above word by word, basically what this function does, is to change the colour of a slot directly, ''all'' pixels on screen which use this slot will be changed to the new colour immediately.
Let's illustrate this with an example, remember the [[media:8bittut_ss1.pcx|sprites]] we used in the part 1? Conside the girl sprite:
Let's illustrate this with an example, remember the [[media:8bittut_ss1.pcx|sprites]] we used in part 1? Conside the girl sprite:


[[Image:8bittut_sprite0.png]]
[[Image:8bittut_sprite0.png|center|68px|Girl sprite]]


If you check, you'll see that the red tips of her antennae were drawn using colour slot #32. Suppose you want them to alter between black and red colours endlessly throughout the ''whole game'', what we can do is, in each game loop, if the colour of slot #32 is currently <font color='FF0000'>red</font> change it to <font color='000000'>black</font> (where (r, g, b) tuple equals (0, 0, 0) ) , ''else'' change it to <font color='FF0000'>red</font> (where (r, g, b) tuple equals (63, 0, 0) ). This logic can be visualised as follow:
If you check, you'll see that the red tips of her antennae were drawn using colour slot #32. Suppose you want them to alter between black and red colours endlessly throughout the ''whole game'', what we can do is, in each game loop, if the colour of slot #32 is currently <font color='FF0000'>red</font> change it to <font color='000000'>black</font> (where (r, g, b) tuple equals (0, 0, 0) ) , ''else'' change it to <font color='FF0000'>red</font> (where (r, g, b) tuple equals (63, 0, 0) ). This logic can be visualised as follow:
Line 130: Line 126:
Which is merely just the above materials put together into an AGS "game". To test it just unzip it into an empty folder and load up '''ac2game.dta''' via the AGS editor and ''save'' a game. ('''room1.crm''' is the "dizzy" room, where you can click to transport you to '''room2.crm''', which is the "disco" room, you can click on the door(way) to toggle between opening and closing of the door, you'll notice also the door lock light will change colour according to the status of the door, you can read the room script for more info on how to do this. If you're having enough "fun" just press '''ctrl-Q''' to quit.)  
Which is merely just the above materials put together into an AGS "game". To test it just unzip it into an empty folder and load up '''ac2game.dta''' via the AGS editor and ''save'' a game. ('''room1.crm''' is the "dizzy" room, where you can click to transport you to '''room2.crm''', which is the "disco" room, you can click on the door(way) to toggle between opening and closing of the door, you'll notice also the door lock light will change colour according to the status of the door, you can read the room script for more info on how to do this. If you're having enough "fun" just press '''ctrl-Q''' to quit.)  


Coming next - [[256 Colour Tutorial Part 3|Part 3: Full control of palette effects]]
==Downloadable files used in this part==
*[[media:8bittut_paltut2.zip|ZIP file - part 1 stuff]]
*[[media:8bittut_ss1.pcx|PCX image - the Girl and the Alien sprites]]
*[[media:8bittut_dizzy.pcx|PCX image - "Dizzy" background]]
*[[media:8bittut_disco.pcx|PCX image - "Disco" background]]
*[[media:8bittut_paltut2.zip|ZIP file - part 2 stuff]] (<font color="FF0000">new</font> in this part)
 
 
<s>Coming next - Part 3: Full control of palette effects</s>


(Return to [[Using 256 colour graphics in AGS]])
(Return to [[Using 256 colour graphics in AGS]])


[[Category:Intermediate Tutorials:Graphics Related:256 colour]]
[[Category:Intermediate Tutorials:Graphics Related:256 colour]]

Navigation menu