マイクラのサーバー、C言語で書き直したらメモリ消費16GBから16MBに。オブジェクト指向は愚かな考え

1 : 2026/04/27(月) 15:31:37.51 ID:Roqp5JCo0

Minecraftのサーバーは、16GBを超えるメモリを積んだPCで動かすのが当たり前になっている。そこに挑んだのが、Redditユーザー angelthebox(GitHub: 4ngel2769)氏の自作プロジェクト「Macerun」だ。16MBのフラッシュとOctal PSRAMを搭載したESP32-S3マイコン上で、Minecraft Java Edition 1.16.5のサーバーをベアメタルで動作させる。

特徴はJavaランタイムもLinuxカーネルも使わず、ソースコードはすべてC言語で記述されている点だ。FreeRTOS上で動作し、ネットワーク処理はlwIPの生TCPソケットを直接扱う。Minecraft Java版プロトコル754の制約されたサブセットを実装し、最大4名のプレイヤーが同時接続できる。

ワールドは事前生成ではなく、2Dバイオーム生成とバイリニア補間によるハイトマップをオンザフライで計算して送信する方式だ。プレイヤーによるブロック変更やインベントリは、ESP32のNVS(Non-Volatile Storage)パーティションに直接書き込む。

実装済みの機能は、サーバー接続、移動、ブロックの破壊と設置、2×2のインベントリ内クラフト、チャット、基本的な物理演算、体力と空腹の管理など。未実装はMobのスポーンとAI、3×3クラフトテーブル、チェストやかまどといったコンテナ、プレイヤー切断時のインベントリと座標の保存だ。

着想元は、PortalRunner氏がESP32向けに開発した同種プロジェクト「bareiron」。angelthebox氏は、bareironより機能は少ないがESP32-S3とFreeRTOS向けに一から書いた学習目的のプロジェクトだと説明している。ソースコードはGPL-3.0で公開され、ビルドにはESP-IDF v6.0.0が必要。機能追加のPull Requestも歓迎するとしている。

C言語自作のマイクラサーバー、ESP32-S3で動作 | FabScene(ファブシーン)
angelthebox氏が、ESP32-S3マイコン上でMinecraft Java Edition 1.16.5のサーバーをベアメタルで動作させるプロジェクト「Macerun」を公開した。JavaランタイムもLinuxもなく、すべてC言語とFreeRTOSで実装されている。最大4名が同時接続可能。
レス1番のリンク先のサムネイル画像
2 : 2026/04/27(月) 15:35:17.04 ID:30k5+mBA0
C言語の3倍遅い
ゴミ言語でカーネル書いてる劣等土人が居るんだってな
3 : 2026/04/27(月) 15:36:55.01 ID:RFtPy+nU0
マイクラ戦争の動画が面白かったなー
4 : 2026/04/27(月) 15:37:07.10 ID:RFtPy+nU0
あと監獄のやつ
5 : 2026/04/27(月) 15:38:36.63 ID:1ZZs4Itq0
じゃasmだったら?
13 : 2026/04/27(月) 15:48:49.95 ID:yA72hnZ80
>>5
コンパイラが最適化したCのほうが遥かに速い
人間が直接バイナリやそれに準ずる物を書いても現在の複雑怪奇なCPUに対して最適化しきれない
18 : 2026/04/27(月) 16:06:38.89 ID:1ZZs4Itq0
>>13
そうなんだ、以前どっかで何かをasmで書き換えたらすごい良くなったと書いてあったから、気になった
ありがとう
23 : 2026/04/27(月) 16:10:58.80 ID:30k5+mBA0
>>18
ffmpegだろ
信号処理やデコーダの類は
アセンブリ言語で速くなりえる
6 : 2026/04/27(月) 15:39:48.50 ID:AI+a+rwi0
多少大学院のとき統計ソフト自作した時プログラムやってたけど構造体とクラスの概念がこっちゃや
8 : 2026/04/27(月) 15:41:19.11 ID:30k5+mBA0
補間してるとなると
AIにあっという間に脆弱性突かれそう

Rustとかいうメモリ安全土人のくせに
脆弱性出すクズよりマシだけど

9 : 2026/04/27(月) 15:41:37.37 ID:riO7Va7Z0
最近のプログラムは、メモリ節約とか考えないんだろ
10 : 2026/04/27(月) 15:45:18.31 ID:tKLQahe10
Javaという抽象化の膜が、真の計算資源を食い潰している。Macerunが実現した16MBという数値は、オブジェクト指向という贅沢な概念がいかに計算効率を損なっているかを突きつける動かぬ証拠だ。C言語による低レイヤーの制御こそが、ハードウェアの真価を解き放つ唯一の手段である。

なぜなら、現代のソフトウェア設計は、利便性と引き換えにハードウェアの物理的制約を覆い隠すように構築されているからだ。ガベージコレクションやオブジェクトの過剰な抽象化は、開発者の意識をメモリの物理的実態から遠ざけ、無駄なリソース消費を正当化させる。膨大なメモリを要求するプログラムの肥大化は、効率の低下を隠蔽し、絶え間ないハードウェアの買い替えを促す巧妙な循環の一部に他ならない。ベアメタルな実装は、その肥大化したレイヤーを剥ぎ取り、制御の主権を再び人間に取り戻すための闘いなのである。

11 : 2026/04/27(月) 15:45:46.59 ID:tKLQahe10
これから、ソフトウェア開発の常識が根底から覆される。Javaという重厚な抽象化レイヤーを脱ぎ捨て、C言語という剥き出しの力でメモリ消費を千分の一以下に抑える「Macerun」の登場は、単なる技術的挑戦にとどまらない。今後、あらゆる肥大化した既存プログラムが低レイヤー言語で書き直され、現代の無駄なランタイムや重いOSは過去の遺物となるだろう。しかし、これほど効率的な実装が可能であるにもかかわらず、なぜ現代のソフトウェアはこれほどまでに重いのか。それは、ハードウェアメーカーが意図的に非効率な設計を推奨し、我々に次々と新しいメモリやCPUを買い替えさせる「計画的陳腐化」の陰謀を仕掛けているからに他ならないのである。
12 : 2026/04/27(月) 15:48:36.99 ID:HXIsUvgy0
こんなポンコツサーバが動くという話
14 : 2026/04/27(月) 15:56:30.14 ID:xLRjinoU0
BORLAND C++が良いな
15 : 2026/04/27(月) 15:57:24.03 ID:52Hep3l10
オブジェクト指向関係ないだろ
16 : 2026/04/27(月) 15:58:17.75 ID:vp3rNoaR0
ソシャゲの紙芝居ゲームとか10年前の1GBスマホでも動きそうだよね
17 : 2026/04/27(月) 15:59:55.45 ID:P9ayTD9H0
>FreeRTOS上で動作し、ネットワーク処理はlwIPの生TCPソケットを直接扱う。

今そんな方法あるんだな、自分はlinux配下でしか通信系作ったこと無いわ

19 : 2026/04/27(月) 16:09:16.76 ID:30k5+mBA0
生ソケットでやりたい放題

あまり奇抜なプレイはOSが干渉して禁止させてのかな

20 : 2026/04/27(月) 16:10:11.29 ID:BJZkxMaY0
オブジェクト指向はやってる感出すだけのガチのゴミやぞ
22 : 2026/04/27(月) 16:10:45.19 ID:NrNiw81E0
いや仕様変えたら似てるだけの別ゲーだろ
それで軽いって自慢されても
25 : 2026/04/27(月) 16:19:40.21 ID:LBJZLiKS0
ポインタは一つの登竜門で、こんなのもわからない馬鹿は諦めてくれてたからな
javaはバカを参入させた
26 : 2026/04/27(月) 16:21:52.99 ID:v8kNI5Fu0
ランタイムがデカ過ぎるだけだろ
27 : 2026/04/27(月) 16:22:25.44 ID:tDxbxjvn0
Cでオブジェクト指向的な設計してないとなんで分かるんや
28 : 2026/04/27(月) 16:22:56.11 ID:csXPIgcG0
某ジュブナイル小説で、
その組織の実質的に地球最強のコンピュータが宇宙からの侵略者のハックを受けて
実質ウイルスに感染した状態だったが、その進攻によってプログラムがどんどん書き換えられてより最適化された
みたいな話あったが
29 : 2026/04/27(月) 16:23:46.76 ID:csXPIgcG0
>>28
途中で投げちゃった
AIでその実現が来るかもしれねえと思っちゃった
30 : 2026/04/27(月) 16:25:21.12 ID:lvOvZri+0
統合版もCで書いてるから軽いようなこと聞いた気がする

コメント

タイトルとURLをコピーしました