Should our game engines go to film school?

Started by
39 comments, last by zedzeek 18 years, 3 months ago
Nice discussion!
I would really like to get to know more of these rules used for cinematic camera work. Could be interesting. So anyone giving some topics to google, sites to visit and so on would be appreciated, at least from my side ;)

Back to topic:
Though I don´t know any of those rules (yet) I agree that all third person games I played have some disorienting cuts / perspective changes. PoP is one of the games which confused me the most: While many perspective changes worked great (at least for me), there were also many that just totally busted me. For example most "shots" of the Dahaka chases combined with the "grey out" feature superpig mentioned totally got me and managed to give me a strong feeling of tension. Just the next second I had to witness how I looked at the prince running straight at the camera leaving me with no info about where he/I was running to. Whilst this might have worked fantastically in a cutscene, here, in an in-game situation it just pissed me off as I was falling down into some spike pit or similar just for the sake of a cinematic shot of the hero running.
What I am trying to express with this example is the following, which has been said in a similar fashion by other posters, I presume:
Cinematic camera angles and action-heavy gameplay don´t fit together too well, at least not without a good amount of work. The cinematic angles and (I guess equally important) the cuts between them have to be chosen really carefully. I disagree that cinematic angles automatically destroy or decrease immersion, but one occasion where the player dies just because of a 'stupid' angle or cut and all immersion built up before is gone with the wind. I guess, everyone who has played one of these third person games will agree that these things can really screw the experience of a game.
Am I wrong in the assumption that most changes between cinematic angles in games are based on some kind of "zones" (e.g. player character is in zone A, use camera for zone A, moves into zone B, change camera to camera for zone B with some kind of or no transition and so on)? So there wouldn´t be a need to have some kind of dynamically "creating" dramatic viewing angles that maintain a good overview of the surroundings for the player, since the level designer would put the camera into place anyway and he should take care that the angle he chooses and the cuts he sets up by putting the zones into place fulfill the needs of the game / the current sequence of the game.
I imagine writing an algorithm that does actually create the cinematic angles and cuts fulfilling these needs would be quite a daunting task. Furthermore I don´t think it is possible to build such an algorithm that also does 'miraculously' fulfill the artistic vision a game designer might have for a portion of the game or an action sequence.

After all I can´t imagine anything like a FPS, RTS or RPG to use something like cinematic angles during gameplay, but perhaps my imagination might be quite limited in that direction. Still, most third person action titles already use cinematic angles to some extent while they use the 'standard' chase camera most of the time, but I think those sequences where other cameras are used work quite well most of the time and surely they add dramatic effect to the game.
Still, the "control confusion" sometimes kills that dramatic effect, but IIRC PoP "adresses" this by keeping the running direction of the hero after a cut until the player actually gives another input direction. This works pretty good in most of the cases, I think it works good in the cases where the player is given enough time to acommodate to the new angle.

Perhaps I brought nothing new to the discussion, I don´t know, I´m feeling confused.... ;)
Advertisement
Interesting read [smile]

As an idea - multiple camera views on screen.

Keep the main "interface" there (I like controlling my RTS' from a top-down view, I dislike the "freeform" 3D cameras) but make use of multiple views and try and composite some sort of final image that doesn't get in the way but does make for a better use of camerawork.

I've seen it a couple of times over the years, but never extensively nor in a way that matches the things discussed in this thread.

One example is XIII where with particular events in-game you get the comic-book cells appearing on the screen showing that particular event in more detail.

How about your first person shooter where you had an overlayed video with more cinematic content? Maybe a view from the outside the room showing the security guards talking to each other and your character hiding in the shadows in the background.

A RTS where that same overlayed camera depicts a cinematic view from the troop's perspective (or that cinematic view from the village as the tidal wave approaches).
The Battle for Middle-Earth features some video clips from the 3 LOTR movies in the lower-left corner of the interface. They are shown when some events are triggered.

I suppose one could have, instead of movie clips, a cinematic perspective of the scene with one or multiple cameras, just like the above AP sugested.
- blew
Quote:Original post by Anonymous Poster
As an idea - multiple camera views on screen.
OK, you really need to play the Fahrenheit (a.k.a. Indigo Prophecy demo) [grin]

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

Quote:Original post by Will F
Don't have too much to add, but I wanted to point out that if you're going to attempt a cinematic camera for a 3rd person game, you really owe it to yourself to play/study Ico and God of War. Usually I don't even notice the camera - but those two games stood out to me as the correct way to do it.


I was thinking about God of War too. They managed to design parts of that game in ways that made it seem like cinema - and I'm not talking about the cut scenes.
"I thought what I'd do was, I'd pretend I was one of those deaf-mutes." - the Laughing Man
Quote:Original post by Sneftel
Ah, but that's exactly why they could resolve many of those issues. You said it yourself: we're talking about cameras in the wrong language, using terms like "quaternions" and "splines". We need another layer of abstraction, so that we can use these guidelines directly, instead of just keeping them in mind while coding up our PD controllers.


Forgive me if parts of this are covered in earlier posts, I haven't had time to read them all.

There are other layers of abstraction, but usually the cost to calculate the camera position is extremely high (my PhD has been about addressing this point). As mentioned in my earlier post, encoding cinematic (or arbitrary guidelines) is a trivial process. The problem is that these other guidelines don't exist yet. For the interested reader, I could post my bibtex file that contains a lot of the reference details for almost all works on autonomous camera control (including cinematography).

Quote:Original post by remigius
Now, is it hard to do? Technically it shouldn't be, since most camera systems are capable of shooting at just about all angles that would be impossible for a real-world camera.


It doesn't seem hard, but actually deriving the camera position for interactive elements where you specify arbitrary image composition IS quite difficult and time-consuming. Maintaining the appropriate view (say 'over-the-shoulder' to use a cinematic rule) when the objects are moving in dynamic environments is difficult, especially resolving occlusion. Since the guidelines basically define the overall idea of the shot (e.g. over-the-shoulder), the camera basically transitions between them. However, encoding the overall idea of a shot into some that the camera can do automatically is difficult.

Quote:Original post by superpig
If we want to free up the camera for more artistic purposes, we need to begin by offloading the information that the player is relying on it to present to other means. Currently the only open avenues seem to be sound (which is underused anyway), force feedback (which isn't really a PC thing), and fixed screen elements like HUD. Step one is more innovative use of these.


Sound is completely under-utilized for conveying what's going on. There was a paper presented at the Australasian Interactive Entertainment 2005 conference on adapting music to match environmental action. I can't remember his name, but he was from the University of Queensland and had some really good ideas.

For those interested in the multi-camera alternative, I would direct you to the paper by William Bares "Intelligent Multi-Shot Visualization Interfaces for Dynamic 3D Worlds". In it he describes how to construct such multi-shot visualizations to maintain the correct spatial context while still shooting the primary targets as appropriate.

My apologies if I've missed the point (something I do often), but this is a discussion that I am very interested in.

And to the original poster: damn you! I'm seriously thinking about re-writing the "future work" part of my thesis based on this discussion :(.
Quote:Original post by takingsometime
For the interested reader, I could post my bibtex file that contains a lot of the reference details for almost all works on autonomous camera control (including cinematography).

Please, please do. [smile]
Quote:Original post by Sneftel
Please, please do. [smile]


I had to remove a couple of entries (not coming out until next year), but this is my collection of references on the topic (and some other miscellaneous stuff). Excuse the formatting, but I like to keep it organized :).

%%	thesis.bib%	==========%	STARTED: August 30, 2005%	EDITED: December 23, 2005%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2006																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%%%	Conference Proceedings%%%	Journals%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2005																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@misc{ageia2005physx,	author	= {Ageia Inc.},	title		= {{PhysX 2.2}},	year		= {2005},	URL			= {http://www.ageia.com/products/physx.html}}@misc{microsoft2005directx,	author	= {Microsoft Corporation},	title		= {{Microsoft DirectX 9.0}},	month		= {October},	year		= {2005},	URL			= {http://www.microsoft.com/windows/directx/default.aspx}}@misc{terathon2005c4,	author	= {Terathon Software},	title		= {{C4 Engine}},	URL			= {http://www.terathon.com}}%%	Books (and articles from books)%@book{hawkins2005real-time,	author 	= {Brian Hawkins},	title 	= {{Real-Time Cinematography for Games}},	editor 	= {},	publisher	= {Charles River Media},	month 	= {January 28},	year 		= {2005}}%%	Conference Proceedings%@inproceedings{bourne2005applying,	author 	= {Owen Bourne and Abdul Sattar},	title 	= {{Applying Constraint Weighting to Autonomous Camera Control}},	booktitle	= {Proceedings of The First Artificial Intelligence and Interactive Digital Entertainment Conference},	editor 	= {},	pages		= {3-8},	publisher	= {AAAI Press},	month 	= {June 1-3},	year 		= {2005},	address	= {Marina Del Ray, CA, USA}}@inproceedings{jhala2005a,	author 	= {Arnav Jhala and R. Michael Young},	title 	= {{A Discourse Planning Approach to Cinematic Camera Control for Narratives in Virtual Environments}},	booktitle	= {Proceedings of The National Conference of the American Association for Artificial Intelligence},	editor 	= {},	pages 	= {307-312},	publisher	= {AAAI Press},	month 	= {July 9-13},	year 		= {2005},	address	= {Pittsburgh, PA, USA}}@inproceedings{christie2005virtual,	author 	= {Marc Christie and Rumesh Machap and Jean-Marie Normand and Patrick Olivier and Jonathan Pickering},	title 	= {{Virtual Camera Planning: A Survey}},	booktitle	= {Proceedings of 5th International Symposium on SmartGraphics},	editor 	= {},	pages 	= {},	publisher	= {Springer},	month 	= {August 22-24},	year 		= {2005},	address	= {Frauenwoerth, Germany}}@inproceedings{bourne2005evolving,	author 	= {Owen Bourne and Abdul Sattar},	title 	= {{Evolving Behaviours for a Real-Time Autonomous Camera}},	booktitle	= {Proceedings of 2nd Australasian Conference on Interactive Entertainment},	editor 	= {Yusuf Pisan},	pages 	= {27-33},	publisher	= {},	month 	= {November 23-25},	year 		= {2005},	address	= {Sydney, Australia}}%%	Journals / Web%@article{wikipedia2005hysteresis,	author	= {Wikipedia},	title		= {{Hysteresis}},	journal	= {http://en.wikipedia.org/wiki/Hysteresis},	month		= {December 16},	year		= {2005}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2004																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@misc{epic2004unreal,	author	= {Epic Games / Digital Extremes},	title		= {{Unreal Tournament 2004}},	publisher	= {Atari},	month		= {March 16},	year		= {2004},	URL			= {http://www.unrealtournament.com}}@misc{pandemic2004full,	author	= {Pandemic Studios},	title		= {{Full Spectrum Warrior}},	publisher	= {THQ},	month		= {September 21},	year		= {2004},	URL			= {http://www.fullspectrumwarrior.com}}%%	Books (and articles from books)%@incollection{stone2004third-person,	author	= {Jonathan Stone},	title		= {{Third-Person Camera Navigation}},	booktitle	= {Game Programming Gems 4},	editor	= {Andrew Kirmse},	pages 	= {303-314},	publisher	= {Charles River Media},	month 	= {March 1},	year 		= {2004}}@book{vanverth2004essential,	author 	= {James M. Van Verth and Lars M. Bishop},	title 	= {{Essential Mathematics for Games and Interactive Applications: A Programmer's Guide}},	editor 	= {},	publisher	= {Morgan Kaufmann},	month 	= {March 25},	year 		= {2004}}@book{hoos2004stochastic,	author	= {Holger Hoos and Thomas St{\"u}tzle},	title		= {{Stochastic Local Search: Foundations and Applications}},	editor	= {},	publisher	= {Morgan Kaufmann},	month		= {September 16},	year		= {2004}}%%	Conference Proceedings%@inproceedings{lin2004cinematic,	author 	= {Ting-Chieh Lin and Zen-Chung Shih and Yu-Ting Tsai},	title 	= {{Cinematic Camera Control in 3D Computer Games}},	booktitle	= {Proceedings of 12th International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision (WSCG 2004)},	editor 	= {},	pages 	= {289-296},	publisher	= {},	month 	= {February 2-6},	year 		= {2004},	address	= {University of West Bohemia, Campus Bory, Plzen-Bory, Czech Republic}}@inproceedings{giors2004the,	author 	= {John Giors},	title 	= {{The Full Spectrum Warrior Camera System}},	booktitle	= {Proceedings of Game Developers Conference 2004},	editor 	= {},	pages 	= {},	publisher	= {},	month 	= {March 22-26},	year 		= {2004},	address	= {San Jose, CA, USA}}@inproceedings{bourne2004applying-a,	author 	= {Owen Bourne and Abdul Sattar},	title 	= {{Applying Constraint Satisfaction Techniques to 3D Camera Control}},	booktitle	= {Proceedings of 10th International Conference on Principles and Practice of Constraint Programming},	editor 	= {Mark Wallace},	pages 	= {811},	publisher	= {Springer},	month 	= {September 27 - October 1},	year 		= {2004},	address	= {Toronto, Canada}}@inproceedings{bourne2004applying-b,	author 	= {Owen Bourne and Abdul Sattar},	title 	= {{Applying Constraint Satisfaction Techniques to 3D Camera Control}},	booktitle	= {Proceedings of 17th Australian Joint Conference on Artificial Intelligence},	editor 	= {Geoffrey I. Webb and Xinghuo Yu},	pages 	= {658-669},	publisher	= {Springer},	month 	= {December 4-6},	year 		= {2004},	address	= {Cairns, Australia}}%%	Journals%@article{benhamou2004interval,	author 	= {Fr{\'e}d{\'e}ric Benhamou and Fr{\'e}d{\'e}ric Goualard and {\'E}ric Langu{\'e}nou and Marc Christie},	title 	= {{Interval Constraint Solving for Camera Control and Motion Planning}},	journal	= {ACM Transactions on Computational Logic},	volume 	= {5},	number 	= {4},	pages 	= {732-767},	publisher	= {ACM Press},	month		= {October},	year 		= {2004}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2003																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%@mastersthesis{hornung2003autonomous,	author	= {Alexander Hornung},	title 	= {{Autonomous Real-Time Camera Agents in Interactive Narratives and Games}},	school	= {Rheinisch-Westf{\"a}lische Technische Hochschule Aachen},	month		= {March 6},	year		= {2003}}@book{dechter2003constraint,	author	= {Rina Dechter},	title		= {{Constraint Processing}},	editor	= {},	publisher	= {Morgan Kaufmann},	month		= {May},	year		= {2003}}@phdthesis{halper2003supportive,	author	= {Nicolas Halper},	title 	= {{Supportive Presentation for Computer Games}},	school	= {University of Magdeburg},	month		= {October 17},	year		= {2003}}@incollection{forrester2003intelligent,	author 	= {Euan Forrester},	title 	= {{Intelligent Steering Using PID Controllers}},	booktitle	= {AI Game Programming Wisdom 2},	editor 	= {Steve Rabin},	pages 	= {171-178},	publisher	= {Charles River Media},	month 	= {December 1},	year 		= {2003}}@incollection{carlisle2003an,	author 	= {Phil Carlisle},	title 	= {{An AI Approach to Creating an Intelligent Camera System}},	booktitle	= {AI Game Programming Wisdom 2},	editor 	= {Steve Rabin},	pages 	= {179-185},	publisher	= {Charles River Media},	month 	= {December 1},	year 		= {2003}}@incollection{kharkar2003a,	author 	= {Sandeep V. Kharkar},	title 	= {{A Modular Camera Architecture for Intelligent Control}},	booktitle	= {AI Game Programming Wisdom 2},	editor 	= {Steve Rabin},	pages 	= {549-554},	publisher	= {Charles River Media},	month 	= {December 1},	year 		= {2003}}%%	Conference Proceedings%@inproceedings{christie2003a,	author 	= {Marc Christie and {\'E}ric Langu{\'e}nou},	title 	= {{A Constraint-based Approach to Camera Path Planning}},	booktitle	= {Proceedings of 3rd International Symposium on Smart Graphics},	editor 	= {Andreas Butz and Antonio Kr{\"u}ger and Patrick Olivier},	pages 	= {172-181},	publisher	= {Springer},	month 	= {July 2-4},	year 		= {2003},	address	= {Heidelberg, Germany}}@inproceedings{hornung2003an,	author 	= {Alexander Hornung and Gerhard Lakemeyer and Georg Trogemann},	title 	= {{An Autonomous Real-Time Camera Agent for Interactive Narratives and Games}},	booktitle	= {Proceedings of Fourth International Workshop on Intelligent Agents (IVA 2003)},	editor 	= {},	pages 	= {236-243},	publisher	= {Springer},	month 	= {September 15-17},	year 		= {2003},	address	= {Kloster Irsee, Germany}}@inproceedings{friedman2003automating,	author 	= {Doron Friedman},	title 	= {{Automating Spielberg}},	booktitle	= {Proceedings of EVA JML Symposium},	editor 	= {},	pages 	= {1-10},	publisher	= {},	month 	= {September 22-23},	year 		= {2003},	address	= {London, United Kingdom}}%%	Journals / Web%@article{hawkins2003creatinga,	author	= {Brian Hawkins},	title		= {{Creating an Event-Driven Cinematic Camera, Part One}},	journal	= {http://www.gamasutra.com/features/20030108/hawkins{\_}01.htm},	month		= {January 8},	year		= {2003}}@article{hawkins2003creatingb,	author	= {Brian Hawkins},	title		= {{Creating an Event-Driven Cinematic Camera, Part Two}},	journal	= {http://www.gamasutra.com/features/20030110/hawkins{\_}01.htm},	month		= {January 10},	year		= {2003}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2002																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@misc{nintendo2002super,	author	= {Nintendo EAD},	title		= {{Super Mario Sunshine}},	publisher	= {Nintendo},	month		= {August 26},	year		= {2002},	URL			= {http://www.supermariosunshine.com}}%%	Books (and articles from books)%@incollection{kharkar2002camera,	author 	= {Sandeep V. Kharkar},	title 	= {{Camera AI for Replays}},	booktitle	= {AI Game Programming Wisdom},	editor 	= {Steve Rabin},	pages 	= {472-478},	publisher	= {Charles River Media},	month 	= {March 12},	year 		= {2002}}@book{akenine-moller2002real-time,	author 	= {Tomas Akenine-M{\"o}ller and Eric Haines},	title 	= {{Real-Time Rendering (Second Edition)}},	editor 	= {},	publisher	= {A K Peters},	month 	= {July},	year 		= {2002}}@phdthesis{beckhaus2002dynamic,	author	= {Steffi Beckhaus},	title 	= {{Dynamic Potential Fields for Guided Exploration in Virtual Environments}},	school	= {University of Magdeburg},	month		= {September},	year		= {2002}}@book{russell2002artificial,	author 	= {Stuart Russell and Peter Norvig},	title 	= {{Artificial Intelligence: A Modern Approach (Second Edition)}},	editor 	= {},	publisher	= {Prentice Hall},	month 	= {December},	year 		= {2002}}%%	Conference Proceedings%@inproceedings{mcdermott2002storyboard,	author 	= {Scott McDermott and Junwei Li and William Bares},	title 	= {{Storyboard Frame Editing for Cinematic Composition}},	booktitle	= {Proceedings of 2002 International Conference on Intelligent User Interfaces},	editor 	= {},	pages 	= {206-207},	publisher	= {},	month 	= {January 13-16},	year 		= {2002},	address	= {San Francisco, CA, USA}}@inproceedings{kennedy2002planning,	author 	= {Kevin Kennedy and Robert E. Mercer},	title 	= {{Planning Animation Cinematography and Shot Structure to Communicate Theme and Mood}},	booktitle	= {Proceedings of 2nd International Symposium on Smart Graphics},	editor 	= {},	pages 	= {1-8},	publisher	= {ACM Press},	month 	= {June 11-13},	year 		= {Hawthorne, NY, USA},	address	= {2002}}@inproceedings{friedman2002knowledge-based,	author 	= {Doron Friedman and Yishai Feldman},	title 	= {{Knowledge-Based Formalization of Cinematic Expression and its Application to Animation}},	booktitle	= {Proceedings of Eurographics 2002},	editor 	= {},	pages 	= {163-168},	publisher	= {},	month 	= {September 2-6},	year 		= {2002},	address	= {Saarbr{\"u}cken, Germany}}@inproceedings{christie2002modeling,	author 	= {Marc Christie and {\'E}ric Langu{\'e}nou and Laurent Granvilliers},	title 	= {{Modeling Camera Control with Constrained Hypertubes}},	booktitle	= {Proceedings of 8th International Conference on Principles and Practice on Constraint Programming},	editor 	= {Pascal Van Hentenryck},	pages 	= {618-632},	publisher	= {},	month 	= {September 9-13},	year 		= {2002},	address	= {Ithaca, NY, USA}}%%	Journals%@article{marchand2002controlling,	author 	= {{\'E}ric Marchand and Nicolas Courty},	title 	= {{Controlling a camera in a virtual environment}},	journal	= {The Visual Computer},	volume 	= {18},	number 	= {1},	pages 	= {1-19},	publisher	= {Springer},	month		= {January 24},	year 		= {2002}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2001																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@misc{laboratory2001super,	author	= {HAL Laboratory},	title		= {{Super Smash Bros. Melee}},	publisher	= {Nintendo},	month		= {December 3},	year		= {2001},	URL			= {{http://www.nintendo.com/gamemini?gameid=m-Game-0000-587&}}}%%	Books (and articles from books)%@book{cormen2001introduction,	author 	= {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest and Clifford Stein},	title 	= {{Introduction to Algorithms (Second Edition)}},	editor 	= {},	publisher	= {MIT Press},	month 	= {September},	year 		= {2001}}@incollection{rabin2001classic,	author 	= {Steve Rabin},	title 	= {{Classic Super Mario 64 Third-Person Control and Animation}},	booktitle	= {Game Programming Gems 2},	editor 	= {Mark DeLoura},	pages 	= {425-432},	publisher	= {Charles River Media},	month 	= {October 1},	year 		= {2001}}%%	Conference Proceedings%@inproceedings{bares2001generating,	author 	= {William Bares and Byungwoo Kim},	title 	= {{Generating Virtual Camera Compositions}},	booktitle	= {Proceedings of 2001 International Conference on Intelligent User Interfaces},	editor 	= {},	pages 	= {9-12},	publisher	= {},	month 	= {January 14-17},	year 		= {2001},	address	= {Santa Fe, NM, USA}}@inproceedings{beckhaus2001guideda,	author 	= {Steffi Beckhaus and Gerhard Eckel and Thomas Strothotte},	title 	= {{Guided Exploration in Virtual Environments}},	booktitle	= {Proceedings of Electronic Imaging},	editor 	= {Andrew J. Woods and Mark T. Bolas and John O. Merritt and Stephen A. Benton},	pages 	= {426 - 435},	publisher	= {SPIE Press},	month 	= {January 21 - 26},	year 		= {2001},	address	= {San Jose, CA, USA}}@inproceedings{amerson2001real-time,	author 	= {Daniel Amerson and Shaun Kime},	title 	= {{Real-time Cinematic Camera Control for Interactive Narratives}},	booktitle	= {Working Notes of the AAAI Spring Symposium on Artificial Intelligence and Interactive Entertainment},	editor 	= {},	pages 	= {1-4},	publisher	= {AAAI Press},	month 	= {March 26-28},	year 		= {2001},	address	= {Stanford, CA, USA}}@inproceedings{young2001an,	author 	= {R. Michael Young},	title 	= {{An Overview of the Mimesis Architecture: Integrating Intelligent Narrative Control into an Existing Game Environment}},	booktitle	= {Working Notes of the AAAI Spring Symposium on Artificial Intelligence and Interactive Entertainment},	editor 	= {},	pages 	= {77-81},	publisher	= {AAAI Press},	month 	= {March 26-28},	year 		= {2001},	address	= {Stanford, CA, USA}}@inproceedings{courty2001computer,	author 	= {Nicolas Courty and {\'E}ric Marchand},	title 	= {{Computer animation: A new application for image-based visual servoing}},	booktitle	= {Proceedings of 2001 IEEE International Conference on Robotics and Automation (ICRA 2001)},	editor 	= {},	pages 	= {223-228},	publisher	= {IEEE Press},	month 	= {May 21-26},	year 		= {2001},	address	= {Seoul, Korea}}%%	Journals / Web%@article{luban2001turning,	author	= {Pascal Luban and Jo{\"e}l Meziane},	title		= {{Turning a Linear Story into a Game: The Missing Link between Fiction and Interactive Entertainment}},	journal	= {http://www.gamasutra.com/features/20010615/luban{\_}01.shtml},	month		= {June 15},	year		= {2001}}@article{halper2001a,	author 	= {Nicolas Halper and Ralf Helbing and Thomas Strothotte},	title 	= {{A Camera Engine for Computer Games: Managing the Trade-Off Between Constraint Satisfaction and Frame Coherence}},	journal	= {Computer Graphics Forum},	volume 	= {20},	number 	= {3},	pages 	= {174-183},	publisher	= {Blackwell Publishers},	month		= {September},	year 		= {2001}}@article{corrigan2001a,	author 	= {Andrew Corrigan},	title 	= {{A Simple Third-Person Camera Using The Polar Coordinate System}},	journal	= {http://www.gamedev.net/reference/articles/article1591.asp},	month		= {November 13},	year 		= {2001}}@article{beckhaus2001guidedb,	author 	= {Steffi Beckhaus and Felix Ritter and Thomas Strothotte},	title 	= {{Guided Exploration with Dynamic Potential Fields: The CubicalPath System}},	journal	= {Computer Graphics Forum},	volume 	= {20},	number 	= {4},	pages 	= {201 - 210},	publisher	= {Blackwell Publishers},	month		= {December},	year 		= {2001}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		2000																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@misc{sega-am22000shenmue,	author	= {Sega-AM2},	title		= {{Shenmue}},	publisher	= {SEGA},	month		= {November 8},	year		= {2000},	URL			= {http://www.shenmue.com}}%%	Books (and articles from books)%@incollection{olsen2000interpolation,	author 	= {John Olsen},	title 	= {{Interpolation Methods}},	booktitle	= {Game Programming Gems},	editor 	= {Mark DeLoura},	pages 	= {141-149},	publisher	= {Charles River Media},	month 	= {August},	year 		= {2000}}@incollection{paull2000the,	author 	= {David Paull},	title 	= {{The Vector Camera}},	booktitle	= {Game Programming Gems},	editor 	= {Mark DeLoura},	pages 	= {366-370},	publisher	= {Charles River Media},	month 	= {August},	year 		= {2000}}@incollection{treglia2000camera,	author 	= {Dante Treglia {II}},	title 	= {{Camera Control Techniques}},	booktitle	= {Game Programming Gems},	editor 	= {Mark DeLoura},	pages 	= {371-379},	publisher	= {Charles River Media},	month 	= {August},	year 		= {2000}}%%	Conference Proceedings%@inproceedings{bares2000a,	author 	= {William H. Bares and Somying Thainimit and Scott McDermott},	title 	= {{A Model for Constraint-Based Camera Planning}},	booktitle	= {Proceedings of AAAI Spring Symposium on Smart Graphics},	editor 	= {},	pages 	= {84-91},	publisher	= {},	month 	= {March 20-22},	year 		= {2000},	address	= {Stanford, CA, USA}}@inproceedings{halper2000camplan,	author 	= {Nicolas Halper and Patrick Olivier},	title 	= {{CAMPLAN: A Camera Planning Agent}},	booktitle	= {Proceedings of AAAI Spring Symposium on Smart Graphics},	editor 	= {},	pages 	= {92-100},	publisher	= {},	month 	= {March 20-22},	year 		= {2000},	address	= {Stanford, CA, USA}}@inproceedings{marchand2000image-based,	author 	= {{\'E}ric Marchand and Nicolas Courty},	title 	= {{Image-Based Virtual Camera Motion Strategies}},	booktitle	= {Proceedings of Graphics Interface (GI 2000)},	editor 	= {},	pages 	= {69-76},	publisher	= {},	month 	= {May 15-17},	year 		= {2000},	address	= {Montreal, Quebec, Canada}}@inproceedings{tomlinson2000expressive,	author 	= {Bill Tomlinson and Bruce Blumberg and Delphine Nain},	title 	= {{Expressive Autonomous Cinematography for Interactive Virtual Environments}},	booktitle	= {Proceedings of Fourth International Conference on Intelligent Agents},	editor 	= {},	pages 	= {317-324},	publisher	= {},	month 	= {June 3-7},	year 		= {2000},	address	= {Barcelona, Spain}}@inproceedings{laird2000human-level,	author	= {John E. Laird and Michael van Lent},	title		= {{Human-Level AI's Killer Application: Interactive Computer Games}},	booktitle	= {Proceedings of Seventeenth National Conference on Artificial Intelligence and Twelfth Conference on Innovative Applications of Artificial Intelligence},	editor	= {},	pages		= {1171-1178},	publisher	= {AAAI Press},	month		= {July 30 - August 3},	year		= {2000},	address	= {Austin, TX, USA}}@inproceedings{beckhaus2000cubicalpath,	author 	= {Steffi Beckhaus and Felix Ritter and Thomas Strothotte},	title 	= {{CubicalPath - Dynamic Potential Fields for Guided Exploration in Virtual Environments}},	booktitle	= {Proceedings of Pacific Graphics},	editor 	= {Brian A. Barsky and Yoshihisa Shinagawa and Wenping Wang},	pages 	= {387 - 395},	publisher	= {},	month 	= {October 3 - 5},	year 		= {2000},	address	= {Hong Kong}}@inproceedings{bares2000virtual,	author 	= {William Bares and Scott McDermott and Christina Boudreaux and Somying Thainimit},	title 	= {{Virtual 3D Camera Composition from Frame Constraints}},	booktitle	= {Proceedings of 8th ACM International Conference on Multimedia},	editor 	= {},	pages 	= {177-186},	publisher	= {},	month 	= {October 30 - November 3},	year 		= {2000},	address	= {Los Angeles, CA, USA}}%%	Journals%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		1999																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%%%	Conference Proceedings%@inproceedings{bares1999intelligent,	author 	= {William H. Bares and James C. Lester},	title 	= {{Intelligent Multi-Shot Visualization Interfaces for Dynamic 3D Worlds}},	booktitle	= {Proceedings of 1999 International Conference on Intelligent User Interfaces},	editor 	= {},	pages 	= {119-126},	publisher	= {},	month 	= {January 5-8},	year 		= {1999},	address	= {Los Angeles, CA, USA}}@inproceedings{reynolds1999steering,	author 	= {Craig W. Reynolds},	title 	= {{Steering Behaviors For Autonomous Characters}},	booktitle	= {Proceedings of Game Developers Conference},	editor 	= {},	pages 	= {763-782},	publisher	= {},	month 	= {},	year 		= {1999},	address	= {San Jose, CA, USA}}%%	Journals%@article{vilanova1999viren,	author 	= {Anna Vilanova and Andreas K{\"o}nig and Eduard Gr{\"o}ller},	title 	= {{VirEn: A Virtual Endoscopy System}},	journal	= {Machine GRAPHICS \& VISION},	volume 	= {8},	number 	= {3},	pages 	= {469-487},	publisher	= {},	month		= {},	year 		= {1999}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		1998																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%@book{poole1998computational,	author 	= {David Poole and Alan Mackworth and Randy Goebel},	title 	= {{Computational Intelligence: A Logical Approach}},	editor 	= {},	publisher	= {Oxford University Press},	month 	= {January},	year 		= {1998}}@techreport{dechter1998backtracking,	author	= {Rina Dechter and Daniel Frost},	title 	= {{Backtracking algorithms for constraint satisfaction problems - a tutorial survey}},	institution	= {University of California, Irvine},	month		= {April 20},	year		= {1998}}%%	Conference Proceedings%@inproceedings{bares1998task-sensitive,	author 	= {William H. Bares and Luke S. Zettlemoyer and Dennis W. Rodriguez and James C. Lester},	title 	= {{Task-Sensitive Cinematography Interfaces for Interactive 3D Learning Environments}},	booktitle	= {Proceedings of 1998 International Conference on Intelligent User Interfaces},	editor 	= {},	pages 	= {81-88},	publisher	= {},	month 	= {January 6-9},	year 		= {1998},	address	= {San Francisco, CA, USA}}@inproceedings{bares1998realtime,	author 	= {William H. Bares and Jo{\"e}l P. Gr{\'e}goire and James C. Lester},	title 	= {{Realtime Constraint-Based Cinematography for Complex Interactive 3D Worlds}},	booktitle	= {Proceedings of Fifteenth National Conference on Artificial Intelligence and Tenth Innovative Applications of Artificial Intelligence Conference (AAAI/IAAI)},	editor 	= {},	pages 	= {1101-1106},	publisher	= {AAAI Press},	month 	= {July 26-30},	year 		= {1998},	address	= {Madison, WI, USA}}@inproceedings{languenou1998the,	author 	= {E. Langu{\'e}nou and F. Benhamou and F. Goualard and M. Christie},	title 	= {{The Virtual Cameraman: an Interval Constraint Based Approach}},	booktitle	= {Proceedings of 13th European Conference on Artificial Intelligence (Constraint Techniques for Artistic Applications Workshop)},	editor 	= {},	pages 	= {},	publisher	= {},	month 	= {August 23-28},	year 		= {1998},	address	= {Brighton, United Kingdom}}%%	Journals / Web%@article{bobick1998rotating,	author	= {Nick Bobick},	title		= {{Rotating Objects Using Quaternions}},	journal	= {http://www.gamasutra.com/features/19980703/quaternions{\_}01.htm},	month		= {July 3},	year		= {1998}}@article{bartak1998online,	author	= {Roman Bart{\'a}k},	title		= {{On-Line Guide to Constraint Programming}},	journal	= {http://kti.ms.mff.cuni.cz/~bartak/constraints/index.html},	month		= {},	year		= {1998}}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		1997																																			%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%@book{lapin1997modern,	author 	= {Lawrence L. Lapin},	title 	= {{Modern Engineering Statistics}},	editor 	= {},	publisher	= {Duxbury Press},	month 	= {January},	year 		= {1997}}%%	Conference Proceedings%@inproceedings{bares1997cinematographic,	author 	= {William H. Bares and James C. Lester},	title 	= {{Cinematographic User Models for Automated Realtime Camera Control in Dynamic 3D Environments}},	booktitle	= {Proceedings of Sixth International Conference on User Modeling (UM97)},	editor 	= {},	pages 	= {215-226},	publisher	= {},	month 	= {June 2-5},	year 		= {1997},	address	= {Chia Laguna, Sardinia, Italy}}@inproceedings{bares1997realtime,	author 	= {William H. Bares and James C. Lester},	title 	= {{Realtime Generation of Customized 3D Animated Explanations for Knowledge-Based Learning Environments}},	booktitle	= {Proceedings of Fourteenth National Conference on Artificial Intelligence and Ninth Innovative Applications of Artificial Intelligence Conference (AAAI/IAAI)},	editor 	= {},	pages 	= {347-354},	publisher	= {AAAI Press},	month 	= {July 27-31},	year 		= {1997},	address	= {Providence, RI, USA}}@inproceedings{hong1997virtual,	author 	= {Lichan Hong and Shigeru Muraki and Arie Kaufman and Dirk Bartz and Taoson He},	title 	= {{Virtual Voyage: Interactive Navigation in the Human Colon}},	booktitle	= {Proceedings of 24th Annual Conference on Computer Graphics (SIGGRAPH 97)},	editor 	= {},	pages 	= {27-34},	publisher	= {ACM Press},	month 	= {August 3-8},	year 		= {1997},	address	= {Los Angeles, CA, USA}}%%	Journals%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%																																							%%		1996 and earlier																													%%																																							%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	Books (and articles from books)%@book{arijon1976grammar,	author 	= {Daniel Arijon},	title 	= {{Grammar of the Film Language}},	editor 	= {},	publisher	= {Silman-James Press},	month 	= {September},	year 		= {1991 (originally published 1976)}}@phdthesis{drucker1994intelligent-thesis,	author	= {Steven Mark Drucker},	title 	= {{Intelligent Camera Control for Graphical Environments}},	school	= {Massachusetts Institute of Technology},	month		= {June},	year		= {1994}}%%	Conference Proceedings%@inproceedings{reynolds1987flocks,	author 	= {Craig W. Reynolds},	title 	= {{Flocks, Herds, and Schools: A Distributed Behavioral Model}},	booktitle	= {Proceedings of 14th Annual Conference on Computer Graphis (SIGGRAPH 87)},	editor 	= {},	pages 	= {25-34},	publisher	= {ACM Press},	month 	= {July},	year 		= {1987},	address	= {Anaheim, CA, USA}}@inproceedings{ware1990exploration,	author 	= {Colin Ware and Steven Osborne},	title 	= {{Exploration and Virtual Camera Control in Virtual Three Dimensional Environments}},	booktitle	= {Proceedings of 1990 Symposium on Interactive 3D Graphics},	editor 	= {},	pages 	= {175-183},	publisher	= {ACM Press},	month 	= {March},	year 		= {1990},	address	= {Snowbird, UT, USA}}@inproceedings{drucker1992cinema,	author 	= {Steven M. Drucker and Tinsley A. Galyean and David Zeltzer},	title 	= {{CINEMA: A System for Procedural Camera Movements}},	booktitle	= {Proceedings of 1992 Symposium on Interactive 3D Graphics},	editor 	= {},	pages 	= {67-70},	publisher	= {},	month 	= {March 29 - April 1},	year 		= {1992},	address	= {Cambridge, MA, USA}}@inproceedings{phillips1992automatic,	author 	= {Cary B. Phillips and Norman I. Badler and John Granieri},	title 	= {{Automatic Viewing Control for 3D Direct Manipulation}},	booktitle	= {Proceedings of 1992 Symposium on Interactive 3D Graphics},	editor 	= {},	pages 	= {71-74},	publisher	= {},	month 	= {March 29 - April 1},	year 		= {1992},	address	= {Cambridge, MA, USA}}@inproceedings{gleicher1992through-the-lens,	author 	= {Michael Gleicher and Andrew Witkin},	title 	= {{Through-the-Lens Camera Control}},	booktitle	= {Proceedings of 19th Annual Conference on Computer Graphics and Interactive Techniques},	editor 	= {James J. Thomas},	pages 	= {331-340},	publisher	= {},	month 	= {July},	year 		= {1992},	address	= {Chicago, IL, USA}}@inproceedings{drucker1994intelligent,	author 	= {Steven M. Drucker and David Zeltzer},	title 	= {{Intelligent Camera Control in a Virtual Environment}},	booktitle	= {Proceedings of Graphics Interface '94},	editor 	= {},	pages 	= {190-199},	publisher	= {},	month 	= {May 18-20},	year 		= {1994},	address	= {Banff, Alberta, Canada}}@inproceedings{drucker1995camdroid,	author 	= {Steven M. Drucker and David Zeltzer},	title 	= {{CamDroid: A System for Implementing Intelligent Camera Control}},	booktitle	= {Proceedings of 1995 Symposium on Interactive 3D Graphics},	editor 	= {},	pages 	= {139-144},	publisher	= {},	month 	= {April 9-12},	year 		= {1995},	address	= {Monterey, CA, USA}}@inproceedings{christianson1996declarative,	author 	= {David B. Christianson and Sean E. Anderson and Li-wei He and Daniel S. Weld and Michael F. Cohen and David H. Salesin},	title 	= {{Declarative Camera Control for Automatic Cinematography}},	booktitle	= {Proceedings of Thirteenth National Conference on Artificial Intelligence (AAAI 96)},	editor 	= {},	pages 	= {148-155},	publisher	= {AAAI Press},	month 	= {August 4-8},	year 		= {1996},	address	= {Portland, OR, USA}}@inproceedings{he1996the,	author 	= {Li-wei He and Michael F. Cohen and David H. Salesin},	title 	= {{The Virtual Cinematographer: A Paradigm for Automatic Real-Time Camera Control and Directing}},	booktitle	= {Proceedings of 23rd Annual Conference on Computer Graphics (SIGGRAPH 96)},	editor 	= {},	pages 	= {217-224},	publisher	= {ACM Press},	month 	= {August 4-9},	year 		= {1996},	address	= {New Orleans, LA, USA}}%%	Journals%


This took me many years to collate, so please appreciate it.
That's a very handy list. Thank you.

Quote:Original post by takingsometime
There are other layers of abstraction, but usually the cost to calculate the camera position is extremely high (my PhD has been about addressing this point). As mentioned in my earlier post, encoding cinematic (or arbitrary guidelines) is a trivial process. The problem is that these other guidelines don't exist yet.


That's exactly the sort of thing I was writing about in my Journal back in the day. Mind if quote some bits?

Quote:
I can remember reading maybe one or two articles on camera control - something on Gamasutra about an AI for dramatic camera work, and I think there was something in GPG. But I don't even recall the basic stuff - you know, how to handle the camera being pushed into a wall, how to deal with small spaces, how to make sure that the player is actually kept visible on the bloody screen in the middle of a fight against four or five pretty strong enemies... (GRAAAAGH)

A camera controller has two aims:

1) Make it as easy as possible for the player to play the game (i.e. that they're fighting the AI creatures rather than the interface)
2) Make the game look good

I'm thinking it might be possible to derive from each aim a number of rules - for instance, "the player's model must always be visible," or, "the camera must not violently switch angles." Once you've got those rules, you can begin to take a given game state, eliminate certain volumes, promote others, until you can pick a result. Add things like temporal coherence into the mix and you may just have a decent system on your hands.


Quote:
The camera determines the portion of the game world's dataset that is presented to the player visually - it's an information presenter. In order to be most useful to the player, the camera must present the most useful information.

There is also the artistic aspect to consider. Generally one wishes to maximize a game's visual appearance; you can normal-map as many intricate carvings as you want, but if the camera never looks at them, it's wasted effort. So, we also want to maximize the aesthetic aspects of what the camera displays - use cool angles, play on the environment, etc.

So, let's consider a pair of continuous heuristic functions: Useful(P, D) and Pretty(P, D), where P is a position in the game world and D is a viewing direction. The former returns a value representing the usefulness of that shot to the player - a shot which shows the player, where he is going, where he has come from, and the enemies he's in the middle of fighting, would score higher than a shot which is over the other side of the game world. The second returns a score for the "coolness" of the shot. We seek to find P and D such that the values of these functions are maximized.

That's a pretty well defined problem, mathematically, I reckon. The next problem, then, is defining the functions Useful(P, D) and Pretty(P, D).

We can define the "usefulness" of a camera shot as the sum total "usefulness" of the information it presents. So, any kind of heuristic function will depend on what the player finds to be useful information.

Certain things will probably be *always* useful - things like the player's current location. Other things will change depending on the situation; if the player's being chased down a long hallway, it may be more useful to show the monsters running up behind him than the empty hallway ahead - while if there are obstacles ahead, they'll want to be able to see where they're going. And yet more things will depend purely on the player's preference.


Quote:So... the Useful(P, D) function.

The particular things that fall into each of the categories I established in my previous post (constant, situation-dependent, and user-defined) will be game-dependent, I think that's pretty obvious. But I'm wondering - perhaps there are yet more common elements that could be worked out of the problem? I'm thinking specifically of the types of pieces of information we'd want to present to the player:

  • Position. The player will usually find it helpful to know the positions of certain things - his own avatar, the monsters he's fighting, the powerups in his vicinity, etc.
  • Orientation. If the player wants to shoot at something, he's going to need to know which direction he's facing it. Likewise, if an enemy's about to swing a sword, he'll want to know if that sword is pointing in his direction or not.
  • Action/Status. The player will want to know what certain entities are doing. I know my Prince is standing above the retractable spikes; I know he's facing east. But is he impaled on the spikes, or has he trodden softly such as not to trigger them? Similarly, is the monster sleeping or looking at me with ever-burning hatred?
  • Potential. Both information about negative potential - an approaching threat or obstacle - and positive potential - a possible escape route. This is more subtle than simply allowing the element to appear on screen, I fear - showing me the end of a dangling rope would inform me that the rope exists, but unless I can see that it leads up to a way out, I may well just ignore it.


Given those definitions, it may be possible to begin building a framework for the heuristic Useful(P, D) function. We begin defining rules, relating characteristics to their importance:

POSITION of $Player -> 100pts
ORIENTATION of $Player -> 100pts
ACTION of $Player -> 50pts (not so important because the player will frequently *know* what their avatar is doing - because they just told him to do it)
POTENTIAL of $EnclosingSpikedWall -> 30pts
POTENTIAL of $WestCorridor -> 40pts
POTENTIAL of $RopeLadderToCeiling -> 40pts

We can then being scoring shots - a camera position/orientation which shows where the player's standing and which way he's facing , but is distant enough that the action is not easily recognisable, but shows the rope ladder leading up to a hole in the ceiling and safety, scores 100+100+40 = 240 points. Similarly, a shot which shows the player's position/orientation plus the negative potential of the spiked wall scores 230 points; of the two, the camera will be more inclined to focus on the player's options than the encroaching peril (which is a very positive attitude for a camera, I must say). For veteran players, nothing're more annoying than having to rely on a rookie "cameraman" who doesn't keep a cool head in a tough situ; for the novices, a camera which helps guide them to making the correct decisions is something they'll be grateful for.

The numbers would need balancing/tweaking, of course, but that's the principle of it. Identify elements within the scene that may interest the player, and weight them according to their importance at that moment. That's where we bring our constant/dependent/userdefined categories back in, btw.

I should note that this has wider implications on development than just the code for the camera system - it affects content development as well. Level designers would need to "flag" things like the potential escape routes or dangers in the above example. And the artists may need to provide extra data concerning things like orientation - otherwise, how can the system handle a model that looks the same from many angles (such as a square block with a switch on it - how can the system be told that particular orientations of the model are more important than others)? A similar thing goes for a distance-based 'Action' measurement, particularly when LOD is involved; the artists would need to describe the barrier beyond which a given action is not recognisable, as it may very depending on orientation and light level.

There are also certain global factors that it would be good to measure and apply, such as the "urgency" of the game state. As the water level rises or the enemies get closer, the camera may be further weighted towards solutions than problems, "urging" the player to save themselves before it's too late. Scene lighting may also be a major factor - it's all very well pointing the camera at a snoring enemy in the darkness, but if the player can't see them then you might as well not bother. (You could even detract from the gaming experience by giving away the location of the "scary noise in the darkness").

That's probably enough on the Useful(P, D) heuristic function. How about Pretty(P, D)?

Now, this is where things can start getting really subjective. A camera system with aesthetic style? You might as well just install a positronic brain and be done with it! (Of course, it'd get pains in all the diodes down its left arm immediately after release).

How "good" and "bad" aesthetic shots are defined will depend completely upon your project. Perhaps your art style is suited to wide, open shots; perhaps it's better focusing in on the sublime character artwork, and letting the only-average environment fade away into the background.

There's a *massive* load out there on photographic/cinematographic techniques. I know very little of it; bishop_pass once explained something about the "rule of thirds," the idea that you should aim for picture elements to match up with horizontal/vertical lines drawn at thirds across the picture. That's about the sum total of my knowledge.

But still, there must be certain shapes and elements to aim for? Certain assets within the scene that the artists spent weeks on, making it intricately detailed, and that should be shown off? I wonder if such things could be marked out, and a scoring system much like for the Useful(P, D) function could be set up - 10 points for framing the scene with a hexagonal window, 40 points for having the angel statue close up on the left side of the frame. And so on.

I'm really not an artist (as anyone who has seen my exploits with smart_idiot's paint client will tell you), so I should probably stop rambling before I embarass myself. But still, there's a lot more to cover - I've hardly even mentioned camera *movements*, for example. What kind of movements are acceptable and what are not? When? If all we do is move between high-scoring Useful()/Pretty() points, how low can the score drop on the points inbetween? And so on.

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

Quote:Original post by takingsometime
Quote:Original post by remigius
...


It doesn't seem hard, but actually deriving the camera position for interactive elements where you specify arbitrary image composition IS quite difficult and time-consuming. Maintaining the appropriate view (say 'over-the-shoulder' to use a cinematic rule) when the objects are moving in dynamic environments is difficult, especially resolving occlusion. Since the guidelines basically define the overall idea of the shot (e.g. over-the-shoulder), the camera basically transitions between them. However, encoding the overall idea of a shot into some that the camera can do automatically is difficult.


I don't know... The true difficulty here still seems to lie primarily in the appropriate use of the technology, as I pointed out. Sure, there are some things (like occlusion) that can make the implementation a bit more difficult, but all in all, it shouldn't be too hard to implement a camera system that can follow the typical cinematic rules. After all, it mainly comes down to actually limiting the virutal game camera's abilities to take real-world shots, since it can -by default- be positioned everywhere, with any possible perpective.

Quote:[iOriginal post by superpig


The next problem, then, is defining the functions Useful(P, D) and Pretty(P, D).

It's a problem for which you will not find a solution, simply because both the Useful and Pretty values (and any terms you may wish to substitute) are very subjective. Of course you might argue that art, gameplay and stuff like that are also subjective, but these are inherently the things that make the game what it is. I don't think the camera work should be a fixed part of the game experience as well. A game should be interactive, giving the player as much control over it as possible. Why then would you want to direct the camera, when the player can take care of this himself?

I'm a bit surprised nobody took on the point I qouted from the Gamer's Manifesto. I fully agree with it and I believe it makes a strong argument against the (overuse of) cinematic camera's in games. For cutscenes, I think they're just fine. But the camera shouldn't start revolving around me in matrix-style slowmotion, simply because I made a jump the programmers/artist/designers found cool. And it'd be even worse if effects like this can't be turned off (as in NFSU on the XBox). Sure, it shows of the pretty graphics and cool features, but it grows old real fast.

I as a player will be the judge of what I think is cool and how I want to look at it. I believe that's the main point in playing an interactive experience that any good game should be.
Rim van Wersch [ MDXInfo ] [ XNAInfo ] [ YouTube ] - Do yourself a favor and bookmark this excellent free online D3D/shader book!

This topic is closed to new replies.

Advertisement