Thursday, November 4, 2010
Wednesday, November 3, 2010
Tutorial - Lighting Effects Parts 1 & 2
My Tutorial has been written on creating lighting effects using proximity triggers to change an objects material glow parameter. To highlight my deeper understanding in this area I have included how to make multiple instantiated objects glow using 1 trigger, use multiple instantiated triggers to make 1 light glow and to make multiple triggers each with their own light glow. This meant that I had to break the video down into two shorter tutorials as it was quite long.
My original tutorial was recorded using CamStudio and I was able to break this down to produce the first video using Sony Vegas. However the second video needed editing and then I was confronted with massive rendering issues. The CamStudio clips were HD but when I put them in Sony Vegas they created glitches. Finally Rabi Deheini guided me to CamTasia and I was then able to quickly remake my 2nd tutorial using Camtasia Recorder and Studio and upload it to YouTube without any hitches.
Tuesday, November 2, 2010
For Pat .... Triggers and Glow Param
This is what the same flowgraph looks like attached to the object you want to glow. With this one, once you have made it on your object you can select your object and copy it multiple times and they will all be attached to that trigger so you can use the one trigger to turn on several glow objects.
My Tutorial Subject - Lighting, Triggers and Flowgraphs
It was overwhelming to be given the new topic of flowgraphs and trying to find new ways of doing things when I did not even know how to do things a regular user might do. Beginning with research, I quickly found that there was not a lot of information on flowgraphs. What was available was either very complex or tutorials which told you how to do something but gave no explanation behind the mere monkeying of actions. This was fine if you could find information on precisely what you wanted to do, but even that was a challenge as the tutorials are very haphazard.
My tutor was the first one to get me on the road with a one on one demonstration on how to set up a simple light and trigger system. As simple as it perhaps now seems, it was the key to being able to move forward. The reason for this was as he went along with his demonstration he explained why he did something. I quickly realised that this was what was missing in the vast majority of tutorials, and not just with Sandbox 2.
From here, every week I would go to tutorials and the tutors would give me titbits of information which constantly helped me to progress. Along the way I have gathered all these hints and tips which I have found useful. These were particularly critical when I came across a problem which I was unable to resolve by myself or through research.
In my tutorial I have chosen to go beyond a quick cold demonstration of which buttons to click to gain a result. When people learn it is important they understand what is happening otherwise their actions remain superfluous. As a result, during my demonstration of my chosen topic of lighting and proximity triggers, I explain what I am doing as I go along in a way that I believe gives a deeper level of comprehension. I have also been careful to cover all the problem areas I had. such as finding where to apply the ‘glow’ parameter due to the glitch in the programming, not to use the scaling tool on trigger areas and the different setups depending on whether you want to use lots of lights or lots of triggers and the importance of choosing which entity to place the flowgraph.
The result is my tutorial was much longer than the request 3-5 minutes so I have broken it up into a Part 1 and Part 2. Part 1 explains things aimed at a relatively new user, especially to the flowgraph programming. Part 2 touches more lightly on the very basic skills and moves faster, the assumption being that the viewer will have a reasonable understanding of the topic as demonstrated in Part 1. I have taken care to provide information in both in order that they may be viewed independently of each other so that a viewer is not wholly dependent on seeing both.
I do not think that this style of tutorial will suit everyone, particularly people who have some experience of programming or gaming as it may seem too simplistic and thus slow for them. I have been conscious to speak relatively slowly, to give time for the new user to take in what is being said. I do however believe that watching these tutorials will give a level of understanding which will provide a good foundation for using triggers, material parameters and flowgraphs in general . A solid foundation is critical to being able to operate at a level beyond that of a typical user .
Monday, November 1, 2010
Porosity Video
Welcome to my journey. This video has all been shot using the first person to reflect the spontaneous recording of movement that my environment allows. I have tried to artistically create a sense of movement having its own presence and identity and that a persons movement through a space, no matter how unobtrusive, leaves markers. I have attempted to display the spirituality of this movement through semi-transparent material depicting the movement as somewhat intangible.
Sunday, October 31, 2010
Sandbox Folders and Control Keys For Game
Please note, the folders include the European pak plug in which is required for viewing the created alpine environment.
Key 'm'
Turns ground fire particle effect at feet of player on and off
Key 'o'
Turns snow particle effect on and off
Key 'p'
AI moves to tag point and triggers particle effect
Tuesday, October 19, 2010
Improved Spawning Fire Flowgraph With On/Off Switch
Porosity Lens Screenshots Recording Movement
The light beams trigger on when a player passes through a documented area.
The blue beams increase in glow intensity the longer a player remains within the trigger area. The lanterns, which have the railway framework pattern impregnated on their shades, increase in glow intensity each time the player enters the railway framework.
A player has passed through this scene, depicted by short glow beams through the railway framework and the length of time spent within the longer blue beams.
The intensity of time spent within a trigger spot is indicated by the density of the particle effect.
Environment/Structure Screenshots and Explanations
The main railway framework is interspersed with the railway sleepers which have had the opacity reduced and colour changed to blue, the sleepers also were imported without enabling collisions from sketchup so the player may run through them. This allows us to see how a player may negotiate his way through the railway framework (which has collisions enabled and therefore the player must negotiate their way around the framework). The longer beams are from the railway frame with a blue colour impregnated. They did not have collisions enabled however they test how the player is tricked into not running through them due to their lack of opacity unlike the railway sleepers which are more transparent and therefore encourage the player to run through them.
Overview of the structures with the shadow patterns they create. Interestingly when playing the level I tend to want to spend more time within the shadowed areas.
The lanterns are custom made. As they are to indicate how many times the player enters the railway framework by the increasing glow intensity, they have the same framework which was scaled down and coloured then intersected with the square box shade to reflect what they are recording.
.
Draft Video With Music
This is a brief draft ... a trial run around the environment in one take. I have added the music, all unedited, which I intend to use - Fireflies by Owl City. I chose this music as the concept of 'fireflies' reflects the lighting and particle effects I use to portray porosity. The song itself has a sense of movement. The lyrics portray my idea of porosity as its own living entity ... the idea that the movement of the fireflies fill the air when I fall asleep portrays the concept that when everything stops there is still this record of earlier movement which occured in the environment - a kind of spiritual movement when all becomes still. This is demonstrated by the lights remaining on where the movement has occurred and turning off after some time delay post the movement.
Monday, October 18, 2010
Increase Glow According To Time
With further refinement and Andrew's idea with the logic gate, I have come up with this flowgraph. This flowgraph allows the player to leave the area, saving the current glow degree and then restarts the increasing glow upon re-entering the proximity trigger. This is potentially really powerful in recording time as it can accumulate time spent within a given area. This is the result:
Tutorial Subject - Proximity Triggers and Changing Material Shader Parameters
For the example I will explore the material shader in the material parameter node. Much of my project has been based around lighting but through researching this area I found that only 32 lights may be used without crashing. Using material glow is a much more efficient way to create lighting within the Crysis environment. I have created flowgraphs to turn on glow when entering a proximity trigger; to increase glow when re-entering a proximity trigger; to increase glow whilst remaining in a proximity trigger; and I have used the time delay node to fine tune these.
The reason I have chosen these nodes to concentrate on is they elevate the understanding of Sandbox editor at a foundational level. By gaining understanding at the foundational level, one is able to expand and extend these capabilities creatively. Changing a material allows one to understand fundamental concepts of changing entities within the Sandbox editor. Using the proximity trigger provides a quick and easy way to trigger events. The area trigger may also be used but unless one one requires an irregular shape it is quicker to use a proximity trigger. I believe foundational learning within this area is critical to creating creative scenes within the Sandbox editor. Once this is mastered, one is able to move forward more independently, exploring flowgraphs in creative ways.
One way to demonstrate an elevated understanding of this is to demonstrate in the tutorial how to create repeated copies of glowing entities with triggers which operate independently without having to reimport each flowgraph (this is by creating the flowgraph on the entity and then copying the entity and trigger to several locations). To create a trigger with several entities which glow then you create the flowgraph on the trigger and copy the entity which then continues to be attached to the single trigger.
Increase Particle Effect In Relation To Time
This was the first attempt that really worked. At first when the AI entered the trigger area the particle effect would appear to quickly so I added a delay to make it clearer that the AI had actually stopped within the area. In this example the AI enters the trigger area, the particle effect starts up and then a few seconds later it spawns again but then there is no further increase in intensity in relation to time.
After playing around some more I got this:
A much simpler graph which is infact more obvious. On start of game the proximity trigger is enabled (the flowgraph is attached to this proximity trigger). On entering the proximity trigger we attach a Logic:Any to allow the entry of a time delay loop. The time delay loops round so that every second (indicated by the 1) it triggers the next step which is to spawn the particle effect.
The only problem with this is that it works as it is attached to an AI who remains on the trigger point having moved there. Infact it would be more accurate for the particle effect to stop spawning once the AI or player leaves the area.
Saturday, October 16, 2010
Increase Glow On Each Entry To Trigger Area
This video shows the increasing glow each time the player enters the trigger area.
This video shows the installation of all the custom made lanterns on the frame of the railway model. The player triggers the lanterns to increase in their glow each time the player enters the frame of railway.
Friday, October 15, 2010
Custom Model
This is a custom model I made in Sketchup. Based on a Chinese lantern, the inset design is a scaled version of one of the components of the frame for the railway track. I hope to attach this to a flowgraph so the longer the player spends within the railway framework the brighter the lanterns will become. The inset design thus indicative of what it represents.
All other structures in the environment were created using parts of the railway structure provided and then manipulated and the material changed within Sandbox Editor.
Sunday, October 10, 2010
Trigger Lights
Trigger Glow Material
The geometric entities are semi-opaque railway sleepers which have been manipulated, to produce the maze of posts and then set to the vertical. They are set in sets of 10 and have been distributed through the main tunnels of the railway framework. Their material has been changed to 50% opacity so the player is encouraged to walk through them.
This effect is interesting although I think that a time delay node needs to be input so that the glow effect does not trigger in front of the player. Alternatively the glow parameter can be set to change on leaving the trigger area which would be less complicated.
Triggering Glow Effect On Leaving The Proximity Trigger:
I have changed the flowgraph to trigger on leaving the proximity trigger. This works better as it is less confusing for the player.
Spawning Fire - Mastered
Monday, October 4, 2010
Spawning Fire 2nd Test
Tuesday, September 28, 2010
Spawning Fire
Saturday, September 25, 2010
Brief For The Porosity Lens
The setting of a scene is important to maximising the effect of the Porosity Lens. I have chosen to implement my experiments in a snow scene for three reasons. Firstly, the falling of snow artistically creates a notion of passing time and of movement. Secondly, fallen snow creates footprints of a persons movement through space. Thirdly, it provides a neutral canvas to display colour to its maximum effect, colour being the visualisation of physics on objects in an environment. The time of day is night time to give the lights maximum visibility. A frozen lake in the centre of the experiment area artistically gives the scene a 'control' as such of 'frozen' or 'static' movement.
I intend to use the given railway station for the majority, if not all, objects that are required in my project. This presents an artistic challenge and allows me to concentrate on creating flowgraphs and experimental areas. By breaking up the railway station, the notion of porosity is taken down to the level of the focus object.
References:
http://en.wikipedia.org/wiki/Light [accessed 26 September 2010]
http://en.wikipedia.org/wiki/Optics [accessed 26 September 2010]
http://en.wikipedia.org/wiki/Colour [accessed 26 September 2010]
S.W.O.T. Analysis
Strengths - It delays initiation of an action which provides for stronger and more varied manipulation of actions.
Weaknesses - It has only one purpose, that of creating a delay thereby it does not lend itself as such to creativity of use.
Opportunities - It will provide opportunity for analysis and observation of movement by delaying an action, in my intended case by turning on/off lights with a delay in order to observe.
Threats - A delay may not always be the most appropriate node to use when recording certain movement.
Entity:ProximityTrigger
Strengths - It detects when there is movement of a given subject near a given point and triggers an action.
Weaknesses - It may not be the most accurate way to detect movement in a specific space, using an area trigger may be more appropriate.
Opportunities - It allows actions to be set up in response to entering the area, leaving the area and being in side the area.
Threats - Combined with lighting, the calculations may make the movement jumpy particularly when involving muliple triggers close to each other.
AI:AI Execute
Strengths - Sychronises an AI with an object and perform an action.
Weaknesses - It requires an AI Action flowgraph to be used or created to work in conjunction with it to perform an action.
Opportunities - Creates opportunities to link an AI to a multitude of custom actions which involve objects.
Threats - The AI depends on other flowgraphs to enact and if they do not work then this becomes redundant.
AI:GoToSpeedStance
Strengths - Allows an AI to synchronise its position with another object.
Weaknesses - Requires multiple nodes to as such perform an action upon meeting the position of another object.
Opportunities - Allows the AI to move in relation to another object and perform multiple actions upon synchronising with it.
Threats - More complicated and possibly multiple flowgraphs to enable it.
Three Flowgraph Nodes
The time delay node is the smallest of the nodes I shall be using. I have chosen this node as I intend to use lighting as a means of recording movement. CryEngine2 does not allow for more than 32 lights on at any one time Therefore the lights will need to be turned off when moving to different experimental areas. However, due to the need to record movement, it is useful to have lights turn on then delay their turning off in order to observe the movement which has just passed and also thereby observe the time taken to move through a path.
http://wiki.crymod.com/index.php/Sandbox_ObjectsEntityLights [accessed 26 Sept 2010].
This node is used to delay the transmission of any kind of information or signal.
The information or signal arriving at the “in” input is transmitted to the “out” output only when the “delay” input value (in seconds) is passed. The “delay input is usually manually decided by the user, however it can also be set dynamically. The node isn’t blocked when the first signal arrives, the arriving data is correctly operated continuously even during the delay pause.
Typical uses are the delay of data in order to correctly interact with other data in other nodes, or a simply pause between the triggering of something and the effects.
http://wiki.crymod.com/index.php/Flowgraph_Guide#Time:Delay [accessed 26 September 2010]
Entity:Proximity Trigger
The Entity:ProximityTrigger can be accessed by importing a proximity trigger into the game, Entity-Triggers-ProximityTrigger, then creating a flowgraph from its rollup bar, Flowgraph-Create-Rt Click-Add Selected Entity. The trigger node is a vital tool to record movement as it enables recognition of a player when it is close to a trigger point. This can then be used to trigger events to record the presence of a player, in my case I intend to use lights to record the players presence in an area.
Entity:AreaTrigger
I have added this node as I am not certain yet which trigger will be most appropriate to use. The Entity:AreaTrigger may also be used to record a player's presence in a given area and is accessed in a similar fashion using Entity-Triggers-TriggerArea. This is a similar trigger and I will attempt to utilise both inorder to ascertain which node is more appropriate in different situations.
AI:AIExecute
The AI:AIExecute node will enable me to manipulate an AI/third person to perform an action. This can be in the form of making the person move to a point/object, follow the player, follow a path and so forth as well as perform animations such as yawning, sitting down. I intend to use this tool to record the movement of third party people.
AI:AIGotoSpeedStance
I have added this node as a fourth node as the AI:Execute node is interdependent upon this node for the movement of an AI in synchronisation with an object.
Sunday, September 19, 2010
Lights
This is a shot of some chinese lanterns I put in the environment. They are hanging from the railway framework. At the moment they are not interactive, but I intend to work on them ...
The environment with no lights on ... I have constructed a 'sculpture' using railway parts and changed the material to glass. The pieces are reaching up into the sky and appear like rays of light yet they cast striking shadows on the snow.
The developing environment ...
Light effects on the sculpture ...
Setting these lights up has taken many hours surprisingly. The trigger points are quite finickity and it was hard to get it so that when the player runs through the railway pieces (which I have given a glass material) the lights trigger on as one leaves a light colour ...
After the player leaves the trigger area, the lights have a delay switch on them so they do not switch off immediately. They are currently set at 60 seconds to give the player time to run through the sculpture and then stand back and watch them turn off.
Squad Follows The Player
On start three people follow the player. They are given a follow area to follow within and two follow paths which they can switch between depending on which they are closer too. The followers have each been set to follow at different distances from the player, 8, 6 and -6. However, the follow area does not seem to work and they will actually follow the player outside the follow area. They do seem to show some preference to the two paths I set which run under the station framework.
I have added the stop follow command using the input key 'p', to demonstrate this I only switched off two of the followers and allowed the other to continue following.
Saturday, September 18, 2010
AI Moves Towards Object And Performs An Action
Research
To make a frozen environment click here
A link to some sample flowgraphs in Crymod can be found here. There are quite a few examples of flowgraphs here but nothing directly to do with lighting and triggers.
Custom AI Actions Tutorial
This tutorial shows how to make a custom AI action and make the AI move towards a tag point.
http://www.veoh.com/search/videos/q/sandbox/offset/40/searchId/9e96e75bb22461d76d60e24aa9dd1b70 [accessed 18 Sept 2010]
Nodes Used:
To Trigger AI to impliment flowgraph ...
Start - Implements action on start.- At start of game AI is engaged
Entity: EntityId - Attaches the Id of an object which the AI acts on, in this case a tag point.
AI Execute - Initiates AI to perform an action, in this case move towards the object/tag point. AI and Object to the move AI towards object script
Move AI To Tag Position and do an Action ...
AI Action Start - Initiates the start and connects to AI and tag object.
Entity: EntityPos - Collects tag object position and connects to AI position.
AI:AIGotoSpeedStance - Synchronises tag and AI positions.
AI: AIAnim - Once positions are synchronised then AI performs an action at that position.
AI:ActionEnd - If the AI succeeds then flowgraph is ended, if AI doesn't then flowgraph is cancelled, presumably prevents and indefinate loop.
Squad Follows Player Tutorial
This tutorial shows how to make a squad of several AIs follow the player.
http://www.veoh.com/search/videos/q/sandbox+squad+follows+player [accessed 18 Sept 2010]
Nodes Used:
To Make Squad Follow Player ...
Start - Implements action on start.
AI: AIExecute - Initiates AI followers to start following at set distances.
To Make Squad Members Stop Following Player ...
Input: Key - Initiate action on input of chosen key 'p'.
AI: AIExecute - Initiates AI followers to stop following the player.
Light Switches Tutorials
This video shows how to turn a light on using a light switch. The sound quality is poor.
http://www.veoh.com/search/videos/q/sandbox+light [accessed 19 Sept 2010]
This is a better quality video on how to make a light turn on using a light switch.
http://www.youtube.com/watch?v=vO5gOBoue7Y [accessed 20 Sept 2010]
This gives detailed information on Light Entities and the rollup bar for their manipulation.
http://wiki.crymod.com/index.php/Sandbox_ObjectsEntityLights [accessed 26 Sept 2010]
Russell Lowe Tutorial [performed 21 Sept 2010]
Nodes Used:
To Turn Light On/Off Using Proximity Trigger ...
Start - Implements action on start.
entity:ProximityTrigger - Enables an action on entering/leaving/inside the proximity trigger.
entity:SimpleLight - Activates/deactivates and enables/disables light.
time delay - Allows for a time delay to input between the trigger and the light.
To Turn Light On/Off Using Area Trigger ...
Start - Implements action on start.
entity:AreaTrigger - Enables an action on entering/leaving/inside the proximity trigger.
entity:SimpleLight - Activates/deactivates and enables/disables light.
time delay - Allows for a time delay to input between the trigger and the light.
Time:Delay Node
This node is used to delay the transmission of any kind of information or signal.The information or signal arriving at the “in” input is transmitted to the “out” output only when the “delay” input value (in seconds) is passed. The “delay input is usually manually decided by the user, however it can also be set dynamically. The node isn’t blocked when the first signal arrives, the arriving data is correctly operated continuously even during the delay pause.Typical uses are the delay of data in order to correctly interact with other data in other nodes, or a simply pause between the triggering of something and the effects.
http://wiki.crymod.com/index.php/Flowgraph_Guide#Time:Delay [accessed 26 September 2010]
AI:AIExecute Node
Name: AIExecute
Class: AI
Category: Approved
Hidden: No
Function: Executes an AI Action
Inputs
entityId Port
Type: Entity
Technical Name: entityId
Default Value: 0
Changes the attached entity dynamically
Sync Port
Type: Any
Technical Name: sink
Default Value: None
for synchronization only
Cancel Port
Type: Any
Technical Name: cancel
Default Value: None
cancels execution
ObjectId Port
Type: Entity
Technical Name: objectId
Default Value: 0
Entity ID of the object on which the agent should execute AI Action
Action Port
Type: String
Technical Name: soaction_action
Default Value: Not specified
AI action to be executed
MaxAlertness Port
Type: Integer
Technical Name: maxAlertness
Default Value: 2
maximum alertness which allows execution (0, 1 or 2)
HighPriority Port
Type: Boolean
Technical Name: HighPriority
Default Value: 1
action priority - use to force the action to be finished (except if alertness get higher)
Outputs
done Port
Type: Entity
Technical Name: done
Default Value: None
action done
succeed Port
Type: Entity
Technical Name: succeed
Default Value: None
action done successfully
fail Port
Type: Entity
Technical Name: fail
Default Value: None
action failed
http://wiki.crymod.com/index.php/FGNode:AI:AIExecute [accessed 26 September 2010]
Entity:Proximity Trigger
Name: ProximityTrigger
Class: entity
Category: Approved
Hidden: Yes
Function: Creates a trigger when player is close.
Inputs
entityId Port
Type: Entity
Technical Name: entityId
Default Value: 0
Changes the attached entity dynamically
Disable Port
Type: Boolean
Technical Name: Disable
Default Value: 0
Disables the trigger
Enable Port
Type: Boolean
Technical Name: Enable
Default Value: 0
Enables the trigger
Enter Port
Type: Boolean
Technical Name: Enter
Default Value: 0
On entering the proximity trigger
Leave Port
Type: Boolean
Technical Name: Leave
Default Value: 0
On leaving the proximity trigger
Outputs
Disable Port
Type: Boolean
Technical Name: Disable
Default Value: None
Disable
Enable Port
Type: Boolean
Technical Name: Enable
Default Value: None
Enable
Enter Port
Type: Boolean
Technical Name: Enter
Default Value: None
On entering the proximity trigger
IsInside Port
Type: Boolean
Technical Name: IsInside
Default Value: None
Whilst inside the proximity trigger
Leave Port
Type: Boolean
Technical Name: Leave
Default Value: None
On leaving the proximity trigger
Sender Port
Type: Entity
Technical Name: Sender
Default Value: None
Sender
http://wiki.crymod.com/index.php/FGNode:Entity:ProximityTrigger [accessed 26 September 2010]
Other Interesting Tutorials For Reference
Part 1 : Reference Images
Part 2 : Stitching Images Together
Part 3 : Importing Images
Part 4 : Modelling Oceans
Part 5 : Texturing Oceans
Part 6 : Mountains
Part 7 : Texturing Terrain
http://www.veoh.com/search/videos/q/sandbox