Rotation Overview

These are cool things to add to your map, and there is a lot of potential in how they can be used. They are, however, a pain in the ass to set up.

Fortunately, we can follow in the footsteps of great mappers. Here we present the original hiprotate tutorial written by the awesome and quite literally scandinavian czg.

CZG’s instructions for making a HIPNOTIC rotating entity!

Firstly, place an info_rotate on the center/axis of rotation and give it a unique targetname.
Next make your rotating bit, and make it a rotate_object, give it too a unique targetname, and also let it target the info_rotate.
Then make a func_rotate_entity or a func_rotate_door, which despite their names are point entities, and target them at the rotate_object. They too must be placed on the center/axis of rotation.

Now for a func_rotate_entity, you must give it a rotate key and set its value to three integers, 0 -90 0 for example, which will make it rotate clockwise along the Z axis at 90 degrees/second. You can set it to rotate around all the axis too, and to make it rotate the other way, just add/remove a – ( minus sign ).
Give it a speed field which sets the amount of time it should take from it’s triggered, until it’s at full speed, ie it accelerates.
Spawnflags 1 makes it toggleable, and spawnflags 2 makes it start on.

Now for the func_rotate_door:
Set the rotate field to three 0’s or 1’s, with either 1 or -1 to set which axis it will rotate on. i.e. 0 1 -1 will make it rotate counterclockwise around the Z axis and clockwise around the Y axis.
Then give it an angles field too, that sets how much it should rotate on each of the axis.
So "rotate" "0 1 -1" and "angles" "0 90 -180" will make a door that rotates 90 degrees counterclockwise on the Z axis, and 180 degrees clockwise on the Y axis. Of course set it to whatever suits your needs.
Then give it a speed which is the amount of time in seconds it should take to complete the movement.
You can give it a dmg to make it hurt you, more on that later, as it’s a bit complicated.
sounds are sounds as normal, base, medieval, and metal.

Now, all this only makes a nonsolid shell that rotates.
To emulate collision on it, (because that’s the best you can do in Q1,) you need loads of func_movewalls.
The func_movewalls move in a circular orbit around the func_rotate_entity or func_rotate_door, but don’t rotate themselves. So make a lot of tiny func_movewalls that will move around and keep roughly in the same place as the rotate_object.
They should be targeted by the func_rotate_entity or func_rotate_door, and you can set the following spawnflags on them:

  • Spawnflags 1 makes it visible, as it by default is invisible to only provide collision on other entities.
  • Spawnflags 2 makes it damage you even if you just touch it, and you’re not squished by it. Useful for maybe fans or something.
  • Spawnflags 4 makes it nonsolid, which is completely useless unless you also set spawnflags 1 too. Otherwise it’s make an invisible, nonsolid brush that does nothing. Stupid.

A couple of general notes:

  • rotate_objects don’t block a monsters line of sight, but a func_movewall does.
  • rotate_objects are textured in a quite bizarre manner. In order for them to have an origin that can be used in Quake, QBSP moves them together with their respective info_rotate so it is situated smack on the center of the level: (0 0 0) The rotate_objects are textured from there, so when they are moved back to their original position in game, the textures will appear misaligned. To compensate you either have to use a flat texture on them so any misalignments aren’t visible, or you have to move them to the center of the level yourself, texture them there and then move them back again yourself.
  • func_movewalls don’t move 100% exactly after the rotate_object; they lag slightly behind, creating a staircase effect. Adjust their thickness/placement to compensate.
  • Oh yeah, the most important thing of all: You must have compile tools that can handle these entities. The most popular and powerful compilers for Quake 1 are those by aguirRe. His site is here:

<-Back to the tutorial


3 thoughts on “Rotation Overview

    • Thanks JPL, problem with documents that are more than 10 year old is that the links rot! This has been fixed now.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.