취미 프로젝트 11년: SymOntoClay Dev Journal

발행: (2026년 1월 10일 오후 04:15 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Introduction

11년 동안 NPC 행동을 기술하기 위해 설계된 다중 패러다임 언어를 실험해 왔습니다.
주된 목표는 고도로 표현력이 풍부하면서도 인간이 읽기 쉬운 언어를 만드는 것입니다. 이를 위해 흔히 사용되지 않지만 유용한 기법(예: 퍼지 로직이나 논리 프로그래밍)을 전용 구문 구조로 구현하여 언어를 더 간결하고 표현력 있게 만들었습니다.

History

SymOntoClay의 아이디어는 사회 시뮬레이터 요소를 갖춘 액션/RPG를 만들겠다는 계획에서 시작되었습니다—군사 충돌 지역을 배경으로 한 미니어처 Fallout 스타일 게임이었습니다. 초기에는 팀 구성보다 소프트웨어 구현에 집중했습니다. 게임 콘셉트를 개발하던 중 Prolog와 전문가 시스템 같은 규칙 기반 시스템을 떠올렸고, NPC 로직의 일부를 그런 방식으로 프로그래밍하면 편리할 것이라고 생각했습니다.

점차 명령형 언어(C++/C#) 안에서 논리 추론을 적용하는 것이 게임 개발 자체보다 더 매력적으로 느껴졌습니다. 2014년 5월, 논리 프로그래밍과 명령형 코드를 결합하고 퍼지 로직 같은 잘 쓰이지 않는 개념을 구문에 직접 삽입하는 “미친” 아이디어가 떠올랐습니다.

원래의 액션/RPG는 실현되지 않았고, 대신 프로젝트는 현재 SymOntoClay(Symbolic Ontological Clay)라 불리는 형태로 발전했습니다. 처음엔 몇 달 안에 언어 사양을 완성하고 1년 안에 구현할 수 있을 거라 예상했지만, 프로젝트는 11년이 흐른 지금도 아직 진행 중이며 끝날 기미가 보이지 않습니다.

Publication Motivation

그동안 어떤 게시물이나 기사도 발표하지 않았습니다. “내면의 완벽주의자”가 완전히 다듬어진 프로젝트만을 보여주고 싶어했기 때문이죠. 11년이 지나면서 완벽한 순간을 기다리는 것이 의미 없다는 것을 깨닫고, 이제는 축적된 유산과 함께 살아 움직이는, 아직도 불완전한 시스템인 SymOntoClay를 공유하기로 했습니다.

Current State

  • 많은 기능이 구현되었지만 현재는 매우 단순한 NPC 행동만을 기술할 수 있습니다.
  • Unity와의 실험은 간헐적으로 진행되었으며, 주로 기본 기능을 검증하는 데 사용되었습니다.
  • 코드는 MIT 라이선스로 GitHub에 공개되어 있습니다.
  • 자세한 내용은 프로젝트 웹사이트(원본 글에 링크)에서 확인할 수 있습니다.
  • White Paper가 개발 아이디어를 설명합니다.
  • 문서는 고르지 못합니다: 언어 사양은 최신이지만 “Getting Started”와 사용 예시는 다소 부족합니다.
  • 프로젝트 YouTube 채널은 아직 비어 있지만 곧 채워질 예정입니다.
  • 아직 커뮤니티는 없으며, 이 글이 개인 노트를 넘어선 첫 번째 공개 발표입니다.

Example: Fuzzy Membership Definition

linvar `degree of membership` for range [0, 1]
{
    constraints:
        for inheritance;

    terms:
        minimal = L(0, 0.1);
        low = Trapezoid(0, 0.05, 0.3, 0.45);
        middle = Trapezoid(0.3, 0.4, 0.6, 0.7);
        high = Trapezoid(0.55, 0.7, 0.95, 1);
        maximal = S(0.9, 1);
}

Future Work

  • Demo Scene – HTN 구현을 마무리하고 Unity와 통합하여 최소한으로 플레이 가능한 데모를 만든다.
  • Tooling – DSL 디버깅을 용이하게 할 디버거, 프로파일러 및 기타 도구를 개발한다.
  • Editor Support – VS Code(또는 최소한 Notepad++)용 구문 강조와 완전한 언어 서버를 구현한다.
  • Documentation – 아키텍처 설명을 확장하고 최신 다이어그램을 추가하며 “Getting Started” 가이드를 개선한다.
  • YouTube Content – SymOntoClay로 제어되는 캐릭터가 등장하는 데모 씬을 보여주는 짧은 영상을 게시한다.
  • Community Building – 기사 작성, Discord 서버 개설, 기여 독려 등을 통해 커뮤니티를 구축한다.

Closing

이 글은 SymOntoClay에 대한 첫 번째 인터넷 공개 글입니다. 이제 프로젝트가 개인 노트를 넘어선 단계에 이르렀습니다.

읽어 주셔서 감사합니다!

Back to Blog

관련 글

더 보기 »