Red implementation of Rock, Scissors, Paper
Looks an interesting first project! Some thoughts:


The URL! type does not need a % prefix (they would be interpreted as FILE! and would behave incorrectly were you to operate upon them).
In Red, you can use the WORD! type in place of strings. You can use a LIT-WORD! to get a word without evaluating it. Takes a little getting used to, but is more efficient and expressive:

weapons: [rock paper scissors]
player-choices: [rock 0 scissors 0 paper 0]

player-wins: [
    [rock scissors] "breaks"
    [paper rock] "covers"
    [scissors paper] "cut"
]

select player-choices 'rock

Instead of VALID-CHOICE, you could use SWITCH to drive things:

until [
    switch player-choice: ask "(r)ock, (s)cissors, (p)aper or (q)uit? " [
        "q" [true]
        "r" "s" "p" [
            play-round player-choice
            false
        ]
    ]
]

You can use CASE in place of nested EITHER statements—breaks the choices out a bit:

make-computer-choice: func [
    /local tmp tally
][
    case [
        games-played &lt; 3 [
            random/only weapons
        ]

        (
            tmp: random games-played
            tmp &lt;= tally: select player-choices 'rock
        ) [
            'rock
        ]

        tmp &lt;= tally: tally + select player-choices 'scissors [
            'scissors
        ]

        true [ ; or else
            'paper
        ]
    ]
]

If you want to somewhat keep the game logic separate from the interface, I'd recommend a play-round function called in the same fashion as above. play-round could return false (continues) or true (ends loop when someone wins a certain amount of games).
I notice you define the function make-computer-choice but don't invoke it.