問題タブ [demoscene]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - デモ シーンのサイズ制限には何が含まれますか?
だから私は小さな (64k) デモを作りたいと思っています。私は疑問に思っていましたが、バイト数には正確に何がカウントされますか? たとえば、単純なデモ エンジンを実行したら、Lua をスクリプト言語として埋め込むことができますが、ほとんどすべての *nix コンピューターに Python が搭載されているため、そのインタープリターを無料で使用できますか?
デモシーンの精神に合わないと主張する人もいるかもしれませんが、最後のバイトごとに搾乳していると思います. さらに、Lua は 50k で、これよりも小さいカスタム インタープリターは書きたくありません (バグが発生する可能性があります)。
demoscene - デモシーンの作成に関するチュートリアル
環境:
- 視聴: http://www.youtube.com/watch?v=AWcbj7ksqwE
- OpenGL / GLSL / C++ / C に精通している
私はいくつかのオーディオプログラミングを行いました。
とりあえず、64k または 4k に圧縮してみてください。
上記のデモのようなものを手続き的に合成する方法さえ知りません。
質問:
デモシーンはアンダーグラウンドなブラックアートのようなものだと思います。ただし、これらのいずれかを作成するための優れたチュートリアル/ウォークスルーはありますか? 何かのようなもの:
「OpenGL / GLSL / C++ / C を知っているダミーのためのデモシーン」
また、コードを圧縮するように設計されたツールキットがあることも認識していますが、現時点では圧縮は重要ではありません。このようなものを作成する方法を学ぶだけでも幸いです。
簡潔な質問:
個々のステップを理解するのに十分な技術的背景を持つ人のために、デモシーンを段階的に作成するための優れたチュートリアル/ウォークスルーを提案できますか (ただし、全体像を見ることはできません)。
ありがとう。
c++ - デモ作成者はどのように超小型ファイルサイズを達成していますか?
私が YouTube でデモシーンのビデオを見ると、作成者はファイルサイズが 64kb 以下で、わずか 4kb のものもあるとよく自慢します。非常に基本的なプログラムを C++ でコンパイルすると、実行可能ファイルは常に少なくとも 90kb 程度になります。これらのデモはすべてアセンブリで書かれていますか? 私の理解では、デモ作成者も c/c++ を使用していました。
c++ - Direct X とリンクすると、プログラムのサイズが非常に大きくなるのはなぜですか?
次の要件を持つプログラムを作成する必要があります。
- スタンドアロン (インストールなし)
- サイズに最適化
- Windows XP 互換
問題は、たとえば#include <d3dx9.h>
、単一の関数を追加して使用すると、実行可能サイズが 370kb 増加することです。
ライブラリのいくつかの関数を使用するだけで、実行可能ファイルに完全にリンクされない方法/ツールはありますか?
次のことを試しましたが成功しませんでした
- リリースモード
- プログラム全体の最適化
- サイズを最小化 (/O1)
- 小さいコード (/O) を優先する
- /OPT:REF
- /OPT:ICF
- リンク タイム コード生成 (/LTCG) を使用する
これはテスト コードです (私は 2004 年 10 月のバージョンの d3dx を使用しており、ここにある静的リンクを許可していますhttps://github.com/kavika13/jumpmanzero-thirdparty )
注: 同じライブラリのより多くの機能を使用すると、同じ ~370Kb 増加することに注意してください。
c - ld を使用して SDL/openGL アプリケーションを手動でリンクする
デモシーン コンテスト用の最小サイズの実行可能ファイルを作成しようとしています。自分でリンクすることで、実行可能ファイルのサイズを最小限に抑えようとしています。
これは、 http://www.int21.de/linux4k/から取得した私の最小限の main.c です。画面に白い三角形を描画します。
C ランタイムを使用したくないため、void _start()
代わりにを使用しています。int main()
これが私のビルドコマンドです(私のマシンはUbuntu Linuxを実行しています):
SDL_SetVideoMode でプログラムがクラッシュします。gdb レポート:
なにが問題ですか?に変更void _start()
しint main()
、全体を でコンパイルするとgcc main.c -o main -lSDL -lGL
、問題なく動作します。で実行可能ファイルを調べると、この動作中のバージョンと自己リンクされた壊れたバージョンには、リンクされたライブラリのリストがまったく同じldd
です。
python - 変更された DFS アルゴリズムを使用して巡回有向グラフをトラバースする方法
概要
ある種の DFS 反復アルゴリズムを使用して、有向循環グラフをトラバースする方法を理解しようとしています。これは、私が現在実装しているものの小さな mcve バージョンです (サイクルは扱っていません)。
上記のコードはいくつかのケースをテストしています。最初のケースは、以下のグラフのある種の表現になります。
2 つ目は、1 つの「無限」ループを含む 1 つのグラフの最も単純なケースです。{a->b, b->a}
要件
- 「無限サイクル」のようなものは存在しません。たとえば、「無限サイクル」が1つ見つかった場合、それらの「疑似無限サイクル」のループをいつ停止するかを示す最大しきい値(グローバル変数)があります。
Repeat
すべてのグラフ ノードはサイクルを作成できますが、サイクルをループする反復回数を指定できる特別なノードが存在します。- 私が投稿した上記の mcve は、巡回グラフの処理方法がわからないトラバーサル アルゴリズムの反復バージョンです。理想的には、ソリューションも反復的ですが、はるかに優れた再帰的ソリューションが存在する場合、それは素晴らしいことです
- ここで話しているデータ構造は、実際には「有向非巡回グラフ」と呼ばれるべきではありません。この場合、各ノードには順序付けられた子があり、グラフではノード接続に順序がないためです。
- すべてがエディター内の何にでも接続できます。任意のブロックの組み合わせを実行できますが、唯一の制限は実行カウンターです。これは、無限ループを作成したり、反復が多すぎたりするとオーバーフローします。
- アルゴリズムは、上記のスニペットと同様に、ノードのメソッド実行の開始/中間/後を保持します。
質問
無限/有限サイクルを横断する方法を知っている何らかのソリューションを提供できる人はいますか?
参考文献
この時点でまだ疑問が明確でない場合は、この記事でこの問題について詳しく読むことができます。全体的なアイデアは、トラバーサル アルゴリズムを使用して、その記事に示されているような同様のツールを実装することです。
これは、トラバースして実行する方法を理解したい、このタイプのデータ構造の全機能を示すスクリーンショットです。