世界を動かす技術を、日本語で。

Librebox: オープンソースのRoblox互換ゲームエンジン

概要

Librebox は、 Roblox互換 のオープンソースゲームエンジン。 Luau スクリプトを実行し、 Roblox API の互換性を目指す。 Windows対応 のデモ段階で、今後多機能化予定。 完全な独立性オープンソース が特徴。 将来的には サーバー・エディタ・マルチプラットフォーム へ拡張予定。

Libreboxとは

  • Roblox互換 を目指した オープンソースゲームエンジン
  • Luau スクリプトを実行可能
  • Roblox API を再現し、既存のRobloxコードを流用可能
  • Roblox Corporation とは一切関係なし
  • 開発者自身がゲーム・エンジンを完全に所有 できる環境

Libreboxの特徴

  • シーン描画・ライティング・シャドウ・スカイボックス 対応
  • Parts(パーツ) の基本的なレンダリングと配置
  • カメラ操作 の基本機能
  • CFrame, Vector3, Color3, Random 等の標準データ型サポート
  • Instanceシステム とほぼ完全なAPI(:WaitForChild()は未実装)
  • クライアントサイドサービス (Workspace, RunService, Lighting等)対応
  • Luauスクリプト の高速実行と最適化
  • ウィンドウ管理やフルスクリーン最適化

サンプルコード

  • Workspaceに Part を生成し、回転と色変化を実装
    • 例:
      local part = Instance.new("Part")
      part.Anchored = true
      part.Color = Color3.new(1,0,0)
      part.Position = Vector3.new(0,2.5,0)
      part.Parent = workspace
      local rs = game:GetService("RunService")
      local t = 0
      rs.RenderStepped:Connect(function(dt)
        t += dt
        part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, t, 0)
        part.Color = Color3.fromHSV((t*0.2 % 1), 1, 1)
      end)
      
    • 上記コードは Libreboxエンジン でそのまま実行可能

現状の対応範囲

  • デモ段階 であり、Roblox APIの一部のみ実装
    • シーン描画・パーツ配置・カメラ操作
    • Instance API(Parent, :Destroy(), :Clone()等)
    • BasePart(Part.Color, .Transparency, .Size, .Position, .CFrame等)
    • RunService(RenderStep, HeartBeat等)
    • Lighting(Ambient, ShadowSoftness, ClockTime, Brightness等)
    • Luauスクリプト の各種機能(コルーチン、イベント、タスクスケジューラ等)

ダウンロード・実行方法

  • Windows 7以降 対応の スタンドアロン実行ファイル(.exe)
  • コマンドライン引数でスクリプトやフォルダ指定可能
    • --no-place:初期配置スクリプトを無効化
    • --target-fps:FPS制限
    • --path:スクリプトやフォルダのパス指定
  • 依存ライブラリraylib のみ(クロスプラットフォーム対応予定)

今後の拡張予定

  • Physics (物理演算・衝突判定)
  • Mesh サポート
  • game.Players, Player, UserInputService, ContextActionService
  • 画像・デカール描画、GUI、マテリアル強化
  • ネットワーク・サーバー・レプリケーション
  • エディタ・サーバー構築・独自API・マネタイズ機能
  • マルチプラットフォーム展開

ライセンス・法的事項

  • Luau :MIT License
  • raylib :zlib/libpng License
  • Librebox は完全に 独立したプロジェクト
  • Robloxのソースコード・アセット等は一切未使用
  • 商標・互換性表記は 相互運用性 のためのみ

お問い合わせ

  • librebox.developers@gmail.com 要望・質問等の連絡先

まとめ:Libreboxの意義

  • 自分だけのゲームプラットフォーム 構築が可能
  • オープンソース著作権フリー、商用利用も可能
  • Roblox API互換 で既存の知識やコードを活かせる
  • 今後の拡張性コミュニティ主導の開発 期待

Hackerたちの意見

すごいね。ロブロックスには、今もたくさんのコンテンツが作られてるけど、全部そこでしか使えないのがもったいない。

確実に「クラブ」コンテンツは解放する必要があるね。

でも、ロブックスでお金使えるの?使えないなら、パスかな。結局、問題はロブックスのお金でしょ?エンジン自体は特別なわけじゃないし。

もしかしたら、開発者たちは自分のロブロックスゲームのスタンドアロン版を出して、プラットフォームの束縛から逃れようとしてるのかもね?もちろん、彼らのファンがついてくるかは別の話だけど。

使ったことはないけど(ロブロックスは大嫌い)、ロブロックスの制作ツールは結構良いって聞いてるよ。

若い頃にロブロックスの制作ツールを学んだ開発者たちが、ロブロックスに縛られてるのは結構いるよ。使いやすくて、デスクトップのロブロックスプレイヤーなら誰でもアクセスできるから、成長期にそのスキルを磨いてきたけど、そのスキルがニッチで他のゲームエンジンに簡単には移行できないんだ。選択肢は、Unityで初心者として再スタートするか、ロブロックスで友達やサブコミュニティで得た名声を持ちながら高度な作品を作り続けるかのどちらか。正直、誰かがAPI互換の代替品を作ろうとするのにこんなに時間がかかったのは意外だよ。

いいね、これは本当に面白い。ロブロックスの法務チームに潰されないことを願ってる。潜在的な使い道としては、Linuxネイティブのクライアントを作ることかも。今使われてるのは(Sober)プロプライエタリだし、前の(Vinegar)はLinuxのハッカーのせいで閉鎖されたからね。

ロブロックスの法務チームに潰されないことを願ってる。ロブロックスが何もしないとは言わないけど、このプロジェクトは明らかに法的に問題ないと思う。合法性がスペクトラムだとしたら、これをVLCメディアプレーヤー(特許あり)よりも高く評価するし、NESエミュレーターよりもずっと上だね。Androidよりは下だと思うけど、OracleはAndroidを訴えたからね。(免責事項:私は弁護士じゃないけど。)

こういうプロジェクトは、Robloxの法律部門にとって、Robloxプラットフォーム上の子供を狙った犯罪行為よりも優先度が高い気がする。

Libreboxは現在デモ段階にあるよ(Roblox APIの限られた機能だけを実装してる)。これがただのデモだってことは言っておいた方がいいね。実装されてないAPI機能のリストはめっちゃ長いし(特にサーバーやネットワーク関連がね)。

もし俺があいつらなら、サーバーとネットワークから始めるかな。後から追加するのは結構大変だからね。

GitHubリポジトリからは開発者について何もわからない。彼らのDiscordサーバーもさらに奇妙で、チャンネルには何もなくて、開発者ロールを持ってる唯一のメンバーは「プロジェクト」専用のアカウントなんだ。ソースコードを見ると、ちゃんと作業は進んでるみたいだけど、READMEだけじゃないし、でもやっぱりちょっと変だな。

一人でやるとこうなるよね =(

一番好意的に解釈すると、彼らは法的トラブルを恐れて身元を隠してるんじゃないかな。結局、Robloxは810億ドルの組織だし。

missing :WaitForChild() それはいいこと…だよね?

世界の終わりってわけじゃないし、ちょっとした不便で、忙しく待つよりはマシだよ。オブジェクトを操作したいけど、コードが実行される前にそれが存在するかどうかは保証されてないケースはたくさんあるからね。似たような機能はこう書けるよ:while not parentObj:FindFirstChild("childObj name") do wait() end 確か、wait()は1/30秒以上だと思うから、もっとタイミングを合わせたいなら、毎回ハートビートで実行するのがいいかも。

ああ、失礼だけど、なんでHNで大文字で話すのがこんなにワクワクするかって?この前DiscordでRobloxの話をしてたら、みんなそれを嫌ってるのに、「友達と遊ぶだけだから気にしない」って言ってて、私は「ちゃんと考えないといけないよね」って思ったんだ。Robloxは子供の安全なんて全然気にしてないからね(ちょっと汚い言葉を使っちゃうけど)。Robloxはマインクラフトみたいに、でももっとブロックっぽくない感じにしたらいいなって思ってた。オープンワールドを作るのは、今までの考え方だと、全く新しいゲームを作ること(私的にはRobloxには合わないアプローチだと思う)で、2週間前に考えてたのはLuanti(以前のminetest)をカスタムモッドでサーバーをホスティングすることだった。めっちゃワクワクしてるし、これのために製品を作って無料でホストするか、ゲームを実行できるJupyter Pythonノートブックのスクリプトを作るつもりだよ。安全面から見ても、このジャンルでオープンソースが成功してほしいんだ。

これは素晴らしいリポジトリだね。