Forum

American McGee Alice mental exercise

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

Can this game/mod be done in QC easily?

yes, in some improved QC
1
33%
yes, in vanilla QC
0
No votes
no
2
67%
 
Total votes : 3

American McGee Alice mental exercise

Postby daemonicky » Wed Jun 01, 2011 11:12 am

I was wondering how to remake this game. I mean just in head, not in real, because I have other project; as a mental exercise. So I just try to guess how mechanics work or rather how I would make them.

You would need Darkplaces or similar engine to make graphics, because Quake does not have some of these.

So, there is third person.
It seems that it is just camera positioned with a vector which rotates around lets say origin of Alice. And then there is this "secret" command to set camera.

Slimy walls http://i.idnes.cz/bw/25/r_alice04b.jpg
* some math with (u,v) of Texture ? But I do not know

Aiming reticle
* tracelined direction vector. Where it hits a wall, there is drawn some particle (or what they used). Important is to make this particle look at the same size (scale this particle relative to distance travelled because it would be too tiny otherwise).
It is not exactly in direction of camera, otherwise one would draw crosshair :) .

Ropes http://i.idnes.cz/bw/25/r_alice01b.jpg
* by changing angular velocity.
    brush is waiting to be touched by Alice. Has angular velocity 0.
    If touched it makes simple pendulum based on alices speed. (changes angular velocity)
    angular velocity is inversed (av = -av) if it reaches maximal one
    well, Alice while swinging by forward and backward key changes angular velocity
    position_of_bottom = attachment_place + R . (sin A , - cos A ) ...... or you can rotate brush around axis = cross(jump velocity, up vector)
Whic way are ropes done in Quke like games :?:


Jumping by point&click http://img6.imagebanana.com/img/g7sssv1 ... salice.jpg
Alice has these pictures of legs, which are drawn on ground where she would land if she jumped. Dont know what Quake sprites can do, but it might be also a texture with transparency.
So the jumping itself ...
you point to a polygon and if it is possible she jumps there
so it would be
    * compute it SOMEHOW from physics formula for ballistic (?) movement (x0+t*vx, y-vy*t+0.5g*t^2) you have given final (x,y) position on plane, so you have to translate from 3d to plane...
    * make trajectories by tracelines and binary search the right one ... if you can decide which is wrong and if it can be searched this way
    * make a spline and somehow limit possible vx,vy to maximal ones ... there might be some spline which can make trajectory even if there is step


Rotating platforms
* are rotating brushes.

Portals http://www.mobygames.com/images/shots/l ... portal.jpg
* are teleports.

Mirorrs
* are usually done by portals. Not sure whether Quake supports portals, does it :?: I do not know how to do them in Quake, maybe copy whole scene and mirror it ...

Grey world http://www.mobygames.com/game/windows/a ... tId,11324/
* dot product each color with (0.3, 0.59, 0.11).
* use pixel shader.
* change pallete
...
Last edited by daemonicky on Wed Jun 01, 2011 11:48 pm, edited 1 time in total.
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Wed Jun 01, 2011 11:18 am

Aiming at monsters
* the aiming circle is just 2 rotating particles which produce they traces.
* Other way could be to make array of particles and assign each particle property this way particle[i].property = property[(time + i)%NUMBER_PARTICLES] which would make it very hacky to be done in vanilla QC because it has no arrays.
* choosing which monster to draw these particles around by some standard function. Monsters have some aim function which obtains nearest target AFAIR. If there is no monster to choose, disable particle drawing.
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Wed Jun 01, 2011 12:34 pm

Platforming
* To detect if you are on a ground there is a function. But it can be done with traceline from origin down.
Code: Select all
if InWall(downwards) then
          you are

* To detect if there is ledge in front of character make 2 tracelines, upper and lower. They are near each other and represent a hand of character.
Code: Select all
LedgeInFrontOf() = {
          if InOpenAir(upper) && InWall(lower) then
                   there is a ledge in front of you
}

* To shimmy even on a skewed ledge
** make moar tracelines
** make bigger z distance between upper and lower lines


FIX:platforming
And it sucks sometimes when you slide a platform or You are unable to reach one. So I would traceline or tracebox if there is platform near and grab it. Probably make many ledge_checks around player like in one of mine tutorials, so one would not miss any ledge. Result should be user friendly platform grabbing.

And also I would not allow player to fall over ledge ...
Code: Select all
if ! NearLedge(this) && JumpButton()
          do nothing

and allow him to jump from there
Code: Select all
if NearLedge(this) && JumpButton() && ForwardButton() then
          JumpForward()

if he would be jumping anywhere not near ledge just jump up, like in Prince Of Persia :)
Code: Select all
if ! NearLedge(this) && JumpButton() // && ForwardButton() then
          JumpUp()


FIX: She cant grab a thing from water

Stupid physics
Symptoms :
* when riding a platform you do not get acceleration from it but are just stucked if on plaform. So when you jump up you will jump in palce and fall to your death because platform will move forward, not with you.
How to make it :
* do nothing about it, Quake has it this way. :)
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby daemonicky » Wed Jun 01, 2011 5:10 pm

Leaning platforms http://i21.photobucket.com/albums/b275/ ... -59-23.jpg
Simple distance to centre/axis of rotation (of platform she stands on) implies speed of rotation (angular speed)...

underwater shell given by cow-turtle
just another model to be drawn around player
Code: Select all
if inWater() && shellGiven()
         


FIX:sliding when jumping
other way to fix it would be by
Code: Select all
if JustFallen() // jumped && hit ground
          set velocity to zero


FIX:bouncy annoyance
repeating 15 times one jump because she just bounces off wall is not fun
dont know how :)

Chess pieces http://img527.imageshack.us/img527/5649/ama012wq9.jpg
Arrows are models.
It is collision model which allows movement only at these arrows for There is only a tiny place

Travelling rooks
* parallel :
Code: Select all
if playerNotNearEnough() then
          wait for player
if not waiting then
          move  to current goal


AI
zones like http://game.watch.impress.co.jp/docs/20 ... 3dwa73.jpg or something equally dumb
Think, touch, movetype, solid, traceline ...
User avatar
daemonicky
 
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Postby ceriux » Wed Jun 01, 2011 7:38 pm

lol you seem like you will be a good addition to the quake community. this is all beyond me.
User avatar
ceriux
 
Posts: 2223
Joined: Sat Sep 06, 2008 3:30 pm
Location: Indiana, USA

Postby Nahuel » Wed Jun 01, 2011 7:42 pm

:) :) I believe that daemonicky will make great stuff in CSQC. And he will write tutorials on this matter!
hi, I am nahuel, I love quake and qc.
User avatar
Nahuel
 
Posts: 492
Joined: Wed Jan 12, 2011 8:42 pm
Location: mar del plata

Postby xaGe » Thu Jun 02, 2011 2:29 am

..And tutorials are GOOD!
User avatar
xaGe
 
Posts: 461
Joined: Wed Mar 01, 2006 8:29 am
Location: Upstate, New York

Postby Nahuel » Thu Jun 02, 2011 3:29 pm

xaGe wrote:..And tutorials are GOOD!

you are a genius!
hi, I am nahuel, I love quake and qc.
User avatar
Nahuel
 
Posts: 492
Joined: Wed Jan 12, 2011 8:42 pm
Location: mar del plata


Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest