# 포탈2 (소스엔진) 으로 웹서버 만들기

> Clean Markdown view of GeekNews topic #21250. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21250](https://news.hada.io/topic?id=21250)
- GeekNews Markdown: [https://news.hada.io/topic/21250.md](https://news.hada.io/topic/21250.md)
- Type: news
- Author: [prunusnira](https://news.hada.io/@prunusnira)
- Published: 2025-06-02T22:29:55+09:00
- Updated: 2025-06-02T22:29:55+09:00
- Original source: [youtube.com](https://www.youtube.com/watch?v=-v5vCLLsqbA)
- Points: 13
- Comments: 2

## Summary

**소스엔진**의 숨겨진 **TCP 콘솔 기능**을 활용하여 게임 엔진에서 직접 **웹 페이지**를 호스팅하는 실험을 진행합니다. 개발자는 **alias 명령어**와 **VScript**를 사용해, HTTP 요청을 게임 콘솔 명령으로 받아들이고 이를 동적으로 처리하는 방식을 구현하였습니다. 또한, **HTTP 메서드**와 **커스텀 헤더**를 조합해 다중 **라우팅**을 흉내 내고, 게임 오브젝트를 **HTML/CSS** 구조와 매핑하여 실시간 데이터 업데이트까지 가능하게 하였습니다.

## Topic Body

##### 요약  
  
(Gemini로 요약 후 일부 수정되었습니)  
  
- Portal 2 엔진을 웹 서버로 전환  
  - Source 엔진의 숨겨진 TCP 콘솔 기능 (`-netconport` 옵션)을 이용해 Portal 2에서 직접 웹 페이지를 호스팅하는 실험을 진행.  
  
- 개발자 콘솔을 통한 HTTP 응답 처리  
  - 게임에 TCP 서버는 열렸으나 사용자의 요청에 대해 개발자 콘솔은 이를 콘솔 커맨드로 받아들이는 문제가 있음.  
  - HTTP 요청을 게임의 콘솔 명령어로 받아들이기 위해 소스엔진의 `alias` 명령어와 VScript (Valve에서 만든 스크립트 언어)를 사용하여 입력된 문자열에 대한 응답을 출력할 수 있게 변경함.  
  
- 다중 라우팅 구현  
  - 게임 콘솔로 URL 경로를 구분하지 못하므로, HTTP 요청의 메서드(GET, POST 등), 커스텀 HTTP 헤더 등을 이용해 다른 라우팅을 흉내 냄.  
  - 이를 이용하여 JavaScript를 사용해 실시간으로 게임으로부터 데이터 업데이트가 가능하도록 구현함.  
  
- 게임 오브젝트를 HTML DOM과 CSS에 매핑  
  - 큐브와 같은 게임 오브젝트를 HTML 태그와 속성에 대응시켜, 실제로 웹사이트를 “쌓아가는” 방식으로 구성함.  
  - 마찬가지로 스타일 정보(CSS)도 각 속성을 큐브 하나로 대응시켜 시각적으로 웹 페이지를 구성함.

## Comments



### Comment 39870

- Author: cosine20
- Created: 2025-06-09T11:35:00+09:00
- Points: 1

종종 만화나 게임 같은데서 서버에 침투하는 과정을 가상공간을 돌아다니는 과정으로 묘사하던게 생각나네요.

### Comment 39675

- Author: prunusnira
- Created: 2025-06-02T22:36:17+09:00
- Points: 1

웹서버를 게임엔진으로 만들 생각을 한것도 놀랍지만 개념적으로나마 웹 개발의 기초적인 내용을 잘 설명해둔 부분이 많아서 재밌는 영상입니다. 포탈의 큐브를 쌓아서 DOM/CSS를 구성하는 부분은 정말 좋았다고 생각해요
