Skip to content

Commit

Permalink
Release the 2024 Hackceler8 game engine.
Browse files Browse the repository at this point in the history
  • Loading branch information
erikvarga committed Sep 13, 2024
1 parent b19cb3c commit 25675ab
Show file tree
Hide file tree
Showing 472 changed files with 19,977 additions and 0 deletions.
5 changes: 5 additions & 0 deletions 2024/hackceler8/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Hackceler8 2024 Game

`handout/` is the version of the game that will be handed out during the game rounds. `server/` is the version that will run on the organizers' server. The only difference is the content of some files under game/components/boss.

See the README.md in the respective folders for setting up and running the game client + server.
31 changes: 31 additions & 0 deletions 2024/hackceler8/handout/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Hackceler8 2024 Game

## Steps to run the game:

1. Install prerequisites
```
cd handout
python3 -m venv my_venv
source my_venv/bin/activate
pip3 install -r requirements.txt
```

2. Run server (optional but good for testing cheat detection/etc.)

```
cd handout
source my_venv/bin/activate
python3 server.py
```

Note that this server is slightly different from the one run by organizers during the live rounds as it doesn't have all the code for the boss fights.

3. Run client

```
cd handout
source my_venv/bin/activate
python3 client.py
```

If you want to run the client without a server, pass `--standalone` as an additional argument.
22 changes: 22 additions & 0 deletions 2024/hackceler8/handout/ca/CA-devel.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDjzCCAnegAwIBAgIUVx92s3F9s3TvTcTFzVMWbGb+cHIwDQYJKoZIhvcNAQEL
BQAwVzELMAkGA1UEBhMCQ0gxEzARBgNVBAgMClNvbWUtU3RhdGUxDzANBgNVBAcM
Blp1cmljaDEPMA0GA1UECgwGR29vZ2xlMREwDwYDVQQDDAhkZXYtdGVhbTAeFw0y
NDA0MDQyMTQwMzlaFw00ODExMjUyMTQwMzlaMFcxCzAJBgNVBAYTAkNIMRMwEQYD
VQQIDApTb21lLVN0YXRlMQ8wDQYDVQQHDAZadXJpY2gxDzANBgNVBAoMBkdvb2ds
ZTERMA8GA1UEAwwIZGV2LXRlYW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDUjGYxwdG8zPd79HMJ62DBOS2LaUrchVnVu02NXlnb8fYEEd22tDw7BoZ+
PCJ0/RxgaOOZ8AQwbh+LbyqFloP34BhRDjeMgAjyEZE4i9y7woysWHh8j7iH2GER
SNZwYefZ+YRGnDp1C2A7DqVqLlsnt72zMTYUIYEZqBLFd/H/1ysfgIiZiHP1++dW
chlV1lEL/2q0uLt8Oi+Hp/dA/E89TZznkSs2XKByUlF7Q34rHNoitRigtFw4/hXg
a8KwY7o0FjNcQUP67C0zNBDsOZ8fEt1/i4k/hQ+B+iHHPF/CA0azY4JjUcSF7522
0GnGUjA7I+RWS0aii3hVtcy47sxxAgMBAAGjUzBRMB0GA1UdDgQWBBQ1HR6i0sQ4
N/WNu3Pp8pPS0cFjIjAfBgNVHSMEGDAWgBQ1HR6i0sQ4N/WNu3Pp8pPS0cFjIjAP
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBS4eEJXfF+JmpE0Qtr
nH8Dvlsr6zTH6BZdhchdx4umZ28gnejTVFL3n6AFh9s8v4zyximIO40Zw2zzJwIo
+EWvDDBWWAjLHDlzDrNtN7itNyDvKsskPVgBGYbCxiEJP+t+FI2YwRwboE8k3cPv
rqnpkMXm9gYU0XGlZo/OysAbGZ0KrTReKUhVKmo8FocUCA2p9D1/bXYCv/jEM7ZW
5uImP3w9v/bj+/Em2rXbHQMNBUY5ixQv++jpVIvkI4CqXhnWZKnG4efTeUgO2em5
ilDJnEZV9RkLIuu8LG2s2aR5NNrGjb4n1ve0jmAkKBzvl9aqERtUOqhvYLgNPmsq
A86a
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions 2024/hackceler8/handout/ca/CA-devel.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDUjGYxwdG8zPd7
9HMJ62DBOS2LaUrchVnVu02NXlnb8fYEEd22tDw7BoZ+PCJ0/RxgaOOZ8AQwbh+L
byqFloP34BhRDjeMgAjyEZE4i9y7woysWHh8j7iH2GERSNZwYefZ+YRGnDp1C2A7
DqVqLlsnt72zMTYUIYEZqBLFd/H/1ysfgIiZiHP1++dWchlV1lEL/2q0uLt8Oi+H
p/dA/E89TZznkSs2XKByUlF7Q34rHNoitRigtFw4/hXga8KwY7o0FjNcQUP67C0z
NBDsOZ8fEt1/i4k/hQ+B+iHHPF/CA0azY4JjUcSF75220GnGUjA7I+RWS0aii3hV
tcy47sxxAgMBAAECggEAPZpFokU1Fz3mur/iOa1FOStrxlypjFl/7IDhXMhMTgGG
Vq6g7mu1izv8bgjaycJ0X4L2+G5GoIzCSsTY86forsZ99bwjoG6ZaSNrThLHUon0
AJ2RqjRzfLfbhklwkVjm/FejnV15WeQGq4c2rRwrYksQSafJLzN4uelrK110v7vj
alXNFumtFIoskltgrLNR+YXaYjKp+DZANETk+E8N4pUIC+DNQwAhesK45+8uq9tx
eS9DOzqgXrUNvL4bNmC4keZXggsgQ79kcu6pzXoTBDfgMFivxylAoP7ch1/yPvc3
CHchzSGGd8j5eRnhpiXVq8iK0hU07WS7vGFPoHzF+wKBgQDvaAKNalVPZJz+Tx5o
T7sraReqIIKSh2wt8O9nL1n35llUMNln8+eGQBbEqkXQAUxdbUnYIcIcpx27xJqi
vwZEFdnE4XHO4t7JSlvN+9YJAe1fAwTfX0X5tZa0katgUCMvV1oieOyGlNaYAeJ8
PjiREqNgfESqeCYpzf8zJ28ibwKBgQDjR9PQb/S8J3Jsn5PAAocezin2UDrf+Fbw
ihIm3DA+enm8w4KVxMfH5ZU21YE2oU4dLz8UjWVrcQ2ArXG+mC2VPjMIPYTtzsJS
/178q/cIAJNPin9KJ0lPi+eui58Bk1INDbBut5nNn0T0q4mY60FBR0ugqkEP6p/W
kkP+PezvHwKBgQDQSVN/KXYTXtvfvYIdCtEy0XoPP72aMkwCJE6FHYNO1I//WYis
kl1qRbQJYoLel2KTHhRS//vb5eFOjZxj34JaFhCi4+maL3PY+OKqcWIj8BNOyFei
50cAG+aELwBFCTOzanI277II3NFe6rTbl16riOWvei5bibDaSiivnq1n7QKBgQCR
9OOi3PL3DgIendA9o6Hwd4ddJiLZCFuUt6Z2jDrzNKYPQiMPWULPLbHIeA417hsD
BP9mjHNQL1bzhu8f7gx/5mTRauh966TBtjvi2fCXk/8GOrQKA/bBfeA4KHPhiCFO
PrdKMuAzu4+F7M89g/7xE/8OW6fSt+MT4fSGRnBtEwKBgDKEopk9I68JRETazeq9
w/uhVkRO2UxmpAr26+2Gi/O0G6vBxo1wDUuc2sq4+gJuA8ZLvl4MukatzWC2/GrE
qjOgu3k92oDXC9qx03CjpVsVBl7g3Ht/GImM5PrRqaOT7ksXTzL2clsN/jwE2GNN
YgNbdzk96ahTsKG5wmUpHjjR
-----END PRIVATE KEY-----
18 changes: 18 additions & 0 deletions 2024/hackceler8/handout/ca/dev-team.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC8TCCAdkCFAiXEKC+siFb0JPetu30g8nhgQR2MA0GCSqGSIb3DQEBCwUAMFcx
CzAJBgNVBAYTAkNIMRMwEQYDVQQIDApTb21lLVN0YXRlMQ8wDQYDVQQHDAZadXJp
Y2gxDzANBgNVBAoMBkdvb2dsZTERMA8GA1UEAwwIZGV2LXRlYW0wHhcNMjQwNDA0
MjE0MDQzWhcNMjUwNDA0MjE0MDQzWjATMREwDwYDVQQDDAhkZXYtdGVhbTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKjl2+cnMXEC5RY69cv7+Dg4BK6
xGAV2dMr7uRbwWKL+E9DJTlS1NEcDwPuDboYc+3ELX9b1xqjKuxCmoR8QdLUcnyG
8Fdy+NXrsv2OHHLA456XY5FY/8E3gBCSwUrZsjKXFopUQ9wHaYTKQebM6yJYNWdt
SXrzMSRgMvfmg56ND5r4T4nM+RqFL4fu2wZ43PctJH4rvRytNfchpdoREo1YtFwS
C+zds9CI1JTEVb8pJqfaNSuLIgjiraaoBB9gmYNFB0TGQg4oj9YC70maQlmisgkC
/TpQ+qcNP0RMQw4XVfS34YyptkaWmxRnYalq4BYuIeeCC1b8ClYfXVofpz8CAwEA
ATANBgkqhkiG9w0BAQsFAAOCAQEAqXvEgDBomTpO9SmdAFqtXddKuD1L4KTo4pXr
R5NyOsFXpRpjH2OVDNkk9a7yMuifztAJpFolyiyyzpyJXItBLfzggCBfmW7dONaR
lx2ZUuF1Etl7VotOU4PKpmOwe3yZf9waddQ8TfI/mVim+ZsIliJxiYh4k76EFyYv
Z+rAzn1RjGZ6OPwOMeeveQbzBx9Pw8z4cBx8facYexcKqFfaJdrmTJRLfsE1KILJ
jku8d0cURtNLbMsM1W5egQfOQJ4RpC53TWwpFEPO5k+0tYUB4+Kd6rw0O2YlDAJB
Aci6DaQSwWSfiynT/Chv7bNy+c1LVruq2mmaAUuCwrzUgmIgNA==
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions 2024/hackceler8/handout/ca/dev-team.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyo5dvnJzFxAuU
WOvXL+/g4OASusRgFdnTK+7kW8Fii/hPQyU5UtTRHA8D7g26GHPtxC1/W9caoyrs
QpqEfEHS1HJ8hvBXcvjV67L9jhxywOOel2ORWP/BN4AQksFK2bIylxaKVEPcB2mE
ykHmzOsiWDVnbUl68zEkYDL35oOejQ+a+E+JzPkahS+H7tsGeNz3LSR+K70crTX3
IaXaERKNWLRcEgvs3bPQiNSUxFW/KSan2jUriyII4q2mqAQfYJmDRQdExkIOKI/W
Au9JmkJZorIJAv06UPqnDT9ETEMOF1X0t+GMqbZGlpsUZ2GpauAWLiHnggtW/ApW
H11aH6c/AgMBAAECggEAKVXCOkC+Y+KHnWVv+ORuOJZAMwVFYEheFUdyqSN0HXXu
2IRcbiW0+cfoz4t7YKa82HUO5Avfu5mq2m1U7LgF0R94eEkO/uUrH/DAg3wpKAJr
COzVzLGPyGkruGoE0OmLmrosLIjwBM8wQto8IogjFljbzplSqeDw645Y7NTJetud
GX5SqKKaLZe/3VLoH9WaHt6gQW3wd7wftCNvBm36ZkrKw5nwkyqTyAXNKfw4zawq
tPZpcLsC7hBDAx6Hij4a2hHzlJ5dBtUxtVtyTDAe1bgLTMbW/2+ylbpfXG6LJbvA
+i7Uap/Zgg91tcwK9mdOolsydkFyKDUysXCSIoqryQKBgQDY3U8dsLgnEmklazQD
yPpan4bHWb18FnMlDLjoxVQz80+NDEDlO3qk6GKEjXK0Y+1IIIhMehizAAk1beHg
+ESzaU60JWbifzX7+EaqA05Fw5998J1nP7gYPZXnuZ3oNEDAI1HlEFScWbRQt4oY
J6s5+3OvQ8LjmNe523GoMEJaFwKBgQDS4Fhn089UrLBWBvkxj49XPor4sBRyLAXl
DZIwPZ3I+vdeL9+qkdUx9audTrInbmlq6/Lia1STdrHDUj9cZLlgaeH4sggk2Xv3
nkZvVSmSwiST9cmNvG17TQNY8jm+jplRjv1cfeGLgXvzN0gmu1XeV6xp9HNO2KGl
ALJS0XndGQKBgQCKmV6ADjqTlhunM42pwZ/nnT8JV1xX2w06J5hiBAOdtCoqbiNn
ngzzKiYUq0Yc7iRvTYNuxTXV6Pb5s8GCA4n81Bfd4G2R4lWBNRsMe1JiGfVsCwS+
QSYKMAoHcETwa7zaT3h+mmJJDrfEQpk6eNfhFcjIwdjjlwKAoTRRlo5BfwKBgQDR
6Tp3WBOZcTEy4UwrNoF0UjCaLwSbRhE0Gdc8qAkpqBCXNEaMDxDO44LKWyziLXlI
Usj68+ZDyDJZgMTLnwQc4ilrmySaMdfB/E6WwopYqWMp2c+hhEDjLR047B3o/x/F
XPX9nNzoNqOAzrXGwFJQuqtI6WniwafejRv1bsnE+QKBgA3DM+0bW+6BRRDSyafM
RU4mb3/X6Qb5NmTMRROvTzlVRJ8JIHo0YM8oj4WnXD6vT5czQ0YHFAbj0UFjjsFS
tTd3FnkVdvCxUOucWNcM0TV5LvT2gQsdsizFXoJS520sBCOyKl7wX+gVzIZHHPQM
nfrSDx04W1yKE2+1rRm5WZc1
-----END PRIVATE KEY-----
83 changes: 83 additions & 0 deletions 2024/hackceler8/handout/client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import logging

from game import log
from game import venator_gui
from game import network
import moderngl_window as mglw


# A silly monkeypatch to work around mglw not allowing to pass in a parent parser
mglw._orig_create_parser = mglw.create_parser
def _create_parser():
root = mglw._orig_create_parser()
return log.get_argument_parser(root)
mglw.create_parser = _create_parser

class Hx8Client(venator_gui.Hackceler8):
def __init__(self, **kwargs):
log.setup_logging(self.argv, file_prefix='client')
net = None
if not self.argv.standalone:
net = network.NetworkConnection.create_client(
self.argv.hostname,
self.argv.port,
self.argv.cert,
ca=self.argv.ca,
)

if net is None:
logging.fatal(
'Connecting to server failed, pass --standalone if you want to run'
' the game without a server.'
)
raise SystemExit()

super().__init__(net=net, **kwargs)

@classmethod
def add_arguments(cls, parser: argparse.ArgumentParser):
parser.add_argument(
'hostname', nargs='?', default='localhost', help='Server address'
)
parser.add_argument(
'port', nargs='?', type=int, default=8888, help='Server port'
)
parser.add_argument(
'cert',
nargs='?',
default='ca/dev-team',
help='Path to client cert (without .key/.crt suffix)',
)
parser.add_argument(
'--ca', default='ca/CA-devel.crt', help='Path to CA .crt file'
)
parser.add_argument(
'--standalone',
action='store_true',
default=False,
help='Run locally (without connecting to a dedicated server)',
)


def main():
logging.getLogger('PIL').setLevel(logging.WARNING)
mglw.run_window_config(Hx8Client)


if __name__ == '__main__':
main()
152 changes: 152 additions & 0 deletions 2024/hackceler8/handout/flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 25675ab

Please sign in to comment.