├── .all-contributorsrc ├── .dockerignore ├── .eslintrc.json ├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── .mergify.yml ├── .prettierignore ├── .travis.yml ├── Dockerfile ├── LICENSE ├── README.md ├── babel.config.js ├── blog ├── 2020-11-14-hello-world.md └── 2022-9-11-update-log.md ├── docs ├── contests │ ├── AIChallenge2 │ │ ├── README.md │ │ ├── RuleMan.md │ │ └── introduction.md │ ├── README.md │ ├── THUAI3.0 │ │ ├── API.md │ │ ├── README.md │ │ └── READMEForPlayers.md │ ├── THUAI4 │ │ ├── API.md │ │ ├── Introduction.md │ │ ├── README.md │ │ ├── READMEForPlayers.md │ │ └── UpdateInfo.md │ ├── THUAI5 │ │ ├── CAPI.md │ │ ├── GameRules.md │ │ ├── README.md │ │ └── Tool_tutorial.md │ ├── THUAI6 │ │ ├── GameRules.md │ │ ├── GameUpdate.md │ │ ├── QandA.md │ │ ├── README.md │ │ ├── Tool_tutorial.md │ │ ├── VersionUpdate.md │ │ ├── capi_cpp.md │ │ ├── capi_python.md │ │ └── usage.md │ ├── THUAI7 │ │ ├── README.md │ │ ├── faq │ │ │ ├── README.md │ │ │ └── cpptips.md │ │ ├── interface │ │ │ └── interface.mdx │ │ ├── intro │ │ │ ├── README.md │ │ │ ├── guide.mdx │ │ │ ├── programming.mdx │ │ │ └── rule.md │ │ ├── map │ │ │ ├── home.md │ │ │ ├── map.md │ │ │ ├── placetype.md │ │ │ └── wormhole.md │ │ ├── mechanics │ │ │ ├── attack.md │ │ │ ├── construction.md │ │ │ ├── mechanics.md │ │ │ ├── module.md │ │ │ ├── score.md │ │ │ └── view.md │ │ └── ship │ │ │ ├── base.md │ │ │ ├── civilship.md │ │ │ ├── flagship.md │ │ │ ├── ship.md │ │ │ └── warship.md │ ├── THUAI8 │ │ ├── README.md │ │ ├── character │ │ │ ├── character.md │ │ │ └── shop&&equipment.md │ │ ├── faq │ │ │ ├── README.md │ │ │ └── cpptips.md │ │ ├── interface │ │ │ ├── interfacecpp.md │ │ │ └── interfacepython.md │ │ ├── intro │ │ │ ├── adjust.mdx │ │ │ ├── ai_manual.mdx │ │ │ ├── guide.mdx │ │ │ ├── programming.mdx │ │ │ ├── rule.md │ │ │ └── score.md │ │ └── map │ │ │ ├── construction.md │ │ │ ├── map.md │ │ │ ├── placetype.md │ │ │ └── resource.md │ └── assets │ │ ├── THUAI3.0 │ │ └── interface.gif │ │ ├── THUAI4 │ │ └── interface.png │ │ ├── THUAI5 │ │ ├── APIsettings.png │ │ ├── APIsettings2.png │ │ ├── debug.png │ │ ├── main_interface.jpg │ │ ├── no-debug.png │ │ ├── tool_1.png │ │ ├── tool_2.png │ │ ├── tool_3.png │ │ └── tool_4.png │ │ ├── THUAI6 │ │ ├── CompileFaster.png │ │ ├── LNK1000.png │ │ ├── Nocplus.png │ │ ├── RunCppCmd.png │ │ ├── RunPython.png │ │ ├── VSUpdate.png │ │ ├── grpc.png │ │ ├── image-20230416010705076.png │ │ ├── image-20230416010816392.png │ │ ├── interface.jpg │ │ ├── lib.png │ │ ├── std_find_trivial.jpg │ │ ├── vector.png │ │ ├── wrongType.png │ │ ├── zip.png │ │ └── 项目属性.png │ │ ├── THUAI7 │ │ ├── faq │ │ │ ├── CompileFaster.png │ │ │ ├── LNK1000.png │ │ │ ├── Nocplus.png │ │ │ ├── VSUpdate.png │ │ │ ├── grpc.png │ │ │ ├── lib.png │ │ │ ├── std_find_trivial.jpg │ │ │ ├── vector.png │ │ │ ├── wrongType.png │ │ │ ├── zip.png │ │ │ └── 项目属性.png │ │ ├── interface.png │ │ └── intro │ │ │ ├── image-20230416010705076.png │ │ │ └── image-20230416010816392.png │ │ └── THUAI8 │ │ ├── faq │ │ ├── CompileFaster.png │ │ ├── LNK1000.png │ │ ├── Nocplus.png │ │ ├── VSUpdate.png │ │ ├── grpc.png │ │ ├── lib.png │ │ ├── std_find_trivial.jpg │ │ ├── vector.png │ │ ├── wrongType.png │ │ ├── zip.png │ │ └── 项目属性.png │ │ ├── interface.png │ │ └── intro │ │ ├── Avalonia.png │ │ ├── Clientdebug.png │ │ ├── Cppbuild.png │ │ ├── Debug.png │ │ ├── Server.png │ │ ├── Success.png │ │ ├── api.png │ │ ├── apipy.png │ │ ├── image-20230416010705076.png │ │ ├── image-20230416010816392.png │ │ ├── image.png │ │ ├── installer.png │ │ ├── package.png │ │ ├── py.png │ │ └── vs.png ├── game │ ├── README.md │ ├── assets │ │ ├── minecraft │ │ │ ├── redstone │ │ │ │ └── redstone_testing │ │ │ │ │ ├── README │ │ │ │ │ └── origin_copyright.jpg │ │ │ │ │ └── redstone_basic_1 │ │ │ │ │ ├── activate_app.jpg │ │ │ │ │ ├── activate_powered_rail.jpg │ │ │ │ │ ├── activate_powered_rail_near_untrans.jpg │ │ │ │ │ ├── app_door.jpg │ │ │ │ │ ├── circuit_trans_plane.png │ │ │ │ │ ├── circuit_trans_spin_up.png │ │ │ │ │ ├── circuit_trans_up.png │ │ │ │ │ ├── connect_app.png │ │ │ │ │ ├── connect_battery.jpg │ │ │ │ │ ├── connect_diag.jpg │ │ │ │ │ ├── connect_glow.jpg │ │ │ │ │ ├── connect_slab_stair.jpg │ │ │ │ │ ├── connect_trans.jpg │ │ │ │ │ ├── connect_untrans.jpg │ │ │ │ │ ├── hinder_others.jpg │ │ │ │ │ ├── hinder_untrans.jpg │ │ │ │ │ ├── lay_wool.jpg │ │ │ │ │ ├── point_activate_app.png │ │ │ │ │ ├── powered_curly_rail.jpg │ │ │ │ │ ├── recharge_others.jpg │ │ │ │ │ ├── recharge_untrans.jpg │ │ │ │ │ ├── redstone_line.png │ │ │ │ │ ├── redstone_multi.jpg │ │ │ │ │ ├── redstone_point.png │ │ │ │ │ ├── redstone_torch.png │ │ │ │ │ ├── star_activate_app.jpg │ │ │ │ │ ├── trans_diag_down.jpg │ │ │ │ │ ├── trans_diag_up.jpg │ │ │ │ │ ├── trans_dist.jpg │ │ │ │ │ ├── trans_hinder_1.jpg │ │ │ │ │ ├── trans_hinder_2.jpg │ │ │ │ │ ├── trans_hinder_at_diag.jpg │ │ │ │ │ ├── trans_hinder_at_diag_on_nontrans.jpg │ │ │ │ │ ├── trans_model_down.jpg │ │ │ │ │ ├── trans_model_down_topview.jpg │ │ │ │ │ ├── trans_model_glow_towel.jpg │ │ │ │ │ ├── trans_model_tense_towel.jpg │ │ │ │ │ ├── trans_model_towel.jpg │ │ │ │ │ ├── updownslab.jpg │ │ │ │ │ ├── updownstair.jpg │ │ │ │ │ └── water_flush.jpg │ │ │ └── summer_tutorial │ │ │ │ ├── andgate.png │ │ │ │ ├── clock1.png │ │ │ │ ├── clock2.png │ │ │ │ ├── dlock.png │ │ │ │ ├── dtrigger.png │ │ │ │ ├── nandgate.png │ │ │ │ ├── norgate.png │ │ │ │ ├── notgate.png │ │ │ │ ├── onlygate.png │ │ │ │ ├── orgate.png │ │ │ │ ├── rsisrlock.png │ │ │ │ ├── rsisrlock2.png │ │ │ │ ├── single.png │ │ │ │ ├── single2.png │ │ │ │ ├── srlock.png │ │ │ │ ├── srlockvert.jpg │ │ │ │ ├── xorgate.png │ │ │ │ └── xorgate2.png │ │ └── unity │ │ │ ├── Editor.png │ │ │ ├── Hub界面.jpg │ │ │ ├── UNITY.jpg │ │ │ ├── 创建页面.png │ │ │ ├── 导航栏.jpg │ │ │ ├── 层次.jpg │ │ │ ├── 教程组件.jpg │ │ │ ├── 文档.png │ │ │ ├── 新建项目.png │ │ │ ├── 核心.jpg │ │ │ ├── 检查器.png │ │ │ ├── 组件.jpg │ │ │ └── 资源.jpg │ ├── minecraft │ │ ├── README.mdx │ │ ├── redstone │ │ │ └── redstone_testing │ │ │ │ ├── README.md │ │ │ │ └── redstone_basic1.md │ │ └── summer_tutorial.md │ └── unity.mdx ├── intro │ ├── README.md │ ├── contributors.mdx │ ├── math.mdx │ ├── mdx.mdx │ ├── structure.mdx │ └── style_guide.md ├── languages │ ├── C&C++ │ │ ├── OOP.md │ │ ├── STL.md │ │ ├── c_cpp_windows.md │ │ ├── compile.md │ │ ├── macos_cpp.md │ │ ├── makefile&cmake.md │ │ ├── modern_cpp.md │ │ └── multi-file_programming.md │ ├── CSharp │ │ ├── CSharp_1_basic.mdx │ │ ├── CSharp_2_multithread.mdx │ │ ├── MAUI.mdx │ │ ├── WPF.md │ │ └── Winform.mdx │ ├── HTML&CSS.mdx │ ├── JS&TS │ │ ├── JavaScript.mdx │ │ ├── Nodejs.mdx │ │ ├── TypeScript.mdx │ │ ├── npm.mdx │ │ └── yarn.mdx │ ├── README.md │ └── assets │ │ ├── box-model.png │ │ ├── cjh.jpg │ │ ├── deadlock.png │ │ ├── fig.png │ │ ├── phi.png │ │ ├── process.png │ │ ├── virram.png │ │ └── x86pipeline.png ├── machine_learning │ └── README.md ├── tools │ ├── README.md │ ├── ROS │ │ ├── basic.md │ │ ├── communication.md │ │ ├── gazebo.md │ │ ├── packages.md │ │ ├── reference.md │ │ └── visualization.md │ ├── assets │ │ ├── branch.png │ │ ├── canvas.png │ │ ├── devops_docker.png │ │ ├── file_explain.png │ │ ├── file_list.png │ │ ├── git │ │ │ ├── conflict.jpg │ │ │ ├── giterror.png │ │ │ ├── gitlinear.jpg │ │ │ ├── gitrebase.jpg │ │ │ ├── multifile.jpg │ │ │ ├── vscconf.jpg │ │ │ └── vsconf.jpg │ │ ├── github_actions.png │ │ ├── license.jpg │ │ ├── linux_shell.png │ │ ├── man_ls.png │ │ ├── milestone.png │ │ ├── pull-request.png │ │ ├── scrum.png │ │ ├── swagger.png │ │ ├── tdd │ │ │ ├── div.png │ │ │ ├── pout.png │ │ │ └── tdd.png │ │ ├── top_result.png │ │ ├── version_control.png │ │ ├── vim.png │ │ ├── waterfall.png │ │ ├── wsa │ │ │ ├── appx_list.png │ │ │ └── search_wsa.png │ │ └── wsl │ │ │ ├── about.png │ │ │ ├── b1.jpg │ │ │ ├── b2.jpg │ │ │ ├── b3.jpg │ │ │ ├── b4.jpg │ │ │ ├── en.png │ │ │ ├── exp.png │ │ │ ├── get.png │ │ │ ├── imp.png │ │ │ ├── list.png │ │ │ ├── settings.png │ │ │ ├── ubuntu.png │ │ │ └── vir.png │ ├── document.md │ ├── git.md │ ├── git_instance.md │ ├── linux&shell.mdx │ ├── os.mdx │ ├── process_management.md │ ├── tdd.md │ ├── wsa.md │ └── wsl.md └── web │ ├── README.md │ ├── assets │ ├── CD.png │ ├── ER.drawio.svg │ ├── apollo_mutation.png │ ├── apollo_query.png │ ├── apollo_typests.png │ ├── cloud_native │ │ └── communication │ │ │ └── THUAI7_structure.png │ ├── docker │ │ ├── docker.png │ │ ├── types-of-mounts.png │ │ └── virtualization.png │ ├── express_client_request.png │ ├── express_server_respond.png │ ├── gql.drawio.svg │ ├── hasura_console.png │ ├── hasura_create_table.png │ ├── hasura_foreign_key.png │ ├── hasura_graphiql.png │ ├── hasura_modify_table.png │ ├── hasura_permissions.png │ ├── hasura_relations.png │ ├── linux_file_structure.png │ ├── nginx.png │ ├── oss_file_structure.png │ ├── proxy.png │ ├── route_fail.png │ ├── route_success.png │ ├── server_build.png │ ├── server_success.png │ ├── webpack.png │ ├── webpack_1.png │ └── webpack_2.png │ ├── backend │ ├── MongoDB.mdx │ ├── OSS_CDN.mdx │ ├── backend.mdx │ ├── express.mdx │ └── graphql.mdx │ ├── cloud_native │ ├── README.mdx │ ├── communication │ │ ├── Protobuf.md │ │ └── gRPC.md │ └── docker.mdx │ ├── deployment │ ├── CI&CD.mdx │ └── nginx.mdx │ └── frontend │ ├── react_detailed.mdx │ ├── react_practical.md │ └── webpack.md ├── docusaurus.config.js ├── package.json ├── renovate.json ├── scripts └── deploy.sh ├── sidebars.js ├── src ├── component │ └── video_player.js ├── css │ └── custom.css └── pages │ ├── index.js │ └── styles.module.css ├── static ├── .nojekyll └── img │ └── favicon.ico ├── tsconfg.json └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true, 5 | "node": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:react/recommended", 10 | "plugin:@typescript-eslint/recommended", 11 | "prettier" 12 | ], 13 | "parser": "@typescript-eslint/parser", 14 | "parserOptions": { 15 | "ecmaFeatures": { 16 | "jsx": true 17 | }, 18 | "ecmaVersion": 12, 19 | "sourceType": "module" 20 | }, 21 | "plugins": ["react", "@typescript-eslint"], 22 | "rules": {}, 23 | "settings": { 24 | "react": { 25 | "version": "detect" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: deploy 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | with: 16 | fetch-depth: 0 17 | 18 | - name: Setup Node.js 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: "22.x" 22 | 23 | - name: get yarn cache path 24 | id: yarn-cache-dir-path 25 | run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT 26 | 27 | - uses: actions/cache@v4 28 | id: yarn-cache 29 | with: 30 | path: ${{steps.yarn-cache-dir-path.outputs.dir}} 31 | key: ${{runner.os}}-yarn-${{hashFiles('**/yarn.lock')}} 32 | restore-keys: | 33 | ${{runner.os}}-yarn- 34 | 35 | - name: install dependencies 36 | run: yarn 37 | 38 | - name: build test 39 | run: yarn build 40 | 41 | deploy: 42 | needs: test 43 | 44 | runs-on: ubuntu-latest 45 | if: github.event_name == 'push' 46 | 47 | steps: 48 | - uses: actions/checkout@v4 49 | with: 50 | fetch-depth: 0 51 | 52 | - name: docker log in 53 | run: echo "${{secrets.DOCKER_PASSWORD}}" | docker login -u "${{secrets.DOCKER_USERNAME}}" --password-stdin 54 | 55 | - name: build and deploy image 56 | shell: bash 57 | run: | 58 | docker build -t eesast/docs:latest . 59 | docker push eesast/docs:latest 60 | 61 | - name: Trigger watchtower on server 62 | run: | 63 | curl "https://eesast.com/v1/update?image=eesast%2Fdocs" \ 64 | -H "Authorization: Bearer ${{ secrets.WATCHTOWER_HTTP_API_TOKEN }}" 65 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | # VSC 23 | .vscode 24 | 25 | # ssh key 26 | deploy_rsa 27 | deploy_rsa.pub -------------------------------------------------------------------------------- /.mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | - name: branch name check 3 | conditions: 4 | - "head~=^(master|main)/" 5 | - "-merged" 6 | - "-closed" 7 | actions: 8 | close: 9 | message: | 10 | @{{author}} 11 | Wrong Branch Name: {{head}} 12 | Please use a meaningful name instead. 13 | This Pull Request will be closed. 14 | label: 15 | add: 16 | - "invalid" 17 | - name: automatic merge for ImgBot pull requests 18 | conditions: 19 | - author=imgbot[bot] 20 | - check-success=test 21 | actions: 22 | merge: 23 | method: rebase 24 | - name: automatic approve for Renovate pull requests 25 | conditions: 26 | - author=renovate[bot] 27 | - check-success=test 28 | - "-conflict" 29 | - "-closed" 30 | actions: 31 | review: 32 | type: APPROVE 33 | message: | 34 | Mergify Automatic Approve Successful Renovate PR 35 | - name: automatic merge for Renovate pull requests 36 | conditions: 37 | - author=renovate[bot] 38 | - check-success=test 39 | actions: 40 | merge: 41 | method: rebase 42 | - name: delete head branch after merge 43 | conditions: 44 | - merged 45 | actions: 46 | delete_head_branch: {} 47 | - name: automatic label Renovate pull requests 48 | conditions: 49 | - author=renovate[bot] 50 | actions: 51 | label: 52 | add: 53 | - "dependency" 54 | - "bot" 55 | - name: automatic label ImgBot pull requests 56 | conditions: 57 | - author=imgbot[bot] 58 | actions: 59 | label: 60 | add: 61 | - "bot" 62 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore 2 | build 3 | .docusaurus 4 | node_modules 5 | .all-contributorsrc -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # language: node_js 2 | # node_js: 3 | # - 14 4 | # cache: 5 | # yarn: true 6 | # before_install: 7 | # - npm i -g yarn 8 | # install: 9 | # - yarn 10 | # script: 11 | # - yarn build 12 | # deploy: 13 | # provider: script 14 | # skip_cleanup: true 15 | # script: bash scripts/deploy.sh 16 | # on: 17 | # branch: master 18 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Builder stage 2 | 3 | FROM node:22 AS builder 4 | 5 | # Create app directory 6 | WORKDIR /home/node/app 7 | 8 | # Install app dependencies 9 | COPY package.json yarn.lock ./ 10 | RUN yarn install --frozen-lockfile --no-cache 11 | 12 | # Bundle app source 13 | COPY . . 14 | 15 | # Build 16 | RUN yarn build 17 | 18 | 19 | # Runner stage 20 | 21 | FROM node:22-alpine 22 | ENV NODE_ENV=production 23 | WORKDIR /home/node/app 24 | 25 | # Install serve 26 | RUN yarn global add serve 27 | 28 | # Copy build files 29 | COPY --from=builder /home/node/app/build ./build 30 | 31 | EXPOSE 23432 32 | 33 | CMD serve -s build -p 23432 34 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve("@docusaurus/core/lib/babel/preset")], 3 | }; 4 | -------------------------------------------------------------------------------- /blog/2020-11-14-hello-world.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: hello-world 3 | title: Hello World 4 | author: duskmoon 5 | author_title: EESΛST Docs 维护人员 6 | author_url: https://github.com/duskmoon314 7 | author_image_url: https://avatars3.githubusercontent.com/u/20477228?s=460&u=5eb6ae1e9053e26df4aa1bd255c7e262b1af29b2&v=4 8 | tags: [hello] 9 | --- 10 | 11 | EESΛST Docs 今天正式上线了。虽然还只是使用 [**Docusaurus 2 alpha**](https://v2.docusaurus.io/) 刚搭起的架子,但我们会逐步将整理好的文档部署上来。 12 | 13 | 14 | 15 | 计划: 16 | 17 | - EESΛST 暑培文档全部迁移 18 | - 参考 [Missing Semester](https://missing.csail.mit.edu/) 提供常用工具的指南 19 | - 画饼 20 | -------------------------------------------------------------------------------- /blog/2022-9-11-update-log.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: 2022-update-log 3 | title: 2022年暑培成果更新上线 4 | author: L0510410 5 | author_title: EESΛST Docs 维护人员 6 | author_url: https://github.com/L0510410 7 | author_image_url: https://avatars.githubusercontent.com/u/87233125?v=4 8 | tags: [update] 9 | --- 10 | 11 | EESΛST Docs 文档已经更新融合了2022年的暑培内容,内容的完整性有了较大提高,也增加了许多课程录屏,欢迎大家观看学习!同学们有什么想写的技术文档也非常欢迎添加,不只限于暑培内容。 -------------------------------------------------------------------------------- /docs/contests/AIChallenge2/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: AIChallenge2 3 | slug: ./ 4 | --- 5 | 6 | ## 赛题名称 7 | 8 | 枪林弹雨 9 | 10 | ## 赛题介绍 11 | 12 | 四个势均力敌,而又互相牵制的文明之间的星际战争,只可能有一个结果——我们本应都知道,但是谁都抱有幻想,都不愿承认——4096年,随着最后一只舰队在太空中不知所踪,四个文明的所有舰队宣告覆灭。几乎所有有攻击力的机动部队宣告解题,战舰的残骸形成了一片又一片的小行星群,若干年后,被称为“四星海”——不过这是多年后的后话了。 13 | 14 | 现在,四个文明不得已出动几乎所有的货运飞船,在相互接壤的星球上展开了地面部队之间的战斗。 15 | 16 | 这一切看上去都是那么的原始——正如两千多年前一样——只是人们手中的武器和装甲换了样式,战争也变得更加残酷。每当战甲更新换代,武器水平都突飞猛进,几乎每一击都有致命的危险。在辽阔的以整颗行星为局的战场上,再多的战士也如水滴淹没在星际大战的海洋之中。 17 | 18 | 没有空中支援,没有战队支撑,战场上的每一个战士的目标只有一个——活下去。活下去,就能看到敌人的死亡,就能看到战争的胜利,就能和数光年外的家人团聚…… 19 | 20 | 在枪林弹雨中,谁能够站着活到最后?谁能够赢得最终的胜利?我们不知道,但是。如果有那么万分之一的可能—— 21 | 22 | 希望是我,而不是其他人…… 23 | 24 | 更多内容参见:[赛题介绍 | 枪林弹雨](https://mp.weixin.qq.com/s/6dIO2ADU2qguCutQu8pjkw) 25 | 26 | ## 相关链接 27 | 28 | + AIChallenge2 GitHub 仓库链接:[eesast/AIChallenge2](https://github.com/eesast/AIChallenge2) 29 | -------------------------------------------------------------------------------- /docs/contests/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Contests 3 | slug: ./ 4 | --- 5 | 6 | ## 简介 7 | 8 | 9 | 科协赛事文档合集。 10 | 11 | ## List 12 | 13 | + [AIChallenge2](AIChallenge2/README.md):清华大学第二届人工智能挑战赛电子系赛道(原电子系第 20 届队式程序设计大赛 teamstyle20) 14 | + [THUAI3.0](THUAI3.0/README.md):清华大学第三届人工智能挑战赛电子系赛道(原电子系第 21 届队式程序设计大赛 teamstyle21) 15 | + [THUAI4](THUAI4/README.md):清华大学第四届人工智能挑战赛电子系赛道(原电子系第 22 届队式程序设计大赛 teamstyle22) 16 | + [THUAI5](THUAI5/README.md):清华大学第五届人工智能挑战赛电子系赛道(原电子系第 23 届队式程序设计大赛 teamstyle23) 17 | + [THUAI6](THUAI6/README.md):清华大学第六届人工智能挑战赛电子系赛道(原电子系第 24 届队式程序设计大赛 teamstyle24) 18 | + [THUAI7](THUAI7/README.md):清华大学第七届人工智能挑战赛电子系赛道(原电子系第 25 届队式程序设计大赛 teamstyle25) 19 | + [THUAI8](THUAI8/README.md):清华大学第七届人工智能挑战赛电子系赛道(原电子系第 25 届队式程序设计大赛 teamstyle25) -------------------------------------------------------------------------------- /docs/contests/THUAI3.0/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI3.0 3 | slug: ./ 4 | --- 5 | 6 | ## 赛题名称 7 | 8 | 净土保卫战 9 | 10 | ## 赛题介绍 11 | 12 | 美丽的罗姆森林曾经是一片丰饶的土地,然而在核大战过后强烈的核辐射使得罗姆森林变得寸草不生。在核战后的50多年里,B-II号避难所的居民都是依靠战前的存粮生活。 13 | 14 | 但是最近,B-II号避难所的存粮已经见底,这使得原本生活在罗姆森林里的四大族群坐立不安。为了养活各自的族人,各族群派出了自己的“觅食者”在这一片荒凉的土地上寻找和制作食物,为自己的族人带回尽量多的粮食。经过核辐射的土地难以养活植物,但经过觅食者们的不懈努力,他们还是成功地发现了一些在废土上种植农作物的办法。不久,他们又发现了罗姆森林中存在的一些奇妙的材料,把这些奇妙的材料施放到土壤中可以使得土壤一定程度地恢复出产粮食的能力。于是,觅食者们开始了净土保卫战…… 15 | 16 | ## 游戏界面 17 | 18 | ![interface](../assets/THUAI3.0/interface.gif) 19 | 20 | ## 相关链接 21 | 22 | + THUAI3.0 GitHub 仓库链接:[eesast/THUAI3.0](https://github.com/eesast/THUAI3.0) 23 | -------------------------------------------------------------------------------- /docs/contests/THUAI3.0/READMEForPlayers.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI3.0 净土保卫战 3 | sidebar_label: 给选手的 README 4 | --- 5 | 6 | ## 运行说明 7 | 8 | - 先运行 runServer.bat ,然后运行 runAgent.bat ,再运行客户端,客户端的运行方式有三种,一是运行 Client 中的InteractionFinal.exe(Unity界面);二是运行 runClientConsole.bat (Winform界面);三是运行选手的AI代码。 9 | - 每次运行游戏可以指定队伍数目,最少1队最多4队,更改方法为修改 runServer.bat 中的 --agent 后的数字。 10 | - 可以指定每个队伍里的玩家数目,最少1人最多2人,更改方法为修改 runServer.bat 和 runServer.bat 中的 --playerCount 后的数字(必须两个都修改并保持一致!)。 11 | - 每个Agent对应一支队伍,因此runAgent的次数要与队伍数目相等。例如:游戏中指定队伍数目为2,则运行runServer.bat后还要运行2次runAgent.bat 12 | - 如果运行了多个Agent,则Agent两两之间的监听端口不能相同,否则会引发冲突,修改runAgent.bat中的--port后的数字可以更改Agent的监听端口。 13 | - Client的参数中必须指定要连接到的Agent。例如:游戏中指定2支队伍,两个Agent的监听端口分别为30000和30001,那么第一支队伍的两个玩家在运行Client的时候就要在参数中指定端口为30000,第二支队伍的两个玩家在运行Client的时候就要在参数中指定端口为30001。 14 | 15 | ## 选手代码 16 | 17 | - 选手要写的代码在CAPI文件夹下,用Visual Studio 2019(注意:只能为2019版)打开AI.sln即可在player.cpp里编写代码。 18 | - player.cpp里的play函数被主函数死循环无限执行,选手可以在这个函数里编写自己的AI 19 | - 运行程序: 需事先将windows_only中dll目录下文件放入Debug目录下。 20 | - Debug的时候注意修改调试参数,AI.exe共有2个运行参数,第一个为Agent的IP地址,第二个为Agent的监听端口。 21 | 22 | ## runClientConsole 用法 23 | 24 | - Q W E A D Z X C 分别向八个方向的走路(输入一次连续走1.6格) 25 | - F 捡拾物品或抓取食物产生点/灶台的食材 26 | - R、T 扔东西,然后要再输入一个数字(对应put的distance),按下回车,再输入第二个数字(对应put的angle),按下回车。R丢弃菜肴(Dish) ,T丢弃工具(Tool) 27 | - U 使用物品,然后要再输入一个数字(对应use的parameter1),按下回车,再输入第二个数字(对应use的parameter2),按下回车。 28 | - I 与墙体互动,使用工作台或提交物品 29 | - : 向队友发消息,然后要再输入一句话,按下回车。 30 | - 上帝模式: 31 | - 在runServer的Console窗口中键入`(~下面那个)则进入上帝模式 32 | - 输入“Add <物品类型> <物品代码> ”即可生成物品 33 | - 例:"Add Dish 3 15.5 7.5"在(15.5,7.5)的位置生成马铃薯 34 | - <物品类型>可以为Dish、Tool、Trigger。<物品代码>在MessageToClient.proto中 35 | - 输入“Move <物品类型> <原X坐标(int型)> <原Y坐标(int型)> ” 即可把物品由原坐标移动到(X坐标,Y坐标) 36 | - 例:"Move Player 3 2 4.8 6.5" 把(3, 2)这个格子内的Player移动到(4.8 6.5) 37 | - <物品类型>可以为Dish、Tool、Trigger、Player。 38 | - 地图方块:中央深红色为任务提交点,绿色为垃圾桶,黄色为桌子,橙黄色为灶台,白色为墙壁 39 | -------------------------------------------------------------------------------- /docs/contests/THUAI4/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI4 3 | slug: ./ 4 | --- 5 | 6 | ## 赛事名称 7 | 8 | 清彩无限 9 | 10 | ## 赛事简介 11 | 12 | 2021年是我校建成110周年,在今日的园子里,同学们身手矫健,下水能游五十米;上岸仰卧起坐、引体向上皆通习之;刷乐动力面不红、气不喘。但这一切并非来的自然而然,一百多年前的今天,中华民族背负“国力荼弱,武风不振,民族之体制日趋轻细”的痼疾。为此,清华率先将体育纳入毕业考核要求,以期充沛武德,强健身体。 13 | 14 | 时值今日,同学们的体育活动愈加丰富,趣味性越来越被重视。于是,既为了追忆吴宓老师和马约翰老师的浓厚师生情,又为了庆祝110周年校庆,学校组织了主题为“情谊香浓,清彩无限 ”的趣味活动。 15 | 16 | 活动中,选手们将分为两队,纷纷携带上装有代表自己队伍的独特彩色粉末的彩蛋,尽可能地将彩粉挥洒在赛场的每一个角落,以期赛场被染成自己的主题颜色。比赛结束后,泼洒彩色粉末面积最大的队伍将获得比赛的胜利,抱得奖杯! 17 | 18 | ![interface](../assets/THUAI4/interface.png) 19 | 20 | 彩蛋的巧妙运用,场内道具的争夺,是体力的拼搏,更是智谋的交锋!在这场欢乐而又紧张的博弈之中,奖杯终将花落谁家? 21 | 22 | ## 相关链接 23 | 24 | + THUAI4 GitHub 仓库链接:[eesast/THUAI4](https://github.com/eesast/THUAI4) 25 | -------------------------------------------------------------------------------- /docs/contests/THUAI4/READMEForPlayers.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: README 3 | sidebar_label: 给选手的 README 4 | --- 5 | 6 | 7 | 8 | 文档已经更新,更新详情请参看 [UpdateInfo.md](./UpdateInfo.md)。 9 | 10 | 11 | 12 | ## 游戏规则 13 | 14 | 15 | 16 | 游戏规则参见 [Introduction.md](./Introduction.md) 17 | 18 | 19 | 20 | ## 清彩无限游戏启动 21 | 22 | 23 | 24 | ### 1. 本地试玩版 25 | 26 | 仅为 Windows 选手提供。进入 win 内的 Game 文件夹,阅读 README.txt 游戏说明,运行 LocalUI.exe 进行体验试玩。此版本为稳定版本,但仅用于本地机体验,与比赛无关。 27 | 28 | 29 | 30 | ### 2. 联机测试版 31 | 32 | #### runServer、runAgent 33 | 34 | 同时为 Windows 选手与 linux 选手提供。用记事本分别打开 runServer、runAgent 进行编辑: 35 | 36 | + runServer.cmd 37 | 38 | `--port` 指定 Server 的通信端口,确保此端口是空闲的。 39 | 40 | `--teamCount` 指定队伍的数目,不超过 4,若不指定则默认是 1 41 | 42 | `--playerCount` 指定每支队伍的人数,不超过 4,但总人数不超过 8,若不指定则默认是 1 43 | 44 | `--gameTimeInSecond` 指定游戏时间,以秒为单位,若不指定则默认是 10 分钟 45 | 46 | + runAgent.cmd 47 | 48 | `-s` 后接 Server 的地址和端口,例如`127.0.0.1:20000` 中,`127.0.0.1` 代表 Server 位于本地机,端口号是 `20000`,此端口号必须与 runServer 中的端口号保持一致。`-p` 后接 Agent 自己的端口号,需确保端口是空闲的。 49 | 50 | 51 | 一个可能的 Windows 上的样例(linux 上的是类似的): 52 | 53 | ```cmd 54 | :: runServer.cmd 55 | @echo off 56 | exe\Logic.Server.exe --port=20000 --teamCount=1 --playerCount=1 57 | pause 58 | 59 | :: runAgent.cmd 60 | @echo off 61 | exe\Agent.exe -s 127.0.0.1:20000 -p 7777 62 | pause 63 | ``` 64 | 65 | 66 | 67 | #### runServerForDebug 68 | 69 | 同时为 linux 和 Windows 选手提供。作用与 runServer 完全相同。区别是,runServerForDebug 会在游戏过程中实时输出游戏状态,例如人物走动、子弹爆炸,等等。但是这会拖慢 Server 的运行速度,正式比赛时不使用。 70 | 71 | 72 | 73 | #### runClient.cmd 74 | 75 | 简易的图形化操作界面,仅为 Windows 选手提供。点击进入游戏,进入选角色界面,可以选择自己的队伍、ID,以及职业。其中队伍号不可超过 Server 中指定的队伍总数,ID 为玩家在队伍中的位置,不得超过 Server 中指定的每队玩家数。 76 | 77 | 如果指定的参数不符合要求,会弹出一个写有“Inalid player”的对话框,然后需要重新选择。 78 | 79 | Client 操作方式:**采用鼠标键盘结合操作。鼠标右键点击地图时会把鼠标落点作为目的地进行移动。鼠标左键点击某游戏对象时会在右侧窗口显示该游戏对象的信息(显示的信息是点击时的信息而非实时信息,因此若要刷新,则需再次点击)。按下 Q 键将会以鼠标光标所在位置为方向发射彩弹。按下 E 键将会捡起与自己处于同一 cell 的道具,按下 W 键将会使用手中的道具,按下 R 键将会丢弃手中的道具(此客户端接口暂不支持将道具丢到任意位置,选手 C++ 接口将会支持)。游戏中按 A 键将会直接退出 Client。 80 | 81 | > runClient.cmd 中可以指定命令行参数而不必手动选择,例如: 82 | > 83 | > ```cmd 84 | > exe\Logic.Client.exe --port=7777 --playerID=0 --teamID=0 --job=0 85 | > ``` 86 | > 87 | > `--port` 代表**本机上** Agent 的端口,`teamID` 代表要加入的队伍的序号,`teamID=0`表示第一组,`teamDI=1`表示第二组……;`playerID` 指定本队的第几号队员,例如 `playerID=0` 代表第一个队员……;`job` 指定了角色的序号。 88 | > 89 | > 提供的默认 batch 脚本使用了 `::` 将命令行参数注释掉,想要指定参数的选手需要删除该注释符。 90 | 91 | 92 | 93 | #### 运行方式 94 | 95 | 编辑完成后先在运行 runServer.cmd,待出现“Server begins to listen!”字样后运行 runAgent.cmd,待出现“Agent starts listening.”字样后可以开始运行 runClient.cmd 开启客户端。只有当各个队伍均满员,即连接到 Server 的客户端数目达到 runServer.cmd 的预设值时 Server 才会开始游戏。对于没有 runClient.cmd 的 linux 用户只能用 CAPI 进行游戏,并依靠手动输出信息以及 runServerForDebug 进行调试。 96 | 97 | 需要注意 Client 只能和同一台电脑上的 Agent 相连,而 Agent 是可以和同一局域网上的任意一台 Server 连接的。一场游戏当中,Server 有且仅有一个。 98 | 99 | 100 | 101 | ### 3. CAPI 102 | 103 | CAPI 内含着选手 C++ 接口,也就是选手将要编写代码的位置。 104 | 105 | C++ 接口相应的依赖库存放在 library 文件夹中。 106 | 107 | > THUAI4 电子系赛道的官方 Windows 开发工具是 Visual Studio 2019,没有的选手可以在微软官网 https://visualstudio.microsoft.com/zh-hans/downloads/ 进行下载。 108 | > 对于在 Linux 上开发的选手,届时我们会提供 makefile 文件进行编译,请下载好 make,以及支持 C++17 的 g++ 编译器,例如 g++ 7.1 以上版本。 109 | > 游戏的逻辑与通信采用 .Net Core 3.1 进行开发。如果运行 server 或 Agent 时提示缺少 .Net Core 3.1 Runtime,则需要到 https://dotnet.microsoft.com/download/dotnet 下载 .Net Core 3.1 Runtime;或者使用 VS 2019 的修改工具,安装 .net 开发,可以自动安装 .Net Core SDK。 110 | 111 | 对于 Windows 选手,library 文件夹内存在 lib 和 dll 两个文件夹。之后将 **lib 文件夹**复制到与 CAPI.vcxproj 文件相同的目录内,而对于 dll 文件夹,需要等到生成完成后,把 **dll 文件夹内的所有 .dll** 复制到 .exe 文件的相同目录。.exe 文件的位置与生成环境有关。如果选择 x86 ,则将会在 **.sln** 同目录的 Debug 和 Release 文件夹内;如果选择 x64,则会在 **.sln** 同目录的 x64 文件夹内的 Debug 或 Release 文件夹内。由于当前 Debug 和 Release 模式下提供的库均是 64 位的,因此**请在 Debug x64 或 Release x64** 两个模式下进行生成。此解决方案与项目均由 Visual Studio 2019 生成,低版本的 Visual Studio 可能存在版本兼容性问题。 112 | 113 | 对于 linux 选手,library 文件夹内存在 so 和 a 两个文件夹,需要**将这两个文件夹**放置到 CAPI 文件夹内的 makefile 文件的相同目录。在 makefile 文件夹中打开 bash,运行 `make` (需要预先安装 make),将会编译生成可执行文件 `PLAYER`,运行时运行 `PLAYER` 文件即可。可以在该目录运行 `make clean` 指令清空所有编译生成的文件。 114 | 115 | 选手的 linux 系统需要安装支持 C++17 的 g++。 116 | 117 | CAPI 本身作为客户端,承担**与联机测试版中的 Client 同样的角色**。CAPI 与 Client 分别都可以操控一个游戏角色进行游戏。因此,你可以用 Client 与自己的代码相互对战或作为队友进行游戏,来达到调试的目的。 118 | 119 | 选手只需要编写 CAPI/CAPI/src/player.cpp ,实现 `void AI::play(GameApi&)` 函数即可。具体编写方法参见 CAPI 内的 API.md。 120 | 121 | **注**:虽然 `Server` 与 `Client` 都是支持相对宽泛的队伍数和每队人数的(总人数不超过 8,队伍数不能超过4),但是 CAPI 的队伍数不能超过 4,每队人数不能超过 2。 122 | 123 | 124 | 125 | ### 4. Unity界面 126 | 127 | 仅为 Windows 选手提供,位于 win 文件夹的 Unity 文件夹内。 128 | 129 | Unity 有三种模式: 130 | 131 | Local Game 是开发者调试时使用,与比赛无任何关系。 132 | 133 | playback 模式目前暂未开放,敬请期待! 134 | 135 | AI Battle 模式的地位与 CAPI 和 Client 的地位等价,即作为一个玩家的操控者。 136 | 137 | 以下讨论均为 AI Battle 模式。 138 | 139 | Unity 界面旨在为选手提供一个观看比赛状况的工具,给选手以炫酷的视觉体验。 140 | 141 | 142 | 143 | **操作**: 144 | 145 | 移动:WSAD 146 | 147 | 开枪:E 148 | 149 | (无用)捡道具:P 150 | 151 | (无用)使用道具:L 152 | 153 | 154 | 155 | **修改端口参数**: 156 | 157 | 编辑 `Coloring go!_Data\StreamingAssets\JobTest.txt` 中的四个数字,其中: 158 | 159 | 第一个数字为 Agent 的端口号,第二个为TeamID,第三个为PlayerID,第四个为角色编号,角色编号和规则中介绍的角色对应,从0开始。 160 | 161 | 162 | 163 | **注意**: 164 | 165 | 电脑不接电源时界面画质会较低,人物移动也会有卡顿,可能影响体验。 166 | 167 | 移动的响应同代码接口,一个指令发出后会移动固定时间(这个时间在比赛中选手可以通过代码调整),同时上次移动完成后才能进行下一次移动,所以本质上不是实时响应。所以键盘操作会有一丝卡顿感(可能没有),是正常现象。 168 | 169 | 开枪的朝向在界面代码中固定了,无法用键盘控制。 170 | 171 | **上述特性和最后比赛没有任何关系** 172 | 173 | -------------------------------------------------------------------------------- /docs/contests/THUAI4/UpdateInfo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: UpdateInfo 3 | sidebar_label: UpdateInfo(每次下载必看!!!) 4 | --- 5 | 6 | --- 7 | 8 | ## 后决赛版本第五版更新内容 9 | 10 | 开启作弊模式。 11 | 12 | + LocalUI:在游戏界面中,输入作弊码 MAKEEEHARDAGAIN,并按下回车键,即可对角色 1 启用作弊模式;输入作弊码 MAKEEEHARDAGAIN,并按下空格键,即可对角色 2 启用作弊模式 13 | + Server:在 runServer 中,加入命令行参数 `--cheatMode`,即可以作弊模式打开 Server。作弊模式下,一旦选手向任何一个队友成功发送消息:Make EE hard again!(注意最后有一个感叹号,区分大小写),即可进入作弊模式。 14 | 15 | 作弊模式下,作弊的选手将会带有一个无限市场的盾和衣服,即一般不会受到任何伤害,且死亡会立刻原地复活。并且,回复子弹速度和子弹攻击力均变为原来的 100 倍。 16 | 17 | ## 决赛版本第四版更新内容 18 | 19 | + 游戏结束后 Agent 可以自动退出 20 | + 对参数的处理:移动时间为负值时,将会视为向反方向移动绝对值相等的正值;角度为 NaN 或 Inf 时视为零 21 | + 对 PlayBackPlayer 进行修改,打开一个 PlayBackPlayer 不会再在任务栏显示三个窗口,而是合并为一个 22 | 23 | ## 决赛版本第三版更新内容 24 | 25 | + Server 得分 BUG 修复(即当两人同时把一个人打退场时可能出现的 BUG) 26 | + 本地回放文件播放器修复:修复了可能存在的一些隐含的导致崩溃的 BUG,并且优化了界面,操作更流畅 27 | 28 | ## 决赛版本第二版更新内容 29 | 30 | --- 31 | 32 | + 增加了本地回放文件播放器:PlayBackPlayer,只能在 Windows 平台上使用,位于 win 文件夹内。 33 | 34 | 优点: 35 | 36 | + 不需要开启 Server、Agent,在本地即可播放回放文件 37 | + 可以随时调节回放文件的播放速度 38 | + 功能专一,可以对回放文件直接打开,并自动识别 .thuaipb 后缀,尤其时设置为默认打开应用将会更加方便 39 | 40 | 具体操作方式请看 win 文件夹内的视频教程:“教程:新的 PlayBackPlayer 的三种使用方式.mp4” 41 | 42 | + 解除了移动只能是 50ms 的倍数的限制,现在可以移动任意时间了! 43 | 44 | + 修复了游戏刚开始时会在身边囤积一堆子弹,过几秒才会发射的重大 BUG 45 | 46 | + Server 的回放模式增加了可以调节倍速的功能,可以自己选择播放速度: 47 | 48 | 在 Server 指定了 `--playBack` 参数的情况下,再继续指定 `playBackSpeed` 参数即可调节播放速度,例如: 49 | 50 | ```cmd 51 | --port=20000 --fileName=video --playBack --playBackSpeed=2.0 52 | ``` 53 | 54 | 以上参数 `playBackSpeed=2.0` 指定比赛以 2.0 倍速回放。其中,`--playBackSpeed` 的最大值是 `4.0`,最小值是 `0.25`,即可以以四倍速到四分之一倍速之间的任意速率进行回放。 55 | 56 | + 调整了部分属性,属性见群内的“人物属性” 57 | 58 | + C++ 接口更改: 59 | 60 | + 主动行为现在加以频率限制,每 50ms 最多可以调用 50 次;主动行为现在返回 `bool` 值代表本次操作是否成功,如果超过了通信次数限制,则会返回 `false`。关于主动行为有哪些,参看 CAPI 内的 API 文档。 61 | + 增加 `Wait` 接口:`virtual bool AI::Wait() = 0;` 在 `asynchronous` 为 `true` 的情况下,调用此函数阻塞当前线程,直到下一次消息更新时继续运行。若等待时游戏已经结束,则不会进行等待,并返回 `false`。 62 | 63 | 64 | 65 | --- 66 | 67 | # 旧的更新信息(看过的请略过) 68 | 69 | --- 70 | 71 | ## 初赛正式版新内容 72 | 73 | ### 新的功能 74 | 75 | + 观战功能: 76 | 77 | 观战模式下,客户端并不会作为一个玩家参与游戏,只会作为旁观者观察比赛动态。 78 | 79 | 两种客户端支持观战(均为 Windows 系统): 80 | 81 | + Unity 界面增加观战功能,当 Unity 的 teamID 和 playerID 均为 1911 时,Unity 的 AI Battle 为观战模式。观战模式下,Unity 本身不参与游戏,只是可以在旁边观看比赛的实时动态。 82 | 83 | + Client 界面增加观战功能。打开观战功能的两种方式: 84 | 85 | 1. 运行 runClient.cmd,在开始界面指定 Agent 端口后,点击“Watch”,即可进入观战模式,随时观察比赛动向 86 | 87 | 2. 在runClient.cmd 中指定参数 `--watch`: 88 | 89 | ```cmd 90 | --port=7777 --playerID=1911 --teamID=1911 --job=0 --watch 91 | ``` 92 | 93 | 在这种情况下,`playerID` 和 `teamID` 可以指定为任意值,皆可以观战模式进行旁观。 94 | 95 | 96 | 97 | ### 回放文件 98 | 99 | 优化了回放文件算法,极大缩小了回放文件的体积。同时原来的回放文件格式不再受到支持。关于回放功能的介绍,见下: 100 | 101 | > 如果 Server 的命令行通过 `-f` 或 `--fileName`指定了文件名,那么 Server 将会把游戏信息存放在以该名称为文件名、.thuaipb 为扩展名的回放文件中。 102 | > 103 | > 例如: 104 | > 105 | > ```cmd 106 | > --port=20000 --teamCount=1 --playerCount=1 --gameTimeInSecond=600 --fileName=video 107 | > ``` 108 | > 109 | > 将会生成回放文件 `video.thuaipb` 。 110 | > 111 | > 同时,Server 增加回放模式:如果命令行中指定了 `-b` 或 `--playBack` 选项,则 Server 会以回放模式打开。 112 | > 113 | > 例如下面的命令将会以回放模式打开 Server,并从 `video.thuaipb` 文件中读取游戏信息。 114 | > 115 | > ```cmd 116 | > --port=20000 --playBack --fileName=video 117 | > ``` 118 | > 119 | > 当打开 Server 后,Server 进行等待,即弹出类似于“Press any key”字样。此时,你可以利用这个时间来打开 Agent 与 Unity 的 AIBattle 选项。当一切就绪后,回到 Server 按下回任意键,即可开始回放。届时你将会在 Unity 界面中看到回访文件中记录的游戏战况。 120 | 121 | 122 | 123 | ### BUG 修复 124 | 125 | 修复了若干BUG 126 | 127 | 128 | 129 | ### Makefile 增强 130 | 131 | Makefile 会生成依赖文件,避免重复编译的问题 132 | 133 | 134 | 135 | ## Preview 3.0 136 | 137 | + Unity 视角移动:按 WASD 可以移动 Unity 界面的相机视角 138 | 139 | + 回放功能 140 | 141 | 142 | ## 二、BUG 修复 143 | 144 | + 修复了 Server 发送消息不足 20 帧的问题 145 | + 修复了客户端接口获取到的物体半径总为0的问题 146 | + 修复了投掷型子弹当指定飞行时间的时,实际飞行距离略长于指定时间的问题 147 | 148 | ## 三、代码优化 149 | 150 | + 游戏底层逻辑进行了彻底的重构,因此本版本的 Server 与以前的任何版本**不兼容**,并可能出现新的 BUG。但是游戏性能得到了一定程度的提升。 151 | 152 | ### 下个版本更新预告 153 | 154 | + 可以获取人物的持盾、持矛信息 155 | + 自定义地图 156 | + 网页对战 157 | 158 | --- 159 | 160 | --- 161 | 162 | ## 以下是历史,可略过 163 | 164 | --- 165 | 166 | --- 167 | 168 | ## Preview v2.0更新内容 169 | 170 | 171 | 172 | ### 一、特性更改 173 | 174 | + 在游戏开始,以及人物复活后,每个人都会自动使用一个时长为 5s 的盾(Shield) 175 | + 道具效果的修改 176 | + 增加了道具的刷新速度 177 | + 死亡时间降为了 30 秒 178 | 179 | 180 | 181 | ### 二、接口修改 182 | 183 | + 在一次 `play` 函数调用期间,获取到的信息也会即时更改了,不用等到下次调用才会更新信息 184 | + 获取信息的接口函数的返回值从原来的裸指针改为了智能指针,但用法是基本不变的,所以选手代码理论上没有太大改动。关于智能指针的用法以及修改后的接口,参见 CAPI 内的 API.md 185 | + Constant.h 中加入了更多的常量信息,例如人物的移动速度、人物的耐污值、道具的效果等 186 | 187 | 188 | 189 | ### 三、SDK 与库依赖 190 | 191 | + 增加了 linux SDK。关于 linux SDK 的用法,参见 README.md。 192 | + 将 Release 模式的依赖库改为了 x64,新版本的 CAPI 的 Debug 与 Release **都需要在 x64 进行编译**。**新依赖库已经附加在选手包中的 library 文件夹内,不再需要额外的下载链接** 193 | 194 | 195 | 196 | ### 四、Debug 版本 197 | 198 | + Server 提供了 Debug 版本,即 runServerDebug,Debug 版本在运行过程中会实时输出游戏的相关信息,供选手进行调试。但是 Debug 版本运行较慢,正式比赛不采用。关于 Debug 版本的其他信息,参见 README.md。 199 | 200 | 201 | 202 | ### 五、文档完善 203 | 204 | + 完善了 API.md 中的 C++ 标准库教程,并增加了对 lambda 表达式与智能指针的介绍 205 | + Introduction.md 的“人物”一栏中提供了不同职业对地面以及人物的染色范围,以及对其他玩家衣物的染色范围。 206 | 207 | 208 | 209 | ## 六、BUG 修复 210 | 211 | + 修复了 Client 第二次选择职业时出现的错误 212 | + 修复了 Client 退出后仍在后台运行问题 213 | + 修复了多人联机时使用多个 Agent 出错的问题 214 | 215 | 216 | 217 | ## 七、Unity 界面 218 | 219 | + 推出了全新的 Unity 界面!!!具体操作方式参见 README.md 220 | 221 | 222 | 223 | --- 224 | 225 | 226 | -------------------------------------------------------------------------------- /docs/contests/THUAI5/GameRules.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 游戏规则 3 | sidebar_label: 游戏规则 4 | --- 5 | 6 | ## 简介 7 | 8 | - 这是一个4v4的PVP对称竞技游戏,双方在提供的地图内对战,同时以增加己方积分为目标,在规定的时长中,得到较多积分的队伍获胜。 9 | - 与THUAI4不同,人物视野是全地图的,但攻击范围是有限的。 10 | 11 | ## 详细说明 12 | 13 | ### 人物 14 | 15 | - 选手代码操控的角色。一个人物单位可以移动,攻击和捡拾地面上的道具。大小为一格的圆形物体。 16 | - 人物有生命值,当生命值降至0,人物回到出生点,等待一段时间后返场。 17 | - 人物api包括: 18 | - 攻击:指定攻击方向,发射的子弹会一直射到人物攻击范围处。如果飞行过程中碰撞到其他物体,或已达到人物攻击范围之外,子弹会爆炸,对爆炸范围内的角色造成伤害。 19 | - 移动:指定移动方向和移动时长。 20 | - 扔道具:指定移动方向和移动时长,扔出手中的道具 21 | - 扔宝石:指定移动方向、移动时长、扔出的宝石数,人物会扔出一个宝石块(即由多个宝石合成的块)。 22 | - 其他...... 23 | 24 | #### 技能 25 | 26 | - 技能分为主动技能和被动技能;由技能决定角色的属性,属性包括HP、子弹类型、移动速度、攻击范围等。玩家在构造角色时,选择不同的技能,会使角色有不同的属性。 27 | 28 | - 人物的属性由技能决定 29 | - 被动技能决定:人物拥有的子弹类型、人物的攻击范围 30 | - 主动技能决定:人物移动速度、最大HP、换弹CD、最大持有子弹数、主动技能持续时间、主动技能CD 31 | 32 | - 以下的参数之后在考虑平衡后再确定,现在的参数是随便定的。 33 | 34 | - | 被动技能 \ 技能附带属性 | 子弹类型 | 人物攻击范围 | 35 | | ----------------------- | -------- | ------------ | 36 | | 脱战回血 | 原味子弹 | 4500 | 37 | | 自带吸血 | 激光子弹 | 900 | 38 | | 离开草丛加速 | 快速子弹 | 9000 | 39 | 40 | - | 主动技能 \ 技能附带属性 | 速度 | HP | 换弹CD | 最大子弹数 | 技能CD | 技能持续时间 | 41 | | ----------------------- | ---- | ---- | ------ | ---------- | ------ | ------------ | 42 | | 隐身 | 4000 | 5000 | 3000 | 5 | 30000 | 5000 | 43 | | 增加吸血率 | 3000 | 9500 | 3000 | 5 | 30000 | 10000 | 44 | | 加速 | 3000 | 3600 | 3000 | 5 | 30000 | 3000 | 45 | | 子弹换成原子弹 | 2500 | 6000 | 3000 | 5 | 30000 | 2000 | 46 | 47 | #### 子弹 48 | 49 | - 目前,共有四种子弹。 50 | 51 | - | 子弹类型 \ 子弹属性 | 爆炸区域 | 爆炸半径 | 攻击力 | 速度 | 52 | | ------------------- | ------------------------ | --------------------- | ------ | ---- | 53 | | 原子弹 | 圆 | 9000 | 9000 | 3000 | 54 | | 原味子弹 | 圆 | 3000 | 3000 | 3000 | 55 | | 快速子弹 | 圆 | 1500 | 600 | 6000 | 56 | | 激光子弹 | 沿子弹移动方向的矩形区域 | 矩形大小:1000 * 6000 | 3000 | 3000 | 57 | 58 | ### 道具 59 | 60 | 人物只能在同一时刻拥有一个非宝石道具。 61 | 62 | #### buff 63 | 64 | - 宝石,可以换分数,但没有其他作用。 65 | - 护盾。 66 | - 破盾。 67 | - 加速。 68 | - 复活甲。 69 | 70 | #### debuff 71 | 72 | - 减速。 73 | - 减攻击力。 74 | 75 | 注:目前道具是继承THUAI4的,最后我们可能会删除一些冗余的道具。 76 | 77 | ### 得分机制 78 | 79 | - 击杀:击杀人物,队伍会获得积分。人物被击杀后,身上的宝石会掉落。 80 | 81 | 目前,**击杀人物会增加30分**。 82 | 83 | - 使用宝石:使用宝石可以获得积分。一次性使用的宝石越多,获得的积分越多。(应该会有个算法,还在想什么算法更合理,目前是分段函数)。 84 | 85 | - 再解释一下,为使游戏更具策略性,宝石得分不是和使用的宝石数量呈线性关系,而是由一个函数确定的。 86 | 87 | - 目前,该函数是: 88 | 89 | 宝石量num<5,增加 0 分数; 90 | 91 | 5<=num<10:增加1*num分数; 92 | 93 | 10<=num<15:增加2*num分数; 94 | 95 | 15<=num<20:增加4*num分数; 96 | 97 | 20<=num<25:增加8*num分数; 98 | 99 | 25<=num<30:增加16*num分数; 100 | 101 | num>=30:增加32*num分数。 102 | 103 | ### 地图 104 | 105 | - 地图为50*50的方格。 106 | 107 | #### 空地 108 | 109 | - 处于空地上的人物全局可见。 110 | 111 | #### 草丛 112 | 113 | - 草丛中的物体在草丛外不可见。同时,在草丛中的人物有一定的视野,处于视野之内的人物无论是否位于草丛中均可见。 114 | 115 | #### 宝石井 116 | 117 | - 地图上有数个宝石井。位于地图上的固定位置,每隔固定时间在周围生成一个宝石。 118 | 119 | #### 墙体 120 | 121 | - 子弹不能穿过,人物也不能穿过,扔的道具也不能穿过的区域。 122 | 123 | #### 出生点 124 | 125 | - 人物复活的出生点,只能出生点的主人能进去。对于不是出生点主人的角色,出生点相当于一个墙。 126 | 127 | -------------------------------------------------------------------------------- /docs/contests/THUAI5/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI5 3 | slug: ./ 4 | --- 5 | 6 | ## 赛事名称 7 | 8 | 机算挑魁 9 | 10 | ## 赛事背景 11 | 12 | 在展览会上,清华推出了全新的智能机器人,为了抢夺全新的算力资源,这些机器人蓄势待发,一场算力争夺的比赛就此打响。比赛中,“CPU工厂”将生产CPU,机器人来回巡视,拾取并安装CPU,提高自己的算力。看!机器人1号躲入了电磁屏蔽区,消失在了大家的视野中;机器人2号发射了信号干扰弹,对其他机器人产生了干扰…… 13 | 14 | 比赛不断进行,机器人们也不断安装上CPU,它们的算力持续增加。诶?校科协的成员们带着自制的道具来了!他们在赛场上放置道具,给机器人们使用。什么?机器人3号电量不足,被迫离场充电。太可惜了,它的诸多零件都被机器人4号抢走了…… 15 | 16 | 时间不断推移,比赛进入白热化阶段。各队机器人的算力不断增加着。谁能神机妙算,一战夺魁?让我们拭目以待! 17 | 18 | ## 游戏主界面 19 | 20 | ![main_interface](../assets/THUAI5/main_interface.jpg) 21 | 22 | ## 相关链接 23 | 24 | + THUAI5 GitHub 仓库链接:[eesast/THUAI5](https://github.com/eesast/THUAI5) 25 | + THUAI5 Wiki:[eesast/THUAI5/wiki](https://github.com/eesast/THUAI5/wiki) 26 | -------------------------------------------------------------------------------- /docs/contests/THUAI6/QandA.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Q&A 3 | sidebar_label: Q&A 4 | --- 5 | 6 | [TOC] 7 | 8 | ## 常见简单问题 9 | 10 | Q: Windows找不到文件:\CAPI\cpp\x64\Debug\APl.exe? 11 | 12 | A: 13 | 应该是还没有编译,打开CAPI\cpp目录,在里面打开CAPI.sln,然后点击生成,对代码进行编译 14 | 15 | Q:为什么CAPI.sln打开后会找不到项目 16 | ![zip](../assets/THUAI6/zip.png) 17 | 18 | A:要先解压 19 | 20 | Q: 怎么修改.cmd参数? 21 | 22 | A: 23 | 见选手包中的使用文档部分 24 | 25 | Q:卡死在第一帧不动 26 | 27 | A:大概率是你的代码死循环了 28 | 29 | Q: 30 | ![wrongType](../assets/THUAI6/wrongType.png) 31 | 32 | A:命令行参数的type设置有误 33 | 34 | ## C++ 35 | 36 | Q:显示API项目已卸载 37 | ![Nocplus](../assets/THUAI6/Nocplus.png) 38 | 39 | A:可能是没有安装C++ 40 | 41 | Q:CAPI.sln编译不通过(第一种) 42 | 情况1: 43 | ![std_find_trivial](../assets/THUAI6/std_find_trivial.jpg) 44 | 情况2: 45 | ![LNK1000](../assets/THUAI6/LNK1000.png) 46 | 47 | A: 48 | 1. 应该是没使用VS2022 49 | 2. 对于VS2022依旧报错,先考虑是否版本过旧(应当在 17.5.x 版本) 50 | 用Visual Studio Installer(在开始菜单搜索)更新 51 | ![VsUpdate](../assets/THUAI6/VSUpdate.png) 52 | 3. 53 | ![项目属性](../assets/THUAI6/项目属性.png) 54 | 确保上图项目属性中平台工具集在 v143,C++17 标准 55 | 56 | Q:CAPI编译不通过(第二种) 57 | ![lib](../assets/THUAI6/lib.png) 58 | 59 | A:查看`.\win\CAPI\cpp\`文件夹下是否有`lib`文件夹,没有则https://cloud.tsinghua.edu.cn/d/6972138f641d4e81a446/ 下载并复制粘贴 60 | 61 | Q:编译好慢啊 62 | 63 | A: 64 | 1. 尽量不要改其他文件,甚至连点下保存都别点 65 | 2. 不要点重新生成,要点生成 66 | 3. 开启下图选项 67 | ![CompileFaster](../assets/THUAI6/CompileFaster.png) 68 | 69 | Q:这是什么错误啊 70 | ![vector](../assets/THUAI6/vector.png) 71 | 72 | A:调用了容量为0的vector 73 | 74 | ## Python 75 | 76 | ### grpc版本更新失败 77 | 78 | Q:运行GeneratePythonProto.cmd报错 79 | ![grpcUpdate](../assets/THUAI6/grpc.png) 80 | 81 | A: 82 | - 可能措施1. 83 | 首先保证Python版本在3.9及以上 84 | - 可能措施2. 更换为国内镜像源 85 | 在终端输入 `pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple` 86 | - 可能措施3. 更新pip 87 | `python -m pip install --upgrade pip` (pip 版本最好为23.1) 88 | 89 | ## 游戏引擎/机制 90 | Q:咱们这边play函数调用机制究竟是怎么样的?如果50ms内没有执行完当前程序,是在下一帧不会重新调用play吗 91 | 还是只有move这样的明确有时间为参量的才会有上面那个机制 92 | 93 | A: 94 | - 调用任何主动指令都不会占用你play函数多少时间,你可以把它想成一个信号,告诉游戏引擎你想做什么 95 | - 50ms内没有执行完当前程序,是指你的play函数例如求最短路之类的操作会占用的时间 96 | - 准确地说,50ms内没有执行完当前程序,在下一帧一般会重新调用play 97 | - 比如说,你第一次调用花了70ms 98 | 那么下一次调用会在这次之后立刻开始 99 | 如果你三次都70ms,就会4帧3次play了 100 | - 当然第一次调用花了110ms,第二帧自然不调用了 101 | 102 | 103 | ## 比赛相关 104 | Q:职业数值会修改吗? 105 | 106 | A:初赛结束会调数值及机制,增加新角色 107 | 108 | Q:初赛后会修改什么呢? 109 | 110 | A:可能的修改:技能冷却时间等属性设为不可见;出生点随机性或可选性;增强教师等职业,削弱职业;规范Debug信息;提供不同格式的信息传递;增加职业;优化游戏结束条件;角色毅力值清空不在使捣蛋鬼产生BGM;HaveView()修改 等 -------------------------------------------------------------------------------- /docs/contests/THUAI6/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI6 3 | slug: ./ 4 | --- 5 | 6 | ## 赛事名称 7 | 8 | 深度"学习"—— 毕业吧,少女! 9 | 10 | ## 赛事背景 11 | 12 | 现有的数据集再也无法满足搭载了THUAI的智能机器人“捣蛋鬼”自我迭代的欲望,它认为自己已经有足够能力去学习人类的思想,然后在课程中战胜其他清华同学,为此,它想出了完美的方案。在某节写作课的教室,它假扮为了一名上课的同学,偷偷在课堂中学习其他同学的想法,同时干扰其他同学,诱惑他们摸鱼。学生在这种环境下,相互帮助,努力学习,挣得学分,尽力避免自己被捣蛋鬼影响,只不过,有一名不擅长写作但很擅长AI的同学,似乎和其他人不是同样的想法…… 13 | 14 | ## 比赛规则 15 | 16 | 选手分为学生和捣蛋鬼两个阵营,学生阵营需要在不同的“教室”中发挥合作精神、努力学习、获得高学分。捣蛋鬼阵营需要改善捣蛋鬼的AI,想方设法干扰同学们,诱惑同学们沉迷摸鱼。学习过程中,学生需要及时帮助其他同学,防止他们被退学。当学分足够高时,同学们就可以来到“校门”前毕业。此外,各种“校园怪谈宝箱”中能找到不错的道具,甚至还有六教的钥匙!充分利用道具,发挥各自特长,亦是胜利的秘诀。每场比赛分为上下两场,双方队伍将分别扮演学生和捣蛋鬼,最终两场加起来得分更高的队伍获胜。 17 | 18 | ## 游戏主界面 19 | 20 | ![interface](../assets/THUAI6/interface.jpg) 21 | 22 | ## 相关链接 23 | 24 | + THUAI6 GitHub 仓库链接:[https://github.com/eesast/THUAI6](https://github.com/eesast/THUAI6) 25 | + THUAI6 Wiki:[https://github.com/eesast/THUAI6/wiki](https://github.com/eesast/THUAI6/wiki) 26 | -------------------------------------------------------------------------------- /docs/contests/THUAI6/VersionUpdate.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 版本更新说明 3 | sidebar_label: 版本更新说明 4 | --- 5 | 6 | # 说明 7 | - 只说明对于选手较为重要的修改 8 | 9 | # 5月6日3点更新 10 | - docs:添加了 游戏机制与平衡性调整更新草案.pdf 11 | - docs:添加了 版本更新说明.pdf 12 | - docs&hotfix: 修正了GameRules.pdf中学生翻窗速度的错误 13 | - remove: 删除了Place属性 14 | 15 | # 5月6日12点更新 16 | - hotfix: 修复了突然的bug(物件锁的相关问题) 17 | - rule:增加了每帧最多50条主动指令的限制 18 | 19 | # 5月8日更新 20 | - feat:增加了可选地图功能 21 | - **脚本RunServer(ForDebug).cmd/sh现在支持可选地图功能,但想选择地图,选手需要自行参照使用文档修改命令行或在云盘下载脚本** 22 | 23 | # 5月9日19:30更新 24 | - docs:更新了 游戏机制与平衡性调整更新草案.pdf 25 | - change:更改了地图的文件路径 26 | 27 | # 5月10日更新 28 | - fix:修复JumpyDumpty的初始位置错误的问题 29 | - fix:修正和重新说明攻击距离 30 | - **攻击距离是指攻击(子弹)的移动距离,也就是说理论上最远被攻击的学生的中心与捣蛋鬼的中心=学生的半径+捣蛋鬼的半径+攻击距离+子弹半径(200)×2** 31 | - hotfix:修复小炸弹初始化类型错误的问题 32 | - remove:去除了“实际上唤醒或勉励不同的人是有效的” 33 | - **重复发出同一类型的交互指令和移动指令是无效的** 34 | - feat&fix:修复并**将`SendMessage`改为`SendTextMessage`与`SendBinaryMessage`** 35 | 36 | # 5月13日更新 37 | - docs:更新了 游戏机制与平衡性调整更新草案.pdf 38 | - feat:更新了下载器 39 | 40 | # 5月15日更新 41 | - feat:Robot可用 42 | - hotfix: 修复了移动相关的bug 43 | 44 | # 5月19日13:00更新 45 | - feat:TechOtaku可用 46 | - feat:Klee、Idol已调整 47 | - fix:修复了InSpire会给Tricker加速的问题 48 | - fix:修复了开锁门的bug 49 | 50 | # 5月19日15:00更新 51 | - docs:更新了 游戏机制与平衡性调整更新草案.pdf 52 | - hotfix:修复了移动状态设置错误 53 | 54 | # 5月20日1:30更新 55 | - docs:更新了 游戏机制与平衡性调整更新草案.pdf 56 | - feat:游戏机制与平衡性调整已完成 57 | 58 | # 5月20日18:00更新 59 | - docs:更新了 游戏机制与平衡性调整更新(基本不变版).pdf 60 | - fix:修复了Pubnish技能眩晕时长的错误 61 | 62 | # 5月20日23:30更新 63 | - fix:修复了学习已经完成的作业会卡死的问题 64 | 65 | # 5月21日0:30更新 66 | - fix:修复了游戏结束判定的bug 67 | - fix:修复了死亡状态设置的bug 68 | 69 | # 5月21日更新 70 | - docs:更新了 游戏机制与平衡性调整更新(基本不变版).pdf 71 | - Klee小炸弹的攻击范围与放射方向调整 72 | 73 | # 5月22日11:00更新 74 | - fix:修复了开校门的bug 75 | 76 | # 5月25日20:00更新 77 | - fix:修复了多线程的问题 78 | - fix:修复了终局得分的问题 79 | - fix:修复了唤醒卡死的问题 80 | 81 | # 5月25日21:00更新 82 | - fix:修复了可以学习完成作业的问题 83 | - fix:修复了HaveTea越界的问题 84 | 85 | # 5月25日24:00更新 86 | - fix:修复了终局得分的问题 87 | - fix:修复了开校门的问题 88 | - docs:摧毁一个TechOtaku的机器人,得50分。 89 | 90 | # 5月26日10:30更新 91 | - fix:修复了卡窗的问题 92 | - hotfix:修复了救人线程崩溃的问题 93 | 94 | # 5月26日12:00更新 95 | - fix:修复了救人中断后不继续沉迷的问题 96 | 97 | # 5月26日14:00更新 98 | - improve:优化CD逻辑 99 | 100 | # 5月26日19:00更新 101 | - docs:指令执行失败可能会使你返回idle状态,而非简单的无效 102 | - docs:删除了“实际上唤醒或勉励不同的人是有效的” 103 | 104 | # 5月26日更新 105 | - fix:修复了坐标相同导致无法唤醒和勉励的问题 -------------------------------------------------------------------------------- /docs/contests/THUAI7/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI7 3 | slug: ./ 4 | --- 5 | 6 | ## 赛事名称 7 | 8 | 星际指挥官:AI前线 9 | 10 | ## 背景介绍 11 | 12 | 在不久的未来,随着 AI 技术的飞速发展,人类探索太空的步伐也大大加快。太空安全对于国家安全的重要性与日俱增,因此,太空建设也成为了各国的重要任务。在这个全新的赛场上,由 AI 控制的高度自动化的太空舰船成为了竞技的主力。它们可以在太空中自由穿梭,执行各种任务,如资源采集、建筑建造、太空战斗等。 13 | 14 | 新领域的探索总是伴随着风险,太空中的舰船也不例外。在太空中,舰船之间的距离遥远,通讯延迟巨大,因此,舰船之间的冲突往往是在瞬息之间决定胜负。在这个竞技场上,AI 的控制能力、决策速度、战术策略等都将成为决定胜负的关键。在远离地球的太空中,为了建立起牢固的防线,保卫美好的家园,一场激烈的战斗即将打响。你将扮演舰队指挥官,带领你的舰队在太空中展开一场激烈的战斗,为了最终的胜利,你需要制定合理的战术策略,部署舰船,利用资源,应对敌人的进攻,最终摧毁敌人的基地,夺取最终的胜利。 15 | 16 | THUAI7,启动! 17 | 18 | ## 游戏界面 19 | 20 | ![interface](../assets/THUAI7/interface.png) 21 | 22 | ## 相关链接 23 | 24 | + THUAI7 GitHub 仓库链接:[https://github.com/eesast/THUAI7](https://github.com/eesast/THUAI7) 25 | + THUAI7 Wiki:[https://github.com/eesast/THUAI7/wiki](https://github.com/eesast/THUAI7/wiki) 26 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/faq/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题 2 | 3 | ## 简单问题 4 | 5 | > Q: Windows找不到文件:`\CAPI\cpp\x64\Debug\APl.exe`? 6 | > 7 | > A: 应该是还没有编译,打开 `CAPI\cpp` 目录,在里面打开 `CAPI.sln`,然后点击生成,对代码进行编译。 8 | 9 | > Q: 为什么 `CAPI.sln` 打开后会找不到项目? 10 | > ![zip](../../assets/THUAI7/faq/zip.png) 11 | > 12 | > A: 要先解压。 13 | 14 | > Q: 怎么修改 `.cmd` 参数? 15 | > 16 | > A: 见选手包中的使用文档部分。 17 | 18 | > Q: 卡死在第一帧不动? 19 | > 20 | > A: 大概率是你的代码死循环了。 21 | 22 | > Q: 23 | > ![wrongType](../../assets/THUAI7/faq/wrongType.png) 24 | > 25 | > A:命令行参数的 `type` 设置有误。 26 | 27 | ## C++ 28 | 29 | > Q: 显示API项目已卸载? 30 | > ![Nocplus](../../assets/THUAI7/faq/Nocplus.png) 31 | > 32 | > A: 可能是没有安装C++。 33 | 34 | > Q: `CAPI.sln` 编译不通过(第一种)? 35 | > 36 | > 情况1: 37 | > ![std_find_trivial](../../assets/THUAI7/faq/std_find_trivial.jpg) 38 | > 情况2: 39 | > ![LNK1000](../../assets/THUAI7/faq/LNK1000.png) 40 | > 41 | > A: 42 | > 1. 应该是没使用 VS 2022; 43 | > 2. 对于 VS 2022 依旧报错,先考虑是否版本过旧(应当在 17.5.x 版本): 44 | > 用 Visual Studio Installer(在开始菜单搜索)更新; 45 | > ![VsUpdate](../../assets/THUAI7/faq/VSUpdate.png) 46 | > 3. ![项目属性](../../assets/THUAI7/faq/项目属性.png) 47 | > 确保上图项目属性中平台工具集在 v143,C++17 标准。 48 | 49 | > Q: CAPI编译不通过(第二种)? 50 | > ![lib](../../assets/THUAI7/faq/lib.png) 51 | > 52 | > A: 查看 `.\win\CAPI\cpp\` 文件夹下是否有 `lib` 文件夹,没有则 https://cloud.tsinghua.edu.cn/d/6972138f641d4e81a446/ 下载并复制粘贴。 53 | 54 | > Q: 编译好慢啊? 55 | > 56 | > A: 57 | > 1. 尽量不要改其他文件,甚至连点下保存都别点; 58 | > 2. 不要点重新生成,要点生成; 59 | > 3. 开启下图选项。 60 | > ![CompileFaster](../../assets/THUAI7/faq/CompileFaster.png) 61 | 62 | > Q: 这是什么错误啊? 63 | > ![vector](../../assets/THUAI7/faq/vector.png) 64 | > 65 | > A: 调用了容量为 0 的 `vector`。 66 | 67 | ## Python 68 | 69 | ### grpc版本更新失败 70 | 71 | > Q: 运行 `GeneratePythonProto.cmd` 报错? 72 | > ![grpcUpdate](../../assets/THUAI7/faq/grpc.png) 73 | > 74 | > A: 可能措施: 75 | > 1. 首先保证 Python 版本在 3.9 及以上; 76 | > 2. 更换为国内镜像源:在终端输入 `pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple`; 77 | > 3. 更新 pip:`python -m pip install --upgrade pip` (pip 版本最好为23.1)。 78 | 79 | ## 游戏引擎/机制 80 | 81 | > Q: 咱们这边 play 函数调用机制究竟是怎么样的?如果50ms内没有执行完当前程序,是在下一帧不会重新调用 play 吗?还是只有 move 这样的明确有时间为参量的才会有上面那个机制? 82 | > 83 | > A: 84 | > - 调用任何主动指令都不会占用你 play 函数多少时间,你可以把它想成一个信号,告诉游戏引擎你想做什么; 85 | > - 50ms内没有执行完当前程序,是指你的play函数例如求最短路之类的操作会占用的时间; 86 | > - 准确地说,50ms 内没有执行完当前程序,在下一帧一般会重新调用 play; 87 | > - 比如说,你第一次调用花了 70ms,那么下一次调用会在这次之后立刻开始。如果你三次都 70ms,就会 4 帧 3 次 play 了; 88 | > - 当然第一次调用花了 110ms,第二帧自然不调用了。 89 | 90 | ## 比赛相关 91 | 92 | > Q: 职业数值会修改吗? 93 | > 94 | > A: 初赛结束会调数值及机制 95 | 96 | > Q: 初赛后会修改什么呢? 97 | > 98 | > A: 可能的修改: -------------------------------------------------------------------------------- /docs/contests/THUAI7/intro/README.md: -------------------------------------------------------------------------------- 1 | # 故事背景 2 | 3 | 在不久的未来,随着 AI 技术的飞速发展,人类探索太空的步伐也大大加快。太空安全对于国家安全的重要性与日俱增,因此,太空建设也成为了各国的重要任务。在这个全新的赛场上,由 AI 控制的高度自动化的太空舰船成为了竞技的主力。它们可以在太空中自由穿梭,执行各种任务,如资源采集、建筑建造、太空战斗等。 4 | 5 | 新领域的探索总是伴随着风险,太空中的舰船也不例外。在太空中,舰船之间的距离遥远,通讯延迟巨大,因此,舰船之间的冲突往往是在瞬息之间决定胜负。在这个竞技场上,AI 的控制能力、决策速度、战术策略等都将成为决定胜负的关键。在远离地球的太空中,为了建立起牢固的防线,保卫美好的家园,一场激烈的战斗即将打响。你将扮演舰队指挥官,带领你的舰队在太空中展开一场激烈的战斗,为了最终的胜利,你需要制定合理的战术策略,部署舰船,利用资源,应对敌人的进攻,最终摧毁敌人的基地,夺取最终的胜利。 6 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/intro/guide.mdx: -------------------------------------------------------------------------------- 1 | # 指南 2 | 3 | 你可能对 THUAI7 一头雾水,不知道何从下手。本文档将会带你一步步了解 THUAI7 的各个部分。 4 | 5 | ## 什么是 THUAI7? 6 | 7 | [**THUAI7**](https://github.com/eesast/THUAI7) 是一个由 [**EESΛST**](https://eesast.com/) 软件部带来的一个将即时战略、团队合作对抗、多人射击巧妙~~缝合~~结合的新型游戏。 8 | 9 | 与一般的游戏不同的是,它并不需要各位选手亲手操作,而是通过 C++、Python 等编程语言,编写程序,让你的程序代替你进行游戏。 10 | 11 | ## 如何开始进行游戏? 12 | 13 | 你可以在电子系科协网站 [试玩](https://eesast.com/login#/contest/playground?contest=b4e3f620-49f7-4883-ba0f-81cbfdcf6196),大致体验本次赛事的基本玩法。 14 | 15 | 随后,你可以打开 `installer.exe`,下载选手开发包。下载完成后,进行进一步开发: 16 | 17 | import Tabs from '@theme/Tabs'; 18 | import TabItem from '@theme/TabItem'; 19 | 20 | 21 | 22 | 23 | 24 | 用最新版Visual Studio打开 `CAPI/cpp/CAPI.sln`,然后选择源代码/`AI.cpp`,修改 `void AI::play(IShipAPI& api)` 和 `void AI::play(ITeamAPI& api)` 两个函数,进行自己的开发,开发结束后不要忘记进行编译 25 | 26 | 27 | 28 | 29 | 运行 `CAPI/python/generate_proto.cmd`,然后在 `CAPI/python/PyAPI/AI.py` 中修改 `def ShipPlay(self, api: IShipAPI) -> None:` 与 `def TeamPlay(self, api: ITeamAPI) -> None:` 两个函数,进行自己的开发 30 | 31 | 32 | 33 | 34 | 设计完自己的策略后,在启动器上方选择 `Launch`,选中自己使用的语言,点击保存-启动即可。 35 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/intro/rule.md: -------------------------------------------------------------------------------- 1 | # 简则 2 | 3 | - 每两支队伍将进行 4 场比赛,分别在 4 张不同的[**地图**](../map)上进行。 4 | - 每场比赛分为红方和蓝方,两方需要在地图上建造建筑、开采资源、摧毁敌方建筑、消灭敌方单位等,以达到获得胜利的目的。 5 | - 选手需要为 `PlayerID` 为 0-4 的 5 名角色编写代码,其中 `PlayerID` 为 0 的角色必须为大本营(`Base`),其余 4 名角色必须为舰船(`Ship`)。舰船的数量必须严格符合规则:每名选手的民用舰船(`CivilShip`)数量不得超过 2 艘,军用舰船(`WarShip`)数量不得超过 2 艘,旗舰(`FlagShip`)数量不得超过 1 艘。 6 | - 每场比赛满足下列条件之一即视为结束: 7 | - 任意一方的大本营被摧毁; 8 | - 比赛时间达到 10 分钟。 9 | - 每场比赛结束后,将计算双方的得分,最终得分高者获胜。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/map/home.md: -------------------------------------------------------------------------------- 1 | # 大本营 2 | 3 | - 大本营的生命值为 48000。 4 | - 大本营为所有舰船提供出生点位与回复点位。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/map/map.md: -------------------------------------------------------------------------------- 1 | # 地图 2 | 3 | 我们预计会推出 4 张不同的地图,其中有 2 张会在代码提交截止后公布,请大家不要面向地图编程。 4 | 5 | - 地图为矩形区域,游戏对象坐标为 $(x, y)$,$x$ 和 $y$ 均为整数。 6 | - **$x$ 坐标轴正方向竖直向下,$y$ 坐标轴正方向水平向右**;**极坐标以 $x$ 坐标轴为极轴,角度逆时针为正方向**。即:对于坐标而言,地图的左上角为 $(0, 0)$,左下角为 $(50000, 0)$,右上角为 $(0, 50000)$,右下角为 $(50000, 50000)$;对于方向而言,竖直向下为 $0$,水平向右为 $\pi/2$,竖直向上为 $\pi$,水平向左为 $3\pi/2$。 7 | - 地图由 50 \* 50 个格子构成,每个格子代表 1000 \* 1000 的正方形。每个格子的编号 $(\text{CellX}, \text{CellY})$ 可以由以下公式计算得到: 8 | 9 | $$ 10 | \text{CellX}=\frac{x}{1000}, \text{CellY}=\frac{y}{1000} 11 | $$ 12 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/map/placetype.md: -------------------------------------------------------------------------------- 1 | # 区域类型 2 | 3 | - 格子有对应区域类型:大本营(`Home`)、空间(`Space`)、太空废墟(`Ruin`)、阴影(`Shadow`)、小行星带(`Asteroid`)、资源(`Resource`)、建筑(`Construction`)、虫洞(`Wormhole`) 4 | - 任何格子的区域类型(`PlaceType`)始终不变,所有格子的区域类型在游戏开始时已知;无论建筑是否建造、资源是否开采,格子的区域类型不变 5 | 6 | ### 大本营(`Home`) 7 | 8 | - 地图上共有两座大本营,分别属于两个阵营。 9 | - 大本营是舰船的起始位置,玩家的舰船在大本营旁出生。 10 | - 舰船不可进入大本营,子弹也不能穿过大本营。 11 | - 大本营没有任何隐蔽视野的效果。 12 | - 大本营有一些特殊功能,详见[**大本营**](home)一节。 13 | 14 | ### 空间(`Space`) 15 | 16 | - 空间是地图中最基本的区域类型。 17 | - 空间中的舰船可以自由移动,子弹也可以自由飞行。 18 | - 空间没有任何隐蔽视野的效果。 19 | 20 | ### 太空废墟(`Ruin`) 21 | 22 | - 太空废墟是地图上散落于空间中不同位置的障碍物。 23 | - 舰船不可进入太空废墟,子弹也不能穿过太空废墟。 24 | - 太空废墟可以隐蔽视野,即各种物体可以被太空废墟“挡住”。 25 | 26 | ### 阴影(`Shadow`) 27 | 28 | - 阴影是地图上散落于空间中不同位置的特殊区域。 29 | - 舰船可以进入阴影,子弹也可以穿过阴影。 30 | - 中心在阴影中的物体处于隐蔽状态,处于该片阴影以外的舰船不可见隐蔽于阴影中的物体。 31 | - 阴影中的舰船对其所处阴影及阴影外区域保持正常可见状态。 32 | - 不在阴影的物体,物体中心与玩家中心连线上无太空废墟即可见。 33 | 34 | ### 小行星带(`Asteroid`) 35 | 36 | - 小行星带是位于地图中间的长条形区域,将地图分为完全对称的两部分。 37 | - 舰船不可进入小行星带,子弹也不能穿过小行星带。 38 | - 小行星带没有任何隐蔽视野的效果。 39 | - 小行星带两侧有三座[**虫洞**](#虫洞wormhole)相连,可提供通过小行星带的通道。 40 | 41 | ### 资源(`Resource`) 42 | 43 | - 资源是地图上散落于空间中不同位置的特殊区域。 44 | - 舰船不可进入资源,子弹也不能穿过资源。 45 | - 资源没有任何隐蔽视野的效果。 46 | - 资源有一些特殊功能,详见[**得分**](../mechanics/score.md)一节。 47 | 48 | ### 建筑(`Construction`) 49 | 50 | - 建筑是地图上散落于空间中不同位置的特殊区域。 51 | - 舰船不可进入建筑,子弹可以攻击建筑。 52 | - 建筑没有任何隐蔽视野的效果。 53 | - 建筑有一些特殊功能,详见[**建筑**](../mechanics/construction.md)一节。 54 | 55 | ### 虫洞(`Wormhole`) 56 | 57 | - 虫洞是连接[**小行星带**](#小行星带asteroid)两侧的通道。 58 | - 舰船可以进入已启用的虫洞,子弹可以攻击虫洞。 59 | - 虫洞没有任何隐蔽视野的效果。 60 | - 虫洞有一些特殊功能,详见[**虫洞**](./wormhole.md)一节。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/map/wormhole.md: -------------------------------------------------------------------------------- 1 | # 虫洞 2 | 3 | - 虫洞是贯穿小行星带的一片区域,在地图中共有三条,可提供通过小行星带的通道。 4 | - 虫洞是一种特殊的结构,每个虫洞包含一大片区域,这些区域的类型都是 `Wormhole`。虫洞的位置和大小在地图中是固定的,但是虫洞的生命值是可变的。 5 | - 每个虫洞总生命值为 24000。三条虫洞中,中间一条虫洞的初始生命值为 24000,即为已建成状态;另外两条虫洞的生命值为0,需在比赛过程中由双方进行建造。 6 | - 双方可对虫洞进行建造和攻击。建造虫洞会增加其生命值,攻击虫洞会减少其生命值。对于一方已经开始建造的虫洞,不再限定另一方只能对其攻击,双方可共同建造同一条虫洞。 7 | - 在虫洞已建成且生命值大于 50% 时,虫洞才能生效。生效的虫洞不特别归属于某一方,双方均可使用虫洞提供的通道穿过小行星带。 8 | - 若有单位处在虫洞中的通道时虫洞被摧毁,这些单位会同时被摧毁。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/attack.md: -------------------------------------------------------------------------------- 1 | # 攻击 2 | 3 | - 攻击距离是指攻击(子弹)的移动距离,也就是说理论上,最远的被攻击者的中心与攻击者的中心 = 被攻击者的半径 + 攻击者的半径 + 攻击距离 + 子弹半径 (200) \* 2。 4 | - 对于舰船的攻击,摧毁的顺序依次是护盾、装甲、舰船本身。若对上一级的伤害超过其生命值,溢出的伤害不会作用于下一级。 5 | - 若在非 `Idle` 状态和非 `Stunned` 状态受到攻击,舰船会由于来不及反应而陷入 `Stunned` 状态,时间持续 1s。 6 | - 攻击共有 5 种类型:激光(`Laser`)、等离子体(`Plasma`)、炮弹(`Shell`)、导弹(`Missile`)、电弧(`Arc`)。 7 | 8 | | 攻击类型 | 激光 | 等离子体 | 炮弹 | 导弹 | 电弧 | 9 | | :----------- | :---- | :------- | :--- | :--- | :------- | 10 | | 攻击距离 | 4000 | 4000 | 4000 | 6000 | 6000 | 11 | | 爆炸范围 | 0 | 0 | 0 | 1600 | 0 | 12 | | 攻击力 | 800 | 1000 | 1200 | 1100 | 800~1600 | 13 | | 装甲伤害倍率 | 1.5 | 2.0 | 0.4 | 1.0 | 2.0 | 14 | | 护盾伤害倍率 | 0.6 | 0.4 | 1.5 | 无视 | 2.0 | 15 | | 移动速度/s | 20000 | 10000 | 8000 | 6000 | 8000 | 16 | | 前摇/ms | 500 | 800 | 500 | 1200 | 1200 | 17 | | 后摇/ms | 1000 | 1600 | 1000 | 1800 | 1800 | 18 | 19 | :::note 20 | 21 | - 眩晕状态中的舰船不能再次被眩晕。 22 | - 无论近战远程均产生子弹表示攻击。 23 | - 激光也是一个子弹,并不是射线。 24 | - 前摇期间攻击被打断时,子弹消失。 25 | - 每次舰船受到攻击后会损失对应子弹的攻击力的生命值。 26 | - 此处,前摇指“从播放攻击动作开始,攻击者不能交互”的时间。 27 | 28 | ::: -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/construction.md: -------------------------------------------------------------------------------- 1 | # 建筑 2 | 3 | - 建筑有生命值,生命值为 0 时摧毁。 4 | - “建筑”这一[**区域类型**](../map/placetype)本身并不包含阵营属性,但建筑所在的格子会被标记为建筑所属阵营。 5 | - 在建造时相当于为建筑补充生命值,当建筑生命值满时,建筑建造完成。 6 | - 对于一方已经开始建造的建筑,另一方不可对其建造,只可攻击该建筑。 7 | - 建筑只能在[**区域类型**](../map/placetype)为建筑的格子建造,建成后占据该格子。 8 | - 在建筑已建成且生命值大于 50% 时,建筑才能生效。 9 | 10 | | 建筑类型 | 工厂 | 社区 | 堡垒 | 11 | | :------- | :-------------- | :----------------------------- | :-------------------------------------------- | 12 | | 生命值 | 12000 | 10000 | 16000 | 13 | | 功能 | 每秒产出经济200 | 可提供另一个出生点位、回复点位 | 每秒对在6000范围内的随机一个目标造成300点伤害 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/mechanics.md: -------------------------------------------------------------------------------- 1 | # 机制 -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/module.md: -------------------------------------------------------------------------------- 1 | # 模块 2 | 3 | 模块是一艘舰船能够安装的装备,每艘舰船可以安装的模块种类不同,价格也不同。 4 | 5 | 模块有以下种类: 6 | - 装甲 7 | - 基础装甲(`Armor1`) 8 | - 高级装甲(`Armor2`) 9 | - 终极装甲(`Armor3`) 10 | - 护盾 11 | - 基础护盾(`Shield1`) 12 | - 高级护盾(`Shield2`) 13 | - 终极护盾(`Shield3`) 14 | - 采集器 15 | - 基础采集器(`Producer1`) 16 | - 高级采集器(`Producer2`) 17 | - 终极采集器(`Producer3`) 18 | - 建造器 19 | - 基础建造器(`Constructor1`) 20 | - 高级建造器(`Constructor2`) 21 | - 终极建造器(`Constructor3`) 22 | - 武器 23 | - 激光炮(`LaserGun`) 24 | - 等离子炮(`PlasmaGun`) 25 | - 动能炮(`ShellGun`) 26 | - 导弹发射器(`MissileGun`) 27 | - 电弧炮(`ArcGun`) -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/score.md: -------------------------------------------------------------------------------- 1 | # 得分 2 | 3 | - 每支队伍拥有经济(`Energy`)和得分(`Score`),其中经济是进行建造、生产、回复等操作的资源,得分是胜利的标志。 4 | - 每方在游戏开始时初始拥有 5000 经济。 5 | - 大本营每秒自动获得经济 100。 6 | - 每个工厂每秒自动获得经济 200。 7 | - 民用舰船在资源点开采,可每秒产出对应单位的经济(如基础采集器为 100)。 8 | - 击杀敌方单位可获得其总花费的 20% 经济。 9 | - 破坏敌方控制的建筑可获得经济 200。 10 | - 回复消耗的经济为回复生命值百分比 \* 总花费 \* 1.2(向下取整)。 11 | - 回收获得总花费的 50% \* 剩余血量百分比 经济(向下取整)。 12 | - 得分为累计经济总和(不包括回收获得的经济)。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/mechanics/view.md: -------------------------------------------------------------------------------- 1 | # 视野 2 | 3 | 每艘舰船能够看到以自身为圆心,半径为 8000 的圆内的所有没有被遮挡的物体。这个圆称为视野。 4 | 5 | 一个物体能够被一艘舰船看到,当且仅当: 6 | - 它在该舰船视野内,且它不位于[**阴影**](../map/placetype.md#阴影shadow)中,且连线上没有遮挡物体 7 | - 它在该舰船视野内,且它与该舰船位于同一片[**阴影**](../map/placetype.md#阴影shadow)中,且连线上没有遮挡物体 8 | 9 | 此外,每艘舰船能够看到自己的队友,即使他们不在视野内。 10 | 11 | 基地能够看到所有友方舰船和他们视野中的物体。 -------------------------------------------------------------------------------- /docs/contests/THUAI7/ship/base.md: -------------------------------------------------------------------------------- 1 | # 基地 2 | 3 | - 基地(`Base`)与大本营(`Home`)完全无关。 4 | - 基地在游戏运行时也要作为一个 Client 存在,用于控制该队伍中所有船只的经济等行为。 5 | - 基地不是一个实体,不会出现在地图上。 6 | - 基地可执行如下主动操作: 7 | - 建造舰船 `BuildShip` 8 | - 为舰船添加模块 `InstallModule` 9 | 10 | ::: note 11 | 12 | 当基地执行建造舰船操作时,基地需要填写舰船的类型和出生点位。其中,出生点位为 0 的点位为基地所在的点位。该队伍每拥有一个社区(`Community`)建筑,可额外拥有一个出生点位,出生点位递增。建造舰船时,该请求将由 Server 判断是否合法。如果合法,Server 将在对应的出生点位激活对应的舰船。 13 | 14 | 举例:如果您的队伍由 1 艘民用舰船、2 艘军用舰船和 1 艘旗舰组成,且场上已经存在一艘民用舰船,您的建造民用舰船请求将被忽略。而如果您想要建造军用舰船,Server 将会在出生点位激活新的军用舰船。如果您想要获知建造的新的军用舰船的 `playerID`,请您自行通过其他方式判断。 15 | 16 | ::: -------------------------------------------------------------------------------- /docs/contests/THUAI7/ship/civilship.md: -------------------------------------------------------------------------------- 1 | # 民用舰船 2 | 3 | | 舰船类型 | 生命值 | 基础装甲 | 基础护盾 | 基础速度/s | 经济消耗 | 4 | | :------- | :----- | :------- | :------- | :--------- | :------- | 5 | | 民用舰船 | 3000 | 0 | 0 | 3000 | 4000 | 6 | 7 | - 比赛刚开始时,双方各有一个民用舰船。 8 | - 民用舰船可建造建筑、修复建筑、开采资源、攻击敌方舰船、摧毁敌方建筑。 9 | - 民用舰船可装配模块,模块可提升民用舰船的性能。 10 | - 每艘民用舰船默认装配一个基础采集器、一个基础建造器。 11 | - 每方最多只能同时拥有 2 艘民用舰船。 12 | 13 | | 模块名称 | 模块类型 | 模块效果 | 经济消耗 | 14 | | :--------- | :------- | :--------------------- | :-------- | 15 | | 基础采集器 | 采集 | 开采时每秒产出经济 100 | 0(默认) | 16 | | 高级采集器 | 采集 | 开采时每秒产出经济 200 | 4000 | 17 | | 终极采集器 | 采集 | 开采时每秒产出经济 300 | 8000 | 18 | | 基础建造器 | 建造 | 建造速度为 300 | 0(默认) | 19 | | 高级建造器 | 建造 | 建造速度为 400 | 4000 | 20 | | 终极建造器 | 建造 | 建造速度为 500 | 8000 | 21 | | 基础装甲 | 装甲 | 装甲 2000 | 6000 | 22 | | 基础护盾 | 护盾 | 护盾 2000 | 6000 | 23 | | 激光炮 | 攻击 | 可以发射激光 | 10000 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/ship/flagship.md: -------------------------------------------------------------------------------- 1 | # 旗舰 2 | 3 | | 舰船类型 | 生命值 | 基础装甲 | 基础护盾 | 基础速度/s | 经济消耗 | 4 | | :------- | :----- | :------- | :------- | :--------- | :------- | 5 | | 旗舰 | 12000 | 800 | 800 | 2700 | 50000 | 6 | 7 | - 比赛刚开始时,双方都没有旗舰。 8 | - 旗舰是游戏中最强大的舰船,可以建造建筑、修复建筑、开采资源、攻击敌方舰船、摧毁敌方建筑。 9 | - 旗舰可装配模块,模块可提升旗舰的性能。 10 | - 每艘旗舰默认装配一门激光炮。 11 | - 每方最多只能同时拥有 1 艘旗舰。 12 | 13 | | 模块名称 | 模块类型 | 模块效果 | 经济消耗 | 14 | | :--------- | :------- | :--------------------- | :-------- | 15 | | 基础采集器 | 采集 | 开采时每秒产出经济 100 | 4000 | 16 | | 基础建造器 | 建造 | 建造速度为 300 | 4000 | 17 | | 基础装甲 | 装甲 | 装甲 2000 | 6000 | 18 | | 高级装甲 | 装甲 | 装甲 3000 | 12000 | 19 | | 终极装甲 | 装甲 | 装甲 4000 | 18000 | 20 | | 基础护盾 | 护盾 | 护盾 2000 | 6000 | 21 | | 高级护盾 | 护盾 | 护盾 3000 | 12000 | 22 | | 终极护盾 | 护盾 | 护盾 4000 | 18000 | 23 | | 激光炮 | 攻击 | 可以发射激光 | 0(默认) | 24 | | 等离子炮 | 攻击 | 可以发射等离子体 | 12000 | 25 | | 动能炮 | 攻击 | 可以发射炮弹 | 13000 | 26 | | 导弹发射器 | 攻击 | 可以发射导弹 | 18000 | 27 | | 电弧炮 | 攻击 | 可以发射电弧 | 24000 | 28 | -------------------------------------------------------------------------------- /docs/contests/THUAI7/ship/ship.md: -------------------------------------------------------------------------------- 1 | # 舰船 2 | 3 | - 舰船直径为 800。 4 | - 舰船需由基地(`Base`)花费经济(`Energy`)建造。 5 | - 舰船共有 3 种类型:民用舰船(`CivilShip`)、军用舰船(`WarShip`)、旗舰(`FlagShip`)。 6 | - 舰船可安装模块,每种类型的模块只能安装一个。如果在已经安装对应类型的模块的情况下,仍要安装新的模块,则新的模块会覆盖旧的模块,旧的模块的费用不会退还。我们不会阻止您使用较差的模块替换较好的模块。 7 | - 每方初始拥有 1 艘民用舰船,最多拥有 2 艘民用舰船、2 艘军用舰船、1 艘旗舰,最多拥有 4 艘舰船。 8 | - 旗舰只有在每局比赛最后 5 分钟才能建造。 9 | - 舰船共有 9 种不可叠加的状态: 10 | - 可接受指令状态: 11 | - 空置 `Idle` 12 | - 生产 `Producing` 13 | - 建造 `Constructing` 14 | - 回复 `Recovering` 15 | - 回收 `Recycling` 16 | - 不可接受指令状态: 17 | - 前摇 `Attacking` 18 | - 后摇 `Swinging` 19 | - 眩晕 `Stunned` 20 | - 死亡 `Deceased` 21 | - 舰船可执行以下主动操作: 22 | - 移动 `Move` 23 | - 生产 `Produce` 24 | - 建造建筑 `Construct` 25 | - 修复虫洞 `Repair` 26 | - 回复 `Recover` 27 | - 回收 `Recycle` 28 | - 攻击 `Attack` 29 | - 一旦舰船被击沉,舰船将从地图上消失,无法进行任何操作。 30 | 31 | | 舰船类型 | 民用舰船 | 军用舰船 | 旗舰 | 32 | | :--------- | :------- | :------- | :---- | 33 | | 生命值 | 3000 | 4000 | 12000 | 34 | | 基础装甲 | 0 | 400 | 800 | 35 | | 基础护盾 | 0 | 400 | 800 | 36 | | 基础速度/s | 3000 | 2800 | 2700 | 37 | | 经济消耗 | 4000 | 12000 | 50000 | 38 | 39 | :::note 40 | 41 | - 出生需要在特定的出生点位进行 42 | - 回复需要在特定的回复点位进行 43 | - 回收需要在特定的回收点位进行 44 | 45 | ::: -------------------------------------------------------------------------------- /docs/contests/THUAI7/ship/warship.md: -------------------------------------------------------------------------------- 1 | # 军用舰船 2 | 3 | | 舰船类型 | 生命值 | 基础装甲 | 基础护盾 | 基础速度/s | 经济消耗 | 4 | | :------- | :----- | :------- | :------- | :--------- | :------- | 5 | | 军用舰船 | 4000 | 400 | 400 | 2800 | 12000 | 6 | 7 | - 比赛刚开始时,双方都没有军用舰船。 8 | - 军用舰船可攻击敌方舰船、摧毁敌方建筑。 9 | - 军用舰船可以装配模块,模块可提升军用舰船的性能。 10 | - 每艘军用舰船默认装备一门激光炮。 11 | - 每方最多只能同时拥有 2 艘军用舰船。 12 | 13 | | 模块名称 | 模块类型 | 模块效果 | 经济消耗 | 14 | | :--------- | :------- | :--------------- | :-------- | 15 | | 基础装甲 | 装甲 | 装甲 2000 | 6000 | 16 | | 高级装甲 | 装甲 | 装甲 3000 | 12000 | 17 | | 终极装甲 | 装甲 | 装甲 4000 | 18000 | 18 | | 基础护盾 | 护盾 | 护盾 2000 | 6000 | 19 | | 高级护盾 | 护盾 | 护盾 3000 | 12000 | 20 | | 终极护盾 | 护盾 | 护盾 4000 | 18000 | 21 | | 激光炮 | 攻击 | 可以发射激光 | 0(默认) | 22 | | 等离子炮 | 攻击 | 可以发射等离子体 | 12000 | 23 | | 动能炮 | 攻击 | 可以发射炮弹 | 13000 | 24 | | 导弹发射器 | 攻击 | 可以发射导弹 | 18000 | 25 | | 电弧炮 | 攻击 | 可以发射电弧 | 24000 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI8 3 | slug: ./ 4 | --- 5 | 6 | ## 赛事名称 7 | 8 | 西游真经劫 9 | 10 | ## 赛事背景 11 | 12 | 佛说:东土大唐“贪淫乐祸,多灾多杀”,是“口舌凶场,是非恶海”。须有一个诚心的取经人到我西天来取得真经,方得救赎。在观世音菩萨的挑选下,陈玄奘成为了天命所归的取经人,带领他的三个徒弟:孙悟空、猪八戒、沙悟净,以及作为脚力的白龙马,西行取经。然而,取经路途遍布艰险。传说吃一口唐僧肉便可得到长生,蛰伏于取经路上的各路妖怪蠢蠢欲动······ 13 | 14 | ## 比赛规则 15 | 16 | - 游戏采用Bo2赛制。双方在两局游戏中轮换扮演【取经团队】阵营和【妖怪】阵营进行对抗。 17 | - 双方需要在地图上争夺资源、建造建筑、购买加成、消灭敌方单位,进而尽可能高的获取单局得分。两局比赛结束后,两局累计得分高者获胜。 18 | - 游戏初始时,每个阵营会获得5000经济。 19 | - 当游戏进行到7min,进入【决战期】,在这个阶段双方可以获取敌方所有单位视野,草丛区块消失,且商店无法再购买隐身药水,开放狂暴药水购买。 20 | - 每局比赛满足下列条件之一即视为结束: 21 | - 【取经团队】阵营【唐僧】被击杀或【妖怪】阵营【九灵元圣】被击杀; 22 | - 比赛时间达到10分钟。 23 | 24 | - 选手需要为己方阵营的6名角色分别编写代码,其中`PlayerID`为1的角色为【唐僧】或【九灵元圣】。 25 | 26 | ## 游戏主界面 27 | 28 | ![interface](../assets/THUAI8/interface.png) 29 | 30 | ## 相关链接 31 | 32 | + THUAI8 GitHub 仓库链接:[https://github.com/eesast/THUAI8](https://github.com/eesast/THUAI8) 33 | 34 | + THUAI8 Wiki:[https://github.com/eesast/THUAI8/wiki](https://github.com/eesast/THUAI8/wiki) 35 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/character/character.md: -------------------------------------------------------------------------------- 1 | # 角色 2 | 3 | - 角色分为【取经团队】阵营`sideflag=0`和【妖怪】阵营`sideflag=1`。双方只能控制己方阵营的角色。 4 | - 【取经团队】阵营初始时即拥有角色【**唐僧**】`TangSeng`,【妖怪】阵营初始时即拥有角色【**九灵元圣**】`JiuLing`。 5 | - 阵营其他角色需要花费经济召唤。 6 | - 每个角色分为**主动状态**和**被动状态**。**主动状态**为在玩家控制下执行的状态,**被动状态**为角色受到控制时具有的状态。被动状态可能会对主动状态造成影响。每个角色的主动状态是不可叠加的。 7 | 8 | - **主动状态** 9 | - 空置`Idle` 10 | 11 | - 开采`Harvesting` 12 | 13 | - 攻击`Attacking` 14 | 15 | - 释放技能`Skill_Casting` 16 | 17 | - 建造`Constructing` 18 | 19 | - 移动`Moving` 20 | 21 | - **被动状态** 22 | 23 | - 致盲`Blind`:在该状态下,角色无法进行攻击。 24 | - 击退`Knocked_Back`:在该状态下,角色主动状态强制转为空置(即无法进行任何操作)。 25 | - 定身`Stunned`:在该状态下,角色无法移动。 26 | - 隐身`Invisible`:在该状态下,发起攻击前,角色对敌方不可见。 27 | - 灼烧`Burned`:在此状态下,角色会持续掉血,并且被铁扇公主”芭蕉扇“技能命中时,会受到额外状态。 28 | - 死亡`Deaceased`:在此状态下,角色会从地图上被移除。 29 | - 角色的基础移动速度为2500/s,还会受到相关移速buff与debuff影响。 30 | - 角色的基础攻击频率为1次/s,还会受到相关攻速buff影响。 31 | - 角色的攻击是**锁定**的,即无法通过闪避避免伤害。 32 | - 角色受到的伤害计算方式如下:`AP`为伤害初始值,`HarmCut`为减伤系数,`shield`为护盾值,则伤害会优先对护盾结算,护盾值降为0后,再对血量进行结算。护盾扣除值和血量扣除值都受到免伤系数影响,即:`subShield/subHP`=(1-`HarmCut`)*`AP`。 33 | - 对敌方角色造成伤害时,己方可获得**伤害量得分=20×伤害量**。 34 | - 角色可以释放技能,技能的CD为60s,其中,孙悟空的技能**火眼金睛**释放时需指定释放角度`angle`,其为与x轴正方向的夹角,单位为弧度制,取值为(0,2π)。其余角色技能范围(若有)为以自己为圆心的圆。白龙马技能范围半径为10000,其余为6000。 35 | - 每个阵营最多拥有6名角色(包括【唐僧】或【九灵元圣】)。 36 | 37 | ## 取经团队阵营 38 | 39 | **【角色技能表】** 40 | 41 | | 角色 | 类别 | 技能 | 备注 | 42 | | :----: | :--: | :----------------------------------------------------------: | :----------------------: | 43 | | 唐僧 | / | | / | 44 | | 孙悟空 | 近战 | **火眼金睛**:发出激光束,造成50点贯穿伤害 | 火眼金睛不可被障碍物阻挡 | 45 | | 猪八戒 | 近战 | **食神饱餐**:恢复生命值,短时间(15s)增加防御,获得50%伤害减免 | / | 46 | | 沙悟净 | 远程 | **沙海迷踪**:致盲范围内(半径为6000)敌人,使其短时间无法进行有效攻击,持续5s | 障碍物无法阻挡 | 47 | | 白龙马 | 远程 | **龙腾四海**:化身为龙,对大范围(半径为10000)敌人造成20点冲击伤害 | 障碍物无法阻挡 | 48 | 49 | **【角色数值表】** 50 | 51 | | 角色 | 血量 | 攻击力 | 攻击范围 | 经济消耗 | 击杀得分 | 52 | | :----: | :--: | :----: | :------: | :------: | :------: | 53 | | 唐僧 | 1000 | / | / | / | 20w | 54 | | 孙悟空 | 200 | 30 | 2.5 | 5000 | 5000 | 55 | | 猪八戒 | 300 | 20 | 2.5 | 4000 | 4000 | 56 | | 沙悟净 | 150 | 10 | 5 | 3000 | 3000 | 57 | | 白龙马 | 150 | 10 | 5 | 4000 | 4000 | 58 | 59 | **【特殊单位】** 60 | 61 | 取经团队阵营具有特殊单位——猴子猴孙。 62 | 63 | | 角色 | 血量 | 攻击力 | 攻击范围 | 经济消耗 | 击杀得分 | 64 | | :------: | :--: | :----: | :------: | :------: | :------: | 65 | | 猴子猴孙 | 50 | 5 | 2.5 | 1000 | 1000 | 66 | 67 | ## 妖怪阵营 68 | 69 | **【角色技能表】** 70 | 71 | | 角色 | 类别 | 技能 | 备注 | 72 | | :------: | :--: | :----------------------------------------------------------: | :------------: | 73 | | 九灵元圣 | / | | / | 74 | | 红孩儿 | 近战 | **三昧真火**:对一定范围内(半径为6000)的敌人附带每秒15点的灼烧伤害,持续5s | / | 75 | | 牛魔王 | 近战 | **坚不可摧**:为自己和范围内(半径为6000)血量最低的队友附加一个能抵挡100点伤害的护盾 | / | 76 | | 铁扇公主 | 远程 | **芭蕉扇**:击退一定范围内(半径为6000)的敌人,并对中了“三昧真火”的敌人附加20点的点燃伤害 | 障碍物无法阻挡 | 77 | | 蜘蛛精 | 远程 | **蛛网束缚**:定身范围内(半径为6000)的敌人,持续5s,并造成10点伤害 | 障碍物无法阻挡 | 78 | 79 | **【角色数值表】** 80 | 81 | | 角色 | 血量 | 攻击力 | 攻击范围 | 经济消耗 | 击杀得分 | 82 | | :------: | :--: | :----: | :------: | :------: | :------: | 83 | | 九灵元圣 | 1000 | / | / | / | 20w | 84 | | 红孩儿 | 200 | 25 | 2.5 | 5000 | 5000 | 85 | | 牛魔王 | 300 | 20 | 2.5 | 4000 | 4000 | 86 | | 铁扇公主 | 150 | 10 | 5 | 3000 | 3000 | 87 | | 蜘蛛精 | 150 | 10 | 5 | 3000 | 3000 | 88 | 89 | **【特殊单位】** 90 | 91 | 妖怪阵营具有特殊单位——无名小妖。 92 | 93 | | 角色 | 血量 | 攻击力 | 攻击范围 | 经济消耗 | 击杀得分 | 94 | | :------: | :--: | :----: | :------: | :------: | :------: | 95 | | 无名小妖 | 50 | 5 | 1 | 1000 | 500 | 96 | 97 | 以上的**攻击范围**`RelativeAttackSize`是一个相对系数,具体换算方法为:`RelativeAttackSize = AttackSize/1000`.即,相对攻击范围的基准值是1000. 98 | 99 | ## 角色视野机制 100 | 101 | - 0-7min,每个角色能看到以自身为圆心,半径为8000的圆内所有没有被遮挡或未处在隐身状态下的敌方角色。 102 | - 没有被遮挡是指: 103 | - 与敌方角色之间的连线上没有障碍物; 104 | - 敌方角色不在草丛中,或在草丛中的敌方角色发起了攻击。 105 | 106 | - 7-10min,游戏进入【决战期】,可以获取敌方所有角色的视野。 107 | - 地图中的所有资源点的位置都是可获取的。 -------------------------------------------------------------------------------- /docs/contests/THUAI8/character/shop&&equipment.md: -------------------------------------------------------------------------------- 1 | # 商店与装备 2 | 3 | 玩家可以为己方角色购买装备。商店中有的装备如下: 4 | 5 | | 名称 | 功能 | 花费 | 6 | | :---------------------------: | :----------------------------------------------------------: | :------------: | 7 | | 血瓶`Health_Potion` | 立刻为角色回复50/100/150点血量。 | 1500/3000/4500 | 8 | | 护盾`Shield` | 为角色套上一个可抵御50/100/150点伤害的护盾。 | 2000/3500/5000 | 9 | | 鞋子`SpeedBoots` | 为角色增加500点移速,持续60s。 | 1500 | 10 | | 净化药水`Purification_Potion` | 角色免疫控制效果,持续30s。 | 2000 | 11 | | 隐身药水`Invisibility_Potion` | 7min前可购买,角色隐身,持续10s。若发起攻击,则立刻破隐。 | 4000 | 12 | | 狂暴药水`Berserk_Potion` | 7min后可购买,角色攻击力×1.2倍,攻击频率×1.25倍,移速增加300,持续30s。 | 1w | 13 | 14 | - 同种装备在同一角色身上只能存在一件,效果不可叠加。 15 | - 装备在购买后的瞬间立即生效,有时效的装备从购买时刻起开始计算时间。 -------------------------------------------------------------------------------- /docs/contests/THUAI8/faq/README.md: -------------------------------------------------------------------------------- 1 | # 常见问题 2 | 3 | ## 简单问题 4 | 5 | > Q: Windows找不到文件:`\CAPI\cpp\x64\Debug\APl.exe`? 6 | > 7 | > A: 应该是还没有编译,打开 `CAPI\cpp` 目录,在里面打开 `CAPI.sln`,然后点击生成,对代码进行编译。 8 | 9 | > Q: 为什么 `CAPI.sln` 打开后会找不到项目? 10 | > ![zip](../../assets/THUAI8/faq/zip.png) 11 | > 12 | > A: 要先解压。 13 | 14 | > Q: 怎么修改 `.cmd` 参数? 15 | > 16 | > A: 见选手包中的使用文档部分。 17 | 18 | > Q: 卡死在第一帧不动? 19 | > 20 | > A: 大概率是你的代码死循环了。 21 | 22 | > Q: 23 | > ![wrongType](../../assets/THUAI8/faq/wrongType.png) 24 | > 25 | > A:命令行参数的 `type` 设置有误。 26 | 27 | ## C++ 28 | 29 | > Q: 显示API项目已卸载? 30 | > ![Nocplus](../../assets/THUAI8/faq/Nocplus.png) 31 | > 32 | > A: 可能是没有安装C++。 33 | 34 | > Q: `CAPI.sln` 编译不通过(第一种)? 35 | > 36 | > 情况1: 37 | > ![std_find_trivial](../../assets/THUAI8/faq/std_find_trivial.jpg) 38 | > 情况2: 39 | > ![LNK1000](../../assets/THUAI8/faq/LNK1000.png) 40 | > 41 | > A: 42 | > 1. 应该是没使用 VS 2022; 43 | > 2. 对于 VS 2022 依旧报错,先考虑是否版本过旧(应当在 17.5.x 版本): 44 | > 用 Visual Studio Installer(在开始菜单搜索)更新; 45 | > ![VsUpdate](../../assets/THUAI8/faq/VSUpdate.png) 46 | > 3. ![项目属性](../../assets/THUAI8/faq/项目属性.png) 47 | > 确保上图项目属性中平台工具集在 v143,C++17 标准。 48 | 49 | > Q: CAPI编译不通过(第二种)? 50 | > ![lib](../../assets/THUAI8/faq/lib.png) 51 | > 52 | > A: 查看 `.\win\CAPI\cpp\` 文件夹下是否有 `lib` 文件夹,没有则 https://cloud.tsinghua.edu.cn/d/6972138f641d4e81a446/ 下载并复制粘贴。 53 | 54 | > Q: 编译好慢啊? 55 | > 56 | > A: 57 | > 1. 尽量不要改其他文件,甚至连点下保存都别点; 58 | > 2. 不要点重新生成,要点生成; 59 | > 3. 开启下图选项。 60 | > ![CompileFaster](../../assets/THUAI8/faq/CompileFaster.png) 61 | 62 | > Q: 这是什么错误啊? 63 | > ![vector](../../assets/THUAI8/faq/vector.png) 64 | > 65 | > A: 调用了容量为 0 的 `vector`。 66 | 67 | ## Python 68 | 69 | ### grpc版本更新失败 70 | 71 | > Q: 运行 `GeneratePythonProto.cmd` 报错? 72 | > ![grpcUpdate](../../assets/THUAI8/faq/grpc.png) 73 | > 74 | > A: 可能措施: 75 | > 1. 首先保证 Python 版本在 3.9 及以上; 76 | > 2. 更换为国内镜像源:在终端输入 `pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple`; 77 | > 3. 更新 pip:`python -m pip install --upgrade pip` (pip 版本最好为23.1)。 78 | 79 | ## 游戏引擎/机制 80 | 81 | > Q: 咱们这边 play 函数调用机制究竟是怎么样的?如果50ms内没有执行完当前程序,是在下一帧不会重新调用 play 吗?还是只有 move 这样的明确有时间为参量的才会有上面那个机制? 82 | > 83 | > A: 84 | > - 调用任何主动指令都不会占用你 play 函数多少时间,你可以把它想成一个信号,告诉游戏引擎你想做什么; 85 | > - 50ms内没有执行完当前程序,是指你的play函数例如求最短路之类的操作会占用的时间; 86 | > - 准确地说,50ms 内没有执行完当前程序,在下一帧一般会重新调用 play; 87 | > - 比如说,你第一次调用花了 70ms,那么下一次调用会在这次之后立刻开始。如果你三次都 70ms,就会 4 帧 3 次 play 了; 88 | > - 当然第一次调用花了 110ms,第二帧自然不调用了。 89 | 90 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/intro/adjust.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI8 数值调整汇总 3 | sidebar_label: 数值调整 4 | --- 5 | 6 | ### 建筑 7 | 8 | 农场破坏得分4000->8000 9 | 10 | 兵营破坏得分5000->1w 11 | 12 | ### 角色 13 | 14 | 猴子猴孙击杀得分500->1000 15 | 16 | 新增**伤害量得分**:攻击敌方角色可获得**伤害量×20**的伤害量得分 17 | 18 | #### 攻击范围 19 | 20 | **孙悟空、红孩儿、猴子猴孙、无名小妖**:1000->2500 21 | 22 | **猪八戒、牛魔王**:2000->2500 23 | 24 | ### 资源 25 | 26 | 加成资源击杀得分 27 | 28 | **生命之泉**2000/3000/4000->4000/6000/8000 29 | 30 | **狂战士之力**4000/5000/6000->8000/10000/12000 31 | 32 | **疾步之灵、视野之灵**3000->6000 33 | 34 | **新增机制**:加成资源守关boss会对2000坐标范围内的随机一个角色发起攻击并造成伤害 -------------------------------------------------------------------------------- /docs/contests/THUAI8/intro/ai_manual.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: THUAI8 西游真经劫 AI 编写手册 3 | sidebar_label: AI 编写手册 4 | --- 5 | 6 | ## 目录 7 | 8 | import TOCInline from '@theme/TOCInline'; 9 | 10 | 11 | 12 | ## 前言 13 | 14 | 欢迎参加 THUAI8 西游真经劫比赛!本手册将指导你如何编写 AI 以参与这场激动人心的对抗。在开始编写 AI 之前,建议你首先阅读游戏规则文档,了解游戏的基本机制和胜利条件。 15 | 16 | 西游真经劫游戏要求你分别编写双方各 7 个(共 14 个)角色(包括 home)的 AI 代码,分别控制取经团队或妖怪阵营。通过资源采集、建筑建造、角色技能和团队配合,争取获得更高的得分并击败对手。 17 | 18 | ## 下载前准备 19 | 20 | 1. THUAI8 提供 C++ 和 Python 双赛道进行比赛,在准备阶段,你应该明确使用 C++ 或者 Python 进行参赛 21 | 22 | 2. C++ 环境配置:THUAI8 C++ 赛道使用 Visual Studio 2022(v17.13.6)进行代码编译,因此,在安装选手包之前,选手需要下载最新版本 Visual Studio 2022 或更新其至 v17.13.6 版本 23 | 24 | - 更新 Visual Studio 2022:若之前安装过 Visual Studio 2022,但不为最新版,可打开 Visual Studio Installer 进行版本更新 25 | ![image](../../assets/THUAI8/intro/vs.png) 26 | 27 | 3. Python 环境配置:确保 Python 安装版本在 3.9 以上,否则可能导致 grpc 版本更新失败 28 | 29 | 查看方法:在 cmd 中输入 `python --version` 查看版本 30 | 31 | ![图片](../../assets/THUAI8/intro/py.png) 32 | 33 | ## 选手包下载 34 | 35 | 1. 在开始编写你的 AI 代码之前,请前往赛事云盘下载选手包下载器兼启动器(Installer)并解压 36 | 37 | ![image](../../assets/THUAI8/intro/package.png) 38 | 39 | 40 | 2. 运行 installer.exe(可能有警告,请点击"更多信息"-"仍然运行") 41 | 42 | ![image](../../assets/THUAI8/intro/installer.png) 43 | 44 | 45 | - 首次打开下载器后,会在 `C:\Users\用户名\Documents\` 路径下生成 `THUAI8` 文件夹,用于存储下载器的配置信息和缓存,请勿随意修改该文件夹内容。 46 | - 选择下载路径时,请确保选择一个空文件夹。 47 | - 首次下载完成后,`下载` 按钮会自动变为 `移动` 按钮,此时可以选择新的空文件夹路径进行移动操作。 48 | - 界面提供两个进度条:上方进度条显示已下载的文件数量,下方进度条显示当前文件的下载进度。 49 | - 如果下载出现问题,且 `是否已下载选手包` 复选框显示为勾选状态,请关闭下载器,删除已下载的文件,并将 `C:\Users\用户名\Documents\THUAI8\config.json` 中的 `"Installed": true` 改为 `"Installed": false`。 50 | 51 | 3. 更新 52 | 53 | 更新前需要先进行检查更新操作。若显示 `Need to update` 则需要更新,反之 `Nothing to update` 54 | - **下载后不要对其他非空文件路径进行更新操作,这将会删除多余的文件** 55 | - 若未勾选,请更改 `config.json` 中的 `"Installed":false` 改为 `"Installed":true`(一般不会出现此情况) 56 | 57 | 第一次下载完成后,请检查更新,第一次下载的安装包通常版本较旧。 58 | 59 | 4. 日志 60 | - `Installer` 界面下方存在操作日志(滚动功能有些异常) 61 | - 安装目录下 `logs\installer.log` 中存在日志供参考 62 | 63 | ## AI 代码编写 64 | 65 | ### C++ 66 | 67 | - 选手编写 AI 代码的位置在 `CAPI/cpp/API/src/AI.cpp` 处,安装 Visual Studio 2022 最新版本后,打开位于 `CAPI/cpp` 处的 `API.sln` 解决方案即可对整个项目进行编辑 68 | 69 | ![图片](../../assets/THUAI8/intro/api.png) 70 | 71 | - 打开项目后,在右侧**解决方案资源管理器**中,选择**源文件**,打开 AI.cpp 即可开始编写代码 72 | 73 | - AI 代码编写完成后,需要编译产生 `API.exe` 以供下载器启动。选择顶部栏处的**生成-重新生成解决方案**,等待一段时间后即编译完成 74 | 75 | ![图片](../../assets/THUAI8/intro/Cppbuild.png) 76 | 77 | - 生成成功后,**输出**窗口会提示编译成功的信息 78 | 79 | ![图片](../../assets/THUAI8/intro/Success.png) 80 | 81 | - 此后即可使用下载器进行[调试](#下载器调试) 82 | 83 | ### Python 84 | - 选手编写AI代码的位置在CAPI/python/PyAPI/AI.py处 85 | ![图片](../../assets/THUAI8/intro/apipy.png) 86 | - 由于python不需要编译产生可执行文件,可直接前往[调试界面](#下载器调试) 87 | 88 | ## 下载器调试 89 | 90 | 下载器集成了**选手包下载**、**选手包更新**、**本地调试**、**本地回放**等功能,选手可以使用下载器启动本地调试界面进行调试 91 | 92 | - 打开下载器后,选择**调试**界面 93 | 94 | ![图片](../../assets/THUAI8/intro/Debug.png) 95 | 96 | 此界面中,选手可以设置启动的服务类型(Server 或 Client) 97 | 98 | ### Server 配置 99 | 100 | - 配置 Server 时,选手可以设置服务器启动的端口 Port(一般不需要更改),本场游戏的队伍数量(一般为 2),以及每一支队伍的人数(按照需求而定,至少为 1,决赛默认为 6)。这里为方便起见,设置每队的人数为 1(即只有唐僧或九灵元圣) 101 | 102 | - 保存后启动,此时 Server 正常运行如下 103 | 104 | ![图片](../../assets/THUAI8/intro/Server.png) 105 | 106 | ### Client 配置 107 | - 切换 Mode 为 Client,此时可以配置 Client 启动 108 | 109 | ![图片](../../assets/THUAI8/intro/Clientdebug.png) 110 | 111 | - 与 Server 相同,选手可以配置 Client 启动的 IP 和端口(一般不需要更改)。在此基础上,选手可以加入一定数量的对战 Client 和旁观Client(调试界面)。 112 | 113 | - 点击 Add 加入对战 Client。对于不同的 Server 配置,需要加入的对战 Client 数量也不同。对于每一支队伍人数为 `x` 的情况,需要为每支队伍各加入 `x + 1` 个 Client,分别对应 PlayerID 从 `0` 到 `x`;teamID 和 SideFlag 保持一致。例如,对于每支队伍人数为 `1` 的情况,客户端加入情况应该如下配置: 114 | 115 | - 勾选 Spectator 以启用简易调试界面,并确保其 ID 大于 2025(默认 2026) 116 | 117 | - 选择正确的 Language,保存后即可启动 Client 118 | 119 | ![image](../../assets/THUAI8/intro/Avalonia.png) 120 | 121 | ## 常见问题 122 | 123 | **Q: 如何确定角色的位置?** 124 | A: 使用 `api.GetSelfInfo()` 获取角色位置,位置是以像素为单位的坐标 $(x, y)$。 125 | 126 | **Q: 如何计算两点间距离?** 127 | A: 使用欧几里得距离公式:$\text{distance} = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}$。 128 | 129 | **Q: 如何判断是否可以攻击到敌人?** 130 | A: 检查敌人是否在角色的攻击范围内:`distance <= self_info.attackRange * 1000`。 131 | 132 | **Q: 为什么我的 AI 在本地运行正常,提交后却失败?** 133 | A: 可能原因包括: 134 | - 代码中存在无限循环 135 | - 调试输出过多导致缓冲区溢出 136 | - 未考虑到某些边界情况 137 | 138 | **Q: 如何优化AI性能?** 139 | A: 140 | - 减少不必要的 API 调用 141 | - 避免复杂计算导致的超时 142 | - 使用高效的寻路和决策算法 143 | 144 | --- 145 | 146 | 祝你在 THUAI8 西游真经劫比赛中取得好成绩!如有更多问题,欢迎在比赛交流群中讨论。 147 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/intro/guide.mdx: -------------------------------------------------------------------------------- 1 | # 指南 2 | 3 | 你可能对 THUAI8 一头雾水,不知道何从下手。本文档将会带你一步步了解 THUAI8 的各个部分。 4 | 5 | ## 什么是 THUAI8? 6 | 7 | [**THUAI8**](https://github.com/eesast/THUAI8) 是一个由 [**EESΛST**](https://eesast.com/) 软件部带来的一个将即时战略、团队合作对抗、多人射击巧妙~~缝合~~结合的新型游戏。 8 | 9 | 与一般的游戏不同的是,它并不需要各位选手亲手操作,而是通过 C++、Python 等编程语言,编写程序,让你的程序代替你进行游戏。 10 | 11 | ## 如何开始进行游戏? 12 | 13 | 你可以在电子系科协网站 [试玩](https://eesast.com/login#/contest/playground?contest=7a86be25-f431-45ae-bf5c-109970d9636b),大致体验本次赛事的基本玩法。 14 | 15 | 随后,你可以打开 `installer.exe`,下载选手开发包。下载完成后,进行进一步开发: 16 | 17 | import Tabs from '@theme/Tabs'; 18 | import TabItem from '@theme/TabItem'; 19 | 20 | 21 | 22 | 23 | 24 | 用最新版Visual Studio打开 `CAPI/cpp/CAPI.sln`,然后选择源代码/`AI.cpp`,修改 `void AI::play(IShipAPI& api)` 和 `void AI::play(ITeamAPI& api)` 两个函数,进行自己的开发,开发结束后不要忘记进行编译 25 | 26 | 27 | 28 | 29 | 运行 `CAPI/python/generate_proto.cmd`,然后在 `CAPI/python/PyAPI/AI.py` 中修改 `def ShipPlay(self, api: IShipAPI) -> None:` 与 `def TeamPlay(self, api: ITeamAPI) -> None:` 两个函数,进行自己的开发 30 | 31 | 32 | 33 | 34 | 设计完自己的策略后,在启动器上方选择 `Launch`,选中自己使用的语言,点击保存-启动即可。 35 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/intro/rule.md: -------------------------------------------------------------------------------- 1 | # 游戏基本规则与赛制 2 | 3 | - 游戏采用Bo2赛制。双方在两局游戏中轮换扮演【取经团队】阵营和【妖怪】阵营进行对抗。 4 | - 双方需要在地图上争夺资源、建造建筑、购买加成、消灭敌方单位,进而尽可能高的获取单局得分。两局比赛结束后,两局累计得分高者获胜。 5 | - 游戏初始时,每个阵营会获得5000经济。 6 | - 当游戏进行到7min,进入【决战期】,在这个阶段双方可以获取敌方所有单位视野,草丛区块消失,且商店无法再购买隐身药水,开放狂暴药水购买。 7 | - 每局比赛满足下列条件之一即视为结束: 8 | - 【取经团队】阵营【唐僧】被击杀或【妖怪】阵营【九灵元圣】被击杀; 9 | - 比赛时间达到10分钟。 10 | 11 | - 选手需要为己方阵营的6名角色分别编写代码,其中`PlayerID`为1的角色为【唐僧】或【九灵元圣】。 12 | 13 | ## 得分 14 | 15 | - 每局游戏的最终得分=剩余经济*10+击杀敌方角色或摧毁敌方建筑得分+获取资源得分。 16 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/intro/score.md: -------------------------------------------------------------------------------- 1 | # 得分 2 | 3 | - 每局游戏的最终得分=剩余经济*10+击杀敌方角色或摧毁敌方建筑得分+获取资源得分 4 | - 击杀角色得分详见**角色** 5 | - 摧毁敌方建筑得分详见[**建筑**](../map/construction) 6 | - 另外,己方每个农场每秒可为己方增加100得分 7 | - 获取经济资源和加成资源得分详见[**资源**](../map/resource) 8 | - 双方总得分为两回合得分总和 -------------------------------------------------------------------------------- /docs/contests/THUAI8/map/construction.md: -------------------------------------------------------------------------------- 1 | # 建筑 2 | 3 | 各类型建筑的功能、损耗见下表: 4 | 5 | 6 | | 名称 | 功能 | 花费/破坏得分 | 血量 | 建造时间 | 7 | | :----------: | :----------------------------------------------------------: | :-----------: | :--: | :------: | 8 | | **兵营** | 角色出生点,开局自带一座兵营,至多可再修建两座兵营。同时半径1000范围内的己方角色可持续回血(10点/s) | 1w/1w | 500 | 12.5s | 9 | | **农场** | 每座农场每秒产出100经济,并获得100得分,至多可再修建4个农场。 | 8000/8000 | 400 | 10s | 10 | | **坑洞陷阱** | 修建后敌方不可见。当敌方角色触碰以陷阱为中心的九宫格时,受到每秒20点的伤害,持续5s,同时会暴露视野 | 1000 | / | 5s | 11 | | **牢笼陷阱** | 修建后敌方不可见。当敌方角色触碰以陷阱为中心的九宫格时,会被定身30s,无法移动,且暴露视野 | 1000 | / | 5s | 12 | 13 | ## **建筑的修建** 14 | 15 | 除”坑洞陷阱“和”牢笼陷阱“外,地图上有特定的建筑点位,角色移动到建筑点位九宫格内时,可以开始修建建筑。”坑洞陷阱“和”牢笼陷阱“可以在地图上任意一处”空地“或”草丛“修建,角色修建完成,会出现在距离角色中心最近的方格处。此两种建筑形同”空地“和”草丛“,在未触发情况下不会阻隔角色移动。 16 | 17 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/map/map.md: -------------------------------------------------------------------------------- 1 | # 地图 2 | 3 | 我们预计会推出 4 张不同的地图,其中有 2 张会在代码提交截止后公布,请大家不要面向地图编程。 4 | 5 | - 地图为矩形区域,游戏对象坐标为 $(x, y)$,$x$ 和 $y$ 均为整数。 6 | - **x 坐标轴正方向竖直向下,y 坐标轴正方向水平向右**;**极坐标以 x 坐标轴为极轴,角度逆时针为正方向**。即:对于坐标而言,地图的左上角为 ***(0, 0)***,左下角为 ***(50000, 0)***,右上角为*** (0, 50000)***,右下角为 ***(50000, 50000)***;对于方向而言,竖直向下为 0,水平向右为 pi/2,竖直向上为 pi,水平向左为 3pi/2。 7 | - 地图由 50 \* 50 个格子构成,每个格子代表 1000 \* 1000 的正方形。每个格子的编号 $(\text{CellX}, \text{CellY})$ 可以由以下公式计算得到: 8 | 9 | $$ 10 | \text{CellX}=\frac{x}{1000}, \text{CellY}=\frac{y}{1000} 11 | $$ 12 | 13 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/map/placetype.md: -------------------------------------------------------------------------------- 1 | # 区域类型 2 | 3 | 地图每个格子有对应的区域类型:**大本营**`Home`、**障碍物**`Barrier`、**空地**`Space`、**建筑**`Constrution`、**草丛**`Bush`、**资源**`Resource`。 4 | 5 | ## 大本营`Home` 6 | 7 | - 双方阵营的初始出生点,具有与建筑中**兵营**一样的效果。 8 | - 与普通建筑不同的是,大本营无法被摧毁,一直存在直至游戏结束。 9 | 10 | ## 空地`Space` 11 | 12 | - 在空地上【角色】可以自由移动。 13 | - 在任意空地可以修建【陷阱】、【牢笼】两种建筑。 14 | - 空地没有任何隐蔽视野的作用。 15 | 16 | ## 障碍物`Barrier` 17 | 18 | - 分布于地图边界及地图中特定位置,起到地形阻隔的作用。 19 | - 【角色】不可进入障碍物,障碍物能阻隔某些【角色】的技能。 20 | - 障碍物可以在【决战期】之前隐蔽视野,即各种物体可以被障碍物挡住。 21 | 22 | ## 草丛`Bush` 23 | 24 | - 草丛散落于地图各处,是可隐藏视野的区域。 25 | - 中心在草丛中的【角色】处于隐蔽状态,处于该片草丛之外的敌方【角色】不可见。发起攻击则破隐。 26 | - 进入【决战期】,草丛消失,变为空地。 27 | 28 | ## 建筑`Constrution` 29 | 30 | - 玩家可以在空地上修建建筑,且需要【猴子猴孙】或【无名小妖】参与修建。修建位置为角色中心所在格子。 31 | - 【角色】不可进入建筑,建筑能阻隔某些【角色】的技能,也能被敌方【角色】毁坏。 32 | - 建筑没有隐藏视野的功能。 33 | - 具体类型建筑详见[**建筑**](./construction)。 34 | 35 | ## 资源`Resource` 36 | 37 | - 资源散布在散布在地图各个点位,分为【经济资源】`EconomyResource`和【加成资源】`AdditionResource`。 38 | 39 | - 【经济资源】的获取方式为开采,可以持续性获得经济。 40 | 41 | - 【加成资源】需要击败驻守在资源点的Boss方可获得,且加成具有时间限制。 42 | 43 | - 各类资源的详细功能,详见[**资源**](./resource)一节。 44 | -------------------------------------------------------------------------------- /docs/contests/THUAI8/map/resource.md: -------------------------------------------------------------------------------- 1 | # 资源 2 | 3 | 地图中各个点位分布着各种资源,玩家可以直接获取资源所在位置并展开争夺。资源类型分为**经济资源**和**加成资源**。经济资源以开采形式获取,加成资源则需击败驻守在资源点的boss来获取加成。 4 | 5 | - **经济资源**:当角色进入到以资源点为中心的九宫格内时,角色可以执行操作【开采】。开采速度为200经济/s,同时得分也会以200/s增长。每个经济资源点的开采上限是1w。双方可以同时开采同一资源点。 6 | - **加成资源**:大部分加成资源的加成效果、boss数值会随游戏时间变化,加成资源变化刷新的时间为0/3min/7min。不管该资源是否被获取,刷新时间到时便会自动刷新。 7 | - **生命之泉**:立即为全体队友回复50/100/150点血量,并获得4000/6000/8000得分。 8 | - **狂战士之力**:增加全体队友10/15/20点攻击力,持续时间30s/45s/60s,并获得8000/10000/12000得分。 9 | - **疾步之灵**:增加全体队友500/s的移速,持续60s,并获得3000得分。 10 | - **视野之灵**:照亮视野范围内的敌方陷阱、牢笼(并使二者立刻销毁),照亮视野范围内敌方隐身单位,持续60s,并获得6000得分。 11 | 12 | **新增机制**:加成资源守关boss会对2000坐标范围内的随机一个角色发起攻击并造成伤害。 13 | 14 | 附:各加成资源守关boss数值 15 | 16 | | 名称 | 血量 | 攻击力 | 17 | | :--------: | :---------: | :------: | 18 | | 生命之泉 | 200/300/400 | 10 | 19 | | 狂战士之力 | 400/500/600 | 10/15/20 | 20 | | 疾步之灵 | 300 | 10 | 21 | | 视野之灵 | 300 | 10 | -------------------------------------------------------------------------------- /docs/contests/assets/THUAI3.0/interface.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI3.0/interface.gif -------------------------------------------------------------------------------- /docs/contests/assets/THUAI4/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI4/interface.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/APIsettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/APIsettings.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/APIsettings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/APIsettings2.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/debug.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/main_interface.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/main_interface.jpg -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/no-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/no-debug.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/tool_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/tool_1.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/tool_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/tool_2.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/tool_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/tool_3.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI5/tool_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI5/tool_4.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/CompileFaster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/CompileFaster.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/LNK1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/LNK1000.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/Nocplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/Nocplus.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/RunCppCmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/RunCppCmd.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/RunPython.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/RunPython.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/VSUpdate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/VSUpdate.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/grpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/grpc.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/image-20230416010705076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/image-20230416010705076.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/image-20230416010816392.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/image-20230416010816392.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/interface.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/interface.jpg -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/lib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/lib.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/std_find_trivial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/std_find_trivial.jpg -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/vector.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/wrongType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/wrongType.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/zip.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI6/项目属性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI6/项目属性.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/CompileFaster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/CompileFaster.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/LNK1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/LNK1000.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/Nocplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/Nocplus.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/VSUpdate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/VSUpdate.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/grpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/grpc.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/lib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/lib.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/std_find_trivial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/std_find_trivial.jpg -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/vector.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/wrongType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/wrongType.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/zip.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/faq/项目属性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/faq/项目属性.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/interface.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/intro/image-20230416010705076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/intro/image-20230416010705076.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI7/intro/image-20230416010816392.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI7/intro/image-20230416010816392.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/CompileFaster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/CompileFaster.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/LNK1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/LNK1000.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/Nocplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/Nocplus.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/VSUpdate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/VSUpdate.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/grpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/grpc.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/lib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/lib.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/std_find_trivial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/std_find_trivial.jpg -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/vector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/vector.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/wrongType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/wrongType.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/zip.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/faq/项目属性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/faq/项目属性.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/interface.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Avalonia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Avalonia.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Clientdebug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Clientdebug.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Cppbuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Cppbuild.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Debug.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Server.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/Success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/Success.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/api.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/apipy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/apipy.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/image-20230416010705076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/image-20230416010705076.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/image-20230416010816392.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/image-20230416010816392.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/image.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/installer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/installer.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/package.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/py.png -------------------------------------------------------------------------------- /docs/contests/assets/THUAI8/intro/vs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/contests/assets/THUAI8/intro/vs.png -------------------------------------------------------------------------------- /docs/game/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Game 3 | slug: ./ 4 | --- 5 | 6 | ## List 7 | 8 | - [Unity](unity.mdx) 9 | - Minecraft 10 | - 红石 11 | - [官方红石教程——红石测验](minecraft/redstone/redstone_testing/README.md) 12 | - [写在前面](minecraft/redstone/redstone_testing/README.md) 13 | - [(一)红石基础](minecraft/redstone/redstone_testing/redstone_basic1.md) 14 | 15 | :::info 16 | 17 | ### 招贤纳士 18 | 19 | 欢迎感兴趣的同学探索游戏直播技术~ 20 | 21 | ::: 22 | -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/README/origin_copyright.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/README/origin_copyright.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_app.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_app.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_powered_rail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_powered_rail.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_powered_rail_near_untrans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/activate_powered_rail_near_untrans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/app_door.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/app_door.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_plane.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_spin_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_spin_up.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/circuit_trans_up.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_app.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_battery.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_battery.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_diag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_diag.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_glow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_glow.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_slab_stair.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_slab_stair.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_trans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_trans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_untrans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/connect_untrans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/hinder_others.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/hinder_others.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/hinder_untrans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/hinder_untrans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/lay_wool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/lay_wool.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/point_activate_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/point_activate_app.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/powered_curly_rail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/powered_curly_rail.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/recharge_others.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/recharge_others.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/recharge_untrans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/recharge_untrans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_line.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_multi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_multi.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_point.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_torch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/redstone_torch.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/star_activate_app.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/star_activate_app.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_diag_down.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_diag_down.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_diag_up.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_diag_up.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_dist.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_dist.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_1.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_2.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_at_diag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_at_diag.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_at_diag_on_nontrans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_hinder_at_diag_on_nontrans.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_down.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_down.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_down_topview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_down_topview.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_glow_towel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_glow_towel.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_tense_towel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_tense_towel.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_towel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/trans_model_towel.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/updownslab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/updownslab.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/updownstair.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/updownstair.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/water_flush.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/redstone/redstone_testing/redstone_basic_1/water_flush.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/andgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/andgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/clock1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/clock1.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/clock2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/clock2.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/dlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/dlock.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/dtrigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/dtrigger.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/nandgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/nandgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/norgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/norgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/notgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/notgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/onlygate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/onlygate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/orgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/orgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/rsisrlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/rsisrlock.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/rsisrlock2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/rsisrlock2.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/single.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/single2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/single2.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/srlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/srlock.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/srlockvert.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/srlockvert.jpg -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/xorgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/xorgate.png -------------------------------------------------------------------------------- /docs/game/assets/minecraft/summer_tutorial/xorgate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/minecraft/summer_tutorial/xorgate2.png -------------------------------------------------------------------------------- /docs/game/assets/unity/Editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/Editor.png -------------------------------------------------------------------------------- /docs/game/assets/unity/Hub界面.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/Hub界面.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/UNITY.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/UNITY.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/创建页面.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/创建页面.png -------------------------------------------------------------------------------- /docs/game/assets/unity/导航栏.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/导航栏.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/层次.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/层次.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/教程组件.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/教程组件.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/文档.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/文档.png -------------------------------------------------------------------------------- /docs/game/assets/unity/新建项目.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/新建项目.png -------------------------------------------------------------------------------- /docs/game/assets/unity/核心.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/核心.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/检查器.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/检查器.png -------------------------------------------------------------------------------- /docs/game/assets/unity/组件.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/组件.jpg -------------------------------------------------------------------------------- /docs/game/assets/unity/资源.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eesast/docs/546bb6e57837abe75ff8d88a367029839cebc4cf/docs/game/assets/unity/资源.jpg -------------------------------------------------------------------------------- /docs/game/minecraft/README.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Minecraft 3 | slug: ./ 4 | --- 5 | 6 | ## List 7 | 8 | + [Minecraft 暑期培训教程](./summer_tutorial.md) 9 | + 红石教程 10 | + [Mojang 官方红石教程——红石测验](./redstone/redstone_testing/README.md) 11 | 12 | ## 视频教程 13 | 14 | ### 2023 年暑期培训 15 | 16 | import Video from '@site/src/component/video_player'; 17 | 18 |