虚拟空间社交服务
我们为一项虚拟空间社交服务开发了普通应用界面:用户装扮虚拟形象,聚到会议厅、户外舞台等主题空间,在其中举办讲座、聚会与演出。3D 空间由 3D 引擎负责,账户、首页、进入房间等服务界面由应用负责,双方都会牵动界面切换与应用状态。一旦边界错位,用户看到的界面与应用掌握的状态就会不一致。工作涵盖服务界面开发、3D 空间与应用界面之间的边界调整,以及与百余人团队的协作。
3D 空间交给引擎,服务界面交给应用的分工
这款虚拟空间社交应用里,虚拟形象活动的 3D 空间与账户、首页、进入房间、活动、设置等普通应用界面同处一个应用。用户为虚拟形象挑选服装与体形,再选定主题开设房间,或进入他人开设的房间,在里面展示资料、交谈。我们划分了两边的职责:3D 空间由 3D 引擎绘制,服务界面由应用自己绘制。从首页选房间进入、离开房间再回到首页,这条在两个区域之间往返的流程被组织得自然连贯。

进入房间那一刻,3D 空间与应用界面咬合的边界
在虚拟空间应用里,进入 3D 空间、应用界面切换、连接会话状态、应用转入后台再返回,这些变化发生在不同的一侧。四者在同一时刻叠加时可能相互冲突,因此我们调整了 3D 引擎与应用相接的边界区域。在负责应用侧功能开发的同时,也处理了这一段,避免 3D 空间与应用界面的职责混在一起。

无论信号以何种顺序到达都可追踪的界面状态
在虚拟空间应用里,登录状态、进入房间状态、网络响应与 3D 引擎初始化完成的时间点各自在不同时刻到达。每个界面都按同一框架搭建,把用户输入、服务器响应与界面状态变化分为输入和输出,因此无论哪个信号先到,都能追到界面状态在哪里改变。这个框架后来成为在其他项目中设计界面结构的标准。

在百余人团队中先行划定的负责范围与接口
这项虚拟空间社交服务由百余人的团队共同打造:应用开发者之外,还有 3D、服务器、策划与 QA。仅同一平台的应用开发者就有七八人。对于改动横跨多个平台的功能,先划分负责范围与彼此交接的接口再开发,各平台之间不同的行为则边做边协调。

项目亮点
开发账户、首页、进入房间、活动、设置等虚拟空间服务界面
调整边界,使进入 3D 空间与应用界面切换互不冲突
登录、进入房间与 3D 初始化先后错开到达,界面状态依然可追踪
洞察
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



