데스크탑 강화: 게임이 더 이상 로딩 중 멈추지 않습니다.
그 날에는 패키지된 데스크톱 앱을 "열기"에서 "열고 작동함"으로 푸시하는 하나의 과정이 있었습니다. 대체 조명 방식 덕분에 게임이 더 이상 검은색으로 표시되지 않고 "게임 로딩 중" 상태로 멈춥니다. 데이터 열기, 닫기 및 재설정으로 인해 더 이상 전체 인터페이스가 정지되지 않습니다. 구현되지 않은 자리 표시자 플러그인은 데드 링크를 발생시키는 대신 우아하게 숨겨집니다. 내장된 음악 및 사운드 오디오 라이브러리와 함께 로그 패널이 있는 전문 도구 상태 표시줄이 도착했습니다.
"열림"을 "열림 및 작동"으로 푸시
一个能는 浏览器里跑得很好的东西, 装进桌面应用后未必同样好用——桌面应用 是操作系统自带的网页引擎, 它 와主流浏览器에서 系统自带 网页引擎, 它 와 主流浏览器는 底层能异에서 無少差异,很多浏览器里没问题의功能,到了桌면就会以各种의식은 없습니다.把打包后的桌面应用从"勉强能打开"逼到"打开就能正常用"。它处理的不是某一个炫目새로운 功能, 而是一长串"에서 桌面端才会暴露"의 可靠性问题——游戏加载死锁,窗口开关冻结、중독、点不开的死链。这类工작품往往吃력불호一时间就被劝退.但对一个想让普通人把它装到自己电脑上日常用产product来说,"桌面端开箱即用"是绕不过去的一关。这一天,就是认认真真把这一关闯了过去。뭔가 브라우저에서 훌륭하게 실행되는 것이 데스크톱 앱에 패키징되면 반드시 사용할 수 있는 것은 아닙니다. 데스크톱 앱은 운영 체제에 내장된 웹 엔진을 사용합니다. 이는 기본 기능이 주류 브라우저와 여러 면에서 다르기 때문에 브라우저에서 잘 작동하는 많은 기능이 데스크톱에서는 예상치 못한 방식으로 잘못됩니다. 이날은 집중적인 "데스크톱 강화"였습니다. 즉, 패키지된 데스크톱 앱을 "거의 열리지 않음"에서 "열려 제대로 작동함"으로 밀어넣는 것이었습니다. 눈부신 새로운 기능 하나가 아니라 게임 로드 교착 상태, 창 열기/닫기 정지, 재설정 창 충돌, 열 수 없는 데드 링크 등 "데스크탑에서만 발생하는" 긴 안정성 문제를 해결했습니다. 이러한 작업은 종종 감사할 일이 아닙니다. 잘 수행되면 사용자가 눈치채지 못합니다. 제대로 수행되지 않으면 사용자는 즉시 이탈합니다. 하지만 일반 사람들이 자신의 컴퓨터에 설치해 매일 사용하기를 원하는 제품이라면 "데스크탑에서도 바로 작동한다"는 것은 피할 수 없는 관문이다. 오늘은 본격적으로 그 관문을 클리어하는 날이었습니다.
더 이상 "게임 로딩 중"에 머물지 않습니다: 장면에 대한 대체 조명
这天最关键的一修,是让游戏는 桌黑屏死锁。此前的现象很劝退: 에서 打包后的桌面应用里点"试玩",画face常常一直黑着, 永远停에서 "로드 중 게임"입니다." 한 가지 용도로 사용하는 것이 좋습니다.恰好city缺失,于是场景在加载这盏天光时直接卡死,后face什么德跑不起来。这天的解法是给场景设计了一条"兜底"路径:给相机加上一个纯color的하늘하늘색(至少天不是黑的),再加一盏纯color的兜底环境光把场景里的物体均匀Photo亮——即使享受不到高级天光,场景也能正常, 明亮地显示常来。同时让所有样例游戏는 检测到这种环境时,自动跳过那盏加载不了的天光,直接走兜底路径。改完之后,这些游戏는 些游戏에서 些游戏에서 桌face应用里city能正常进入、看得见画面了입니다.完整地整理成清单,提交给引擎团队,推动从根上补齐,而不是只在自己这边打补丁绕过去。 오늘의 주요 수정 사항은 데스크톱 앱에서 게임의 검은색 화면 교착 상태를 끝내는 것이었습니다. 이전 증상은 불쾌했습니다. 패키지된 데스크톱 앱에서 "플레이"를 누르면 종종 화면이 검게 변하고 "게임 로드 중"에서 영원히 멈추는 경우가 있었습니다. 기본적으로 데스크탑 앱이 사용하는 시스템 웹 엔진은 환경 이미지를 사용하여 전체 장면에 사실적인 조명을 제공하는 고급 기술인 "환경 맵 기반 스카이 조명"을 지원하지 않습니다. 데스크톱 엔진에서는 이에 의존하는 몇 가지 기본 기능이 누락되어 이 스카이라이트를 로드하는 동안 장면이 교착 상태가 되어 더 이상 실행할 수 없습니다. 오늘의 솔루션은 장면에 대한 "대체" 경로를 설계했습니다. 즉, 카메라에 단색 하늘 기본 색상을 제공하고(하늘이 최소한 검은색이 되지 않도록) 단색 대체 주변 조명을 추가하여 장면의 개체를 고르게 비춥니다. 따라서 고급 하늘 조명이 없어도 장면이 적절하고 밝게 표시됩니다. 모든 샘플 게임은 이 환경을 감지하면 자동으로 언로드 가능한 스카이라이트를 건너뛰고 대체 경로를 사용합니다. 수정 후 이러한 게임은 데스크톱 앱에 제대로 입력되고 렌더링됩니다. 그 뒤에는 좋은 습관이 있습니다. 근본적인 기능 격차를 전체 목록으로 컴파일하고 이를 엔진 팀에 제출하여 우리 측에서만 패치를 적용하는 것이 아니라 근본적인 수정을 추진하는 것입니다.
열기, 닫기 및 재설정이 더 이상 중단되지 않음: 수명 주기 강화
这天还系统性地硬化了桌면제사용용"生命周期"입니다.只是一个窗口,它背后还连着一整套本地后端服务,而"窗口开/ 窗口关 /数据重置"这些时刻,正是各种可靠性问题最容易爆发的地方.接管整套后端的生命周期——开窗时干净地启服务、关窗时彻底地拆除,不再留下一堆游离的后台进程·着资源。一批"重置之后整个界face就炸"的坑被填平:清空会话重、置游戏这类批删除操작,改成了异步且有边界的方式,不再因为一次性同步删大weight数据而把界면冻住, 也不再连带把窗口一起杀掉, 起杀掉, 重置完窗口 와设置都能优雅地恢复。后台还立起了一套看护机조제:自动监护并는 必要时重启关键的边车进程, 에서 退企时干净地回收它们, 并用健康检查门控启动;再配上顶层的异常兜底과 一个修好的, 不再泄漏的心跳机眺机看朋很底层, 但合起来决定了一件事:你能不能放心地把这个桌face应用开着用一整天而它不崩、不卡、不留烂摊子。이것은 또한 데스크톱 앱의 '수명주기'를 체계적으로 강화했습니다. 데스크톱 앱은 단순한 창이 아닙니다. 그 뒤에는 전체 로컬 백엔드 서비스 세트가 있으며 "창 열기/창 닫기/데이터 재설정" 순간은 바로 안정성 문제가 가장 많이 발생하는 순간입니다. 몇 가지 개선 사항: 데스크톱 앱이 전체 백엔드 수명 주기 자체를 소유하도록 하여 서비스를 열 때 완전히 다시 시작하고 닫을 때 서비스를 완전히 종료하여 리소스를 잡아먹는 길 잃은 백그라운드 프로세스 더미를 남기지 않습니다. 일련의 "재설정 및 전체 인터페이스 폭발" 함정이 해결되었습니다. 세션 지우기 및 게임 재설정과 같은 대량 삭제 작업이 비동기식 및 제한적으로 이루어졌으며 더 이상 한 번에 대량의 데이터를 동기식으로 삭제하여 인터페이스를 정지하거나 창을 종료하지 않고 창과 설정이 재설정 후 정상적으로 복구됩니다. 감독 시스템은 백그라운드에 설치되었습니다. 감시 시스템은 필요한 경우 주요 측면 프로세스를 다시 시작하고, 종료 시 깔끔하게 처리하고, 상태 확인 시 시작을 시작합니다. 게다가 최상위 예외 백스톱과 더 이상 누출되지 않는 고정 하트비트도 제공됩니다. 개별적으로 낮은 수준에서 이러한 사항이 함께 결정됩니다. 즉, 이 데스크톱 앱이 충돌하거나 중단되거나 혼란을 겪지 않고 하루 종일 자신 있게 열려 있을 수 있는지 여부입니다.
자리표시자 플러그인은 우아하게 숨겨집니다. 구현된 것만 표시됩니다.
404死链。原因是商店里有几个还只是·位、尚未实现的工작품台插件,它们本不该流现이용户면앞,却被当成正常插件超示了出来,一点就报错。这天把它们统一标记为隐藏——让所有工작품台插件tour进入"实现了才出现"的优雅降级:没做好的东西,干脆不要示, 而不是展示一个点了就坏的入口.根因: 에서 开发环境下,插件的构建产物有时会损坏或缺失,导致它即便是已实现的插件也加载不出来;这天给这种情况加了自愈——发现产物坏了或没有,就自动重新构建,从源头上消除了这类404. 一个产제품对外暴露的每一个入口, 是一次承诺;把"点了就坏"的入口藏起来、把坏掉的产物自动修好,守住的是"凡是你看得见的,就条基本信任.이것은 하루는 또한 첫인상의 어색함을 해소했습니다. 워크벤치 플러그인을 열었지만 404 데드 링크를 얻었기 때문입니다. 원인은 사용자가 보기 전에 표시되어서는 안되는 스토어의 여러 자리 표시자, 구현되지 않은 워크벤치 플러그인이 아직 일반 플러그인으로 표시되어 클릭 시 오류가 발생했기 때문입니다. 오늘은 이를 일률적으로 숨김으로 표시했습니다. 모든 워크벤치 플러그인을 "구현된 한 번만 표시"로 설정했습니다. 우아한 성능 저하: 클릭 시 중단되는 항목을 표시하는 대신 준비되지 않은 항목은 단순히 표시되지 않습니다. 그 사이에 더 깊은 근본 원인이 수정되었습니다. 개발 환경에서 플러그인의 빌드 출력이 때때로 깨지거나 누락될 수 있으므로 구현된 플러그인도 로드되지 않습니다. 오늘은 이를 위한 자가 치유 기능이 추가되었습니다. 출력이 손상되거나 없는 것을 발견하면 자동으로 재구축되어 소스에서 이 404 클래스를 제거합니다. 제품에 표시되는 모든 항목은 약속입니다. "클릭 시 중단" 항목을 숨기고 손상된 출력을 자동 복구하면 "볼 수 있는 것은 무엇이든 사용할 수 있다"는 기본적인 신뢰가 유지됩니다.
전문 도구 상태 표시줄 + 로그 패널 + 오디오 라이브러리
这其一是一条专业工具风格的状态栏:界面右侧有一个健康指示器,一眼就能看 Out系统当前状态正不正常; 의 信息 日志面板, 把运行过程中 日志收集起来, 支持点击即复板, 复条目自动折叠, 并把控科台和网络면板也接了进来。对一个复杂的创작품工具来说,"了问题能不能第一时间看到、看清" 비常关键——这条状态栏就是把系统的健康状况 and 运行细节, 从藏에서 后台变成了摆이 眼前에 있습니다. 새로운 增了一个음을 频库工작작:内置了음을 乐与음을 效素材库,并接入了语음을 与음을 乐 的합합합성. 一个游戏没有声这个库,而很多创戏, 而很多创戏既不懂작품曲, 也没有现成的聲效;有了这个库,给游戏이 day는 또한 인터페이스에 두 가지 실용적인 기능을 추가했습니다. 하나는 전문 도구 스타일의 상태 표시줄입니다. 오른쪽의 상태 표시기는 시스템의 현재 상태가 정상인지 한 눈에 보여줍니다. 심각한 문제에 대해서는 눈에 띄는 배너가 나타납니다. 도킹 가능한 정보 로그 패널은 런타임 로그를 수집하여 클릭하여 복사하고 반복 항목의 자동 접기를 지원하며 콘솔 및 네트워크 패널도 연결되어 있습니다. 복잡한 생성 도구의 경우 "문제가 발생하는 순간을 보고 명확하게 볼 수 있는지"가 중요합니다. 이 상태 표시줄은 시스템의 상태 및 런타임 세부 정보를 백그라운드에 숨겨져 있는 것에서 눈앞으로 이동시킵니다. 다른 하나는 새로운 오디오 라이브러리 워크벤치입니다. 음악 및 사운드 효과 라이브러리와 음성 및 음악 합성이 내장되어 있습니다. 소리가 없는 게임은 항상 영혼이 반쯤 부족한 것처럼 느껴지며, 많은 제작자는 음향 효과를 작곡하지도 준비하지도 않습니다. 이 라이브러리를 사용하면 게임의 배경 음악에 점수를 매기고, 히트 사운드를 추가하고, 캐릭터 목소리를 내는 등 모든 작업이 "다른 곳에서 찾아보기"에서 "도구에서 바로 찾기"로 이동합니다.
오늘의 의미
这一天没有诞生什么惊艳的新能力, 它做的是一件更朴素也更关键的事:让产product재고 있음真实적 사용형은 态下站得住。 일반적인 제품, 双击就能脑, 双击就能用一整天而不崩的产product,中间隔着 的正是这一天所做的전체 부분——兜底、硬化、自愈、优雅降级。 "信任"打底。游戏能正常加载,人才敢做;窗口不冻死,人才敢一直开着;看得见的入入会被劝退;会袘能看到、声音随手能加,人才用得安心、用得尽兴。把一个东西从"演示能跑"做到"真实能用",从来ت是最不显山露、却最见功力的一段路。这一天,正是把桌면应用扎扎实实地推过了这道门槛。이것은 눈부신 새로운 기능이 탄생한 날은 없었습니다. 그것은 더 단순하고 더 중요한 일을 했습니다. 즉, 제품이 실제 사용 형태를 유지하도록 만드는 것입니다. 개발자의 브라우저에서 훌륭하게 실행되는 제품과 일반 사람이 자신의 컴퓨터에 설치하고 두 번 클릭하면 하루 종일 충돌 없이 사용할 수 있는 제품 사이에는 폴백, 강화, 자가 복구, 정상적인 성능 저하 등 오늘 수행된 모든 작업이 정확히 들어있습니다. 이들 모두는 하나의 기질을 공유합니다. 그들은 모두 "신뢰"의 토대를 마련합니다. 게임이 제대로 로딩되면 사람들이 감히 게임을 만들 수 있게 됩니다. 창문이 얼지 않는 것은 사람들이 창문을 계속 열어 놓을 수 있게 하는 것입니다. 눈에 보이는 모든 항목이 작동하면 사람들이 튀는 것을 방지할 수 있습니다. 문제가 눈에 보이고 소리를 추가하기 쉽다는 점은 사람들이 그것을 쉽고 완전하게 사용할 수 있게 해줍니다. "데모 실행"에서 "진짜 작동"으로 전환하는 것은 항상 가장 덜 화려하지만 가장 기술을 드러내는 구간입니다. 오늘 데스크톱 앱이 해당 임계값을 확실히 넘어섰습니다.