JA

SONIC PHP

作者:davidnurdin · プラットフォーマー
5.0 (1)
▶ 遊ぶ 💬 フィードバック ソース 🕘 バージョン 編集 GitHub
. / site / ja / index.html · commit a20d00e
<!doctype html><html lang="ja"><head>	<meta charset="utf-8" />	<meta name="viewport" content="width=device-width, initial-scale=1" />	<title>SONIC PHP – PHPで作り直したマスターシステム版ソニック、無料でオンラインプレイ</title>	<meta name="description" content="マスターシステム版ソニックをPHPで作り直し、ブラウザで無料プレイ。6つのゾーン、ボス、スペシャルステージ、ベストタイム、ボットとのレースを収録。キーボード、ゲームパッド、タッチ操作に対応。" />	<link rel="canonical" href="https://{{DOMAIN}}/ja/" />	<link rel="alternate" hreflang="fr" href="https://{{DOMAIN}}/" />	<link rel="alternate" hreflang="en" href="https://{{DOMAIN}}/en/" />	<link rel="alternate" hreflang="es" href="https://{{DOMAIN}}/es/" />	<link rel="alternate" hreflang="de" href="https://{{DOMAIN}}/de/" />	<link rel="alternate" hreflang="it" href="https://{{DOMAIN}}/it/" />	<link rel="alternate" hreflang="pt" href="https://{{DOMAIN}}/pt/" />	<link rel="alternate" hreflang="nl" href="https://{{DOMAIN}}/nl/" />	<link rel="alternate" hreflang="pl" href="https://{{DOMAIN}}/pl/" />	<link rel="alternate" hreflang="ru" href="https://{{DOMAIN}}/ru/" />	<link rel="alternate" hreflang="uk" href="https://{{DOMAIN}}/uk/" />	<link rel="alternate" hreflang="tr" href="https://{{DOMAIN}}/tr/" />	<link rel="alternate" hreflang="ja" href="https://{{DOMAIN}}/ja/" />	<link rel="alternate" hreflang="zh" href="https://{{DOMAIN}}/zh/" />	<link rel="alternate" hreflang="ko" href="https://{{DOMAIN}}/ko/" />	<link rel="alternate" hreflang="x-default" href="https://{{DOMAIN}}/" />	<meta name="robots" content="index, follow, max-image-preview:large" />	<meta name="theme-color" content="#00aaff" />	<link rel="icon" type="image/png" sizes="32x32" href="../images/favicon.png" />	<link rel="apple-touch-icon" href="../images/apple-touch-icon.png" />	<meta property="og:type" content="website" />	<meta property="og:locale" content="ja_JP" />	<meta property="og:site_name" content="SONIC PHP" />	<meta property="og:title" content="SONIC PHP – マスターシステム版ソニック、オンラインでプレイ" />	<meta property="og:description" content="マスターシステム版ソニック(1991年)をPHPで再現。6つのゾーン、ボス、スペシャルステージ、ボットとのレースをブラウザで無料プレイ。" />	<meta property="og:url" content="https://{{DOMAIN}}/ja/" />	<meta property="og:image" content="https://{{DOMAIN}}/images/og.png" />	<meta property="og:image:width" content="1200" />	<meta property="og:image:height" content="630" />	<meta property="og:image:alt" content="ゲームのロゴの横で、グリーンヒルをジャンプするソニック" />	<meta name="twitter:card" content="summary_large_image" />	<meta name="twitter:title" content="SONIC PHP – マスターシステム版ソニック、オンラインでプレイ" />	<meta name="twitter:description" content="6つのゾーン、ボス、スペシャルステージ、ボットとのレースをブラウザで。" />	<meta name="twitter:image" content="https://{{DOMAIN}}/images/og.png" />	<script type="application/ld+json">	{		"@context": "https://schema.org",		"@graph": [			{				"@type": "VideoGame",				"@id": "https://{{DOMAIN}}/ja/#game",				"name": "SONIC PHP",				"alternateName": "Sonic the Hedgehog(マスターシステム)– PHPによるリメイク",				"url": "https://{{DOMAIN}}/ja/",				"image": "https://{{DOMAIN}}/images/og.png",				"screenshot": [					"https://{{DOMAIN}}/images/level-1.png",					"https://{{DOMAIN}}/images/level-7.png",					"https://{{DOMAIN}}/images/special.png",					"https://{{DOMAIN}}/images/versus.png"				],				"description": "マスターシステム版ソニックのファンメイドのリメイク。PHPで書かれ、ブラウザでプレイできます。6つのゾーンとボス、スペシャルステージ、エンディング、ゴースト付きのベストタイム、ボットとのレースを収録。",				"genre": ["プラットフォーム", "アクション", "レトロ"],				"gamePlatform": ["Webブラウザ", "パソコン", "モバイル"],				"applicationCategory": "Game",				"operatingSystem": "最新のブラウザならどれでも",				"playMode": ["SinglePlayer", "MultiPlayer"],				"numberOfPlayers": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 1},				"inLanguage": ["ja"],				"isAccessibleForFree": true,				"offers": {"@type": "Offer", "price": "0", "priceCurrency": "EUR", "availability": "https://schema.org/InStock"},				"codeRepository": "https://github.com/davidnurdin/sonic-jumphp",				"sameAs": "https://sonic.mimichat.fr/",				"potentialAction": {"@type": "PlayAction", "target": "https://{{DOMAIN}}/play/"}			},			{				"@type": "FAQPage",				"mainEntity": [					{"@type": "Question", "name": "プレイするために何かインストールする必要はありますか?",					 "acceptedAnswer": {"@type": "Answer", "text": "いいえ。ゲームはパソコンでもスマートフォンでもブラウザ上で動きます。初回の読み込みで約25MB(WebAssembly版PHP、ステージ、グラフィック、音楽)をダウンロードし、その後はすべてキャッシュされます。"}},					{"@type": "Question", "name": "完全版とは何が違いますか?",					 "acceptedAnswer": {"@type": "Answer", "text": "sonic.mimichat.fr の完全版には、最大6人のオンライン対戦(公開・非公開ルーム、チャット)とリプレイがあります。このバージョンは同じゲームをJumPHPエンジンに移植したもので、一人またはボット相手に遊べます。"}},					{"@type": "Question", "name": "どうやって遊びますか?",					 "acceptedAnswer": {"@type": "Answer", "text": "矢印キーで走る・上を見る・ボール状に丸まる、スペースキーでジャンプ、Enterキーでメニューとポーズ、Escキーでタイトルに戻ります。ゲームパッドも使え、スマートフォンでは十字キーとボタンが画面に表示されます。"}}				]			}		]	}	</script>	<style>		:root {			--sky: #00aaff;			--night: #000055;			--night-deep: #00002a;			--ink: #f2f6ff;			--muted: #b4c4f0;			--panel: #0a1470;			--line: #2a3fb0;			--yellow: #ffd800;			--red: #e00000;			--cyan: #55ffff;			--blue: #0055ff;			--earth: #ffaa00;			--earth-dark: #aa5500;			--grass: #00aa00;		}		* { box-sizing: border-box; }		html { scroll-behavior: smooth; }		body {			margin: 0;			background: var(--night-deep);			background-image: linear-gradient(180deg, var(--night) 0, var(--night-deep) 1400px);			color: var(--ink);			font: 17px/1.6 system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, sans-serif;		}		img { image-rendering: pixelated; image-rendering: crisp-edges; max-width: 100%; height: auto; display: block; }		img.smooth { image-rendering: auto; }		a { color: var(--cyan); }		.wrap { max-width: 1080px; margin: 0 auto; padding: 0 16px; }		.pixel { font-family: ui-monospace, "Cascadia Mono", "DejaVu Sans Mono", Menlo, Consolas, monospace; letter-spacing: .08em; text-transform: uppercase; }		/* the ground of Green Hill: grass over a checkerboard */		.ground { height: 30px; border-top: 6px solid var(--grass); background: conic-gradient(var(--earth) 25%, var(--earth-dark) 0 50%, var(--earth) 0 75%, var(--earth-dark) 0) 0 0 / 24px 24px; }		header.hero { padding: 40px 0 48px; text-align: center; background: linear-gradient(180deg, #0088ee 0, var(--sky) 55%, #55ccff 100%); }		.hero h1 { font-size: clamp(38px, 8vw, 72px); line-height: 1.05; margin: 0; color: var(--yellow); text-shadow: 4px 4px 0 var(--blue), 8px 8px 0 #00226a; }		.hero .sub { margin: 16px auto 0; max-width: 700px; font-size: clamp(17px, 2.2vw, 20px); color: #fff; text-shadow: 0 2px 0 #0050a0; }		.actions { margin-top: 28px; display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 22px; }		.cta { display: inline-block; padding: 18px 34px; background: var(--yellow); color: #111; text-decoration: none; font-weight: 800; font-size: 22px; border: 4px solid #111; box-shadow: 6px 6px 0 var(--red); transition: transform .08s; }		.cta:hover, .cta:focus-visible { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 var(--red); }		.cta.alt { background: #fff; font-size: 17px; padding: 14px 22px; box-shadow: 6px 6px 0 var(--blue); align-self: center; }		.cta.alt:hover, .cta.alt:focus-visible { box-shadow: 8px 8px 0 var(--blue); }		.hero .note { margin-top: 18px; font-size: 14px; color: #ecf8ff; text-shadow: 0 1px 0 #0050a0; }		.hero .screen { margin: 36px auto 0; width: 100%; max-width: 840px; border: 6px solid #111; box-shadow: 0 0 0 4px #fff, 0 20px 50px rgba(0, 0, 40, .45); }		section { padding: 56px 0; }		section + section { border-top: 2px solid var(--line); }		h2 { font-size: clamp(22px, 3.4vw, 32px); margin: 0 0 18px; color: var(--yellow); }		h3 { margin: 0 0 6px; font-size: 18px; color: var(--cyan); }		p { margin: 0 0 14px; }		.lead { color: var(--muted); max-width: 760px; }		.grid { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }		figure { margin: 0; background: #000; border: 4px solid #000; box-shadow: 0 0 0 3px var(--line); }		figcaption { background: var(--panel); padding: 8px 12px; font-size: 14px; color: var(--muted); }		figcaption b { color: var(--ink); }		.cards { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }		.card { background: var(--panel); border: 3px solid var(--line); padding: 18px; }		kbd { display: inline-block; min-width: 1.8em; padding: 1px 7px; background: var(--ink); color: #111; border-radius: 3px; border-bottom: 3px solid #888; font: 600 14px/1.5 ui-monospace, monospace; text-align: center; }		.split { display: grid; gap: 32px; grid-template-columns: 1fr 1fr; align-items: center; }		@media (max-width: 760px) { .split { grid-template-columns: 1fr; } }		.full { background: linear-gradient(135deg, #10207e, #000a40); border: 3px solid var(--yellow); box-shadow: 8px 8px 0 var(--red); padding: 26px; }		.full ul { margin: 0 0 18px; padding-left: 20px; }		.full li { margin: 4px 0; }		details { background: var(--panel); border: 3px solid var(--line); padding: 14px 18px; margin-bottom: 12px; }		summary { cursor: pointer; font-weight: 700; }		details p { margin: 10px 0 0; color: var(--muted); }		footer { padding: 32px 0 48px; font-size: 14px; color: var(--muted); text-align: center; }		footer p { margin: 6px 0; }			nav.langs { background: var(--night-deep); border-bottom: 2px solid var(--line); padding: 8px 0; }		nav.langs ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 6px; }		nav.langs a { display: block; padding: 3px 9px; font-size: 14px; line-height: 1.5; color: var(--muted); text-decoration: none; border: 2px solid transparent; }		nav.langs a:hover, nav.langs a:focus-visible { color: var(--ink); border-color: var(--line); }		nav.langs a[aria-current="true"] { color: #111; background: var(--yellow); font-weight: 700; }	</style></head><body>	<nav class="langs" aria-label="言語">		<ul>			<li><a href="../" hreflang="fr" lang="fr">Français</a></li>			<li><a href="../en/" hreflang="en" lang="en">English</a></li>			<li><a href="../es/" hreflang="es" lang="es">Español</a></li>			<li><a href="../de/" hreflang="de" lang="de">Deutsch</a></li>			<li><a href="../it/" hreflang="it" lang="it">Italiano</a></li>			<li><a href="../pt/" hreflang="pt" lang="pt">Português</a></li>			<li><a href="../nl/" hreflang="nl" lang="nl">Nederlands</a></li>			<li><a href="../pl/" hreflang="pl" lang="pl">Polski</a></li>			<li><a href="../ru/" hreflang="ru" lang="ru">Русский</a></li>			<li><a href="../uk/" hreflang="uk" lang="uk">Українська</a></li>			<li><a href="../tr/" hreflang="tr" lang="tr">Türkçe</a></li>			<li><a href="../ja/" hreflang="ja" lang="ja" aria-current="true">日本語</a></li>			<li><a href="../zh/" hreflang="zh" lang="zh">中文</a></li>			<li><a href="../ko/" hreflang="ko" lang="ko">한국어</a></li>		</ul>	</nav>	<header class="hero">		<div class="wrap">			<h1 class="pixel">Sonic PHP</h1>			<p class="sub"><strong>マスターシステム</strong>版ソニック(1991年)をPHPで作り直し、ブラウザで無料プレイ。<strong>6つのゾーン、ボス、スペシャルステージ</strong>、そしてボットとのレースを収録。</p>			<div class="actions">				<a class="cta pixel" href="../play/?back=../ja/">▶ プレイ</a>				<a class="cta alt" href="https://sonic.mimichat.fr/" target="_blank" rel="noopener">完全版・オンライン対戦つき ↗</a>			</div>			<p class="note">パソコン、スマートフォン、ゲームパッド対応 · インストール不要 · 登録不要</p>			<img class="screen" src="../images/level-1.png" width="840" height="426"				alt="グリーンヒルのリングのそばでボールになったソニックと、行く手をふさぐカニ" />		</div>	</header>	<div class="ground"></div>	<main>		<section id="jeu">			<div class="wrap split">				<div>					<h2>8ビットのソニックを丸ごと</h2>					<p>走って、ジャンプして、リングを集め、ボーナスモニターを壊して、各アクトの最後の標識を目指そう。<strong>3アクトずつの6ゾーン</strong>、ゾーンごとのボス、リングとバネがいっぱいの<strong>スペシャルステージ</strong>、そしてエンディングまで楽しめます。</p>					<p><strong>ベストタイム</strong>と、最速レースの<strong>ゴースト</strong>を記録するので、次回はそれを超えましょう。オプションにはブラウン管風の画面フィルター、PALとNTSCの速度切り替え、フランス語と英語の切り替え、BGMのジュークボックスがあります。</p>				</div>				<figure>					<img src="../images/map.png" width="840" height="426" loading="lazy" class="smooth"						alt="グリーンヒルの前の島のマップとソニックの残機" />					<figcaption><b>島のマップ</b>。ゾーンとゾーンの間に表示されます。</figcaption>				</figure>			</div>		</section>		<section id="zones">			<div class="wrap">				<h2>6つのゾーン</h2>				<p class="lead">ゾーンごとに背景もワナもボスも違います。ブラウザで動いているままのゲーム画面です。</p>				<div class="grid">					<figure><img src="../images/level-1.png" width="840" height="426" loading="lazy" alt="Green Hill:市松模様の丘、ヤシの木とリング" /><figcaption><b>Green Hill</b> · アクト 1</figcaption></figure>					<figure><img src="../images/level-4.png" width="840" height="426" loading="lazy" alt="Bridge:断崖と、水の上に架かる丸太の橋" /><figcaption><b>Bridge</b> · アクト 1</figcaption></figure>					<figure><img src="../images/level-7.png" width="840" height="426" loading="lazy" alt="Jungle:森の真ん中の滝とプラットフォーム" /><figcaption><b>Jungle</b> · アクト 1</figcaption></figure>					<figure><img src="../images/level-10.png" width="840" height="426" loading="lazy" alt="Labyrinth:水中の彫刻された緑のブロック" /><figcaption><b>Labyrinth</b> · アクト 1</figcaption></figure>					<figure><img src="../images/level-13.png" width="840" height="426" loading="lazy" alt="Scrap Brain:夕焼けの街を背にした工場" /><figcaption><b>Scrap Brain</b> · アクト 1</figcaption></figure>					<figure><img src="../images/level-16.png" width="840" height="426" loading="lazy" alt="Sky Base:夜空に浮かぶ青い鉄骨" /><figcaption><b>Sky Base</b> · アクト 1</figcaption></figure>					<figure><img src="../images/boss.png" width="609" height="309" loading="lazy" alt="Green Hillの最後で、ソニックの上空を飛ぶ空飛ぶ機械に乗ったドクター" /><figcaption><b>最初のボス</b> · Green Hill、アクト3</figcaption></figure>					<figure><img src="../images/special.png" width="840" height="426" loading="lazy" alt="スペシャルステージ:星、リング、バネ" /><figcaption><b>スペシャルステージ</b> · リングとバネ</figcaption></figure>				</div>			</div>		</section>		<section id="versus">			<div class="wrap split">				<figure>					<img src="../images/versus.png" width="840" height="426" loading="lazy" class="smooth"						alt="グリーンヒルでの4人レース。右上に順位表示" />					<figcaption>ボット3体との<b>4人レース</b>。</figcaption>				</figure>				<div>					<h2>ボットと対戦</h2>					<p><b>MULTIPLAYER</b>では、ゲームのゾーンでコンピューター操作の1〜4人(フラッグは最大5人)と、4つのルールで対戦できます。</p>					<p><b>レース</b>:最初に標識に着いた人の勝ち。<b>フラッグ</b>:一番長く持ち続ける。<b>リング</b>:一番多く集める。<b>デスマッチ</b>:最後まで生き残る。</p>					<p>本物のプレイヤーと対戦したいですか?それは<a href="#complete">完全版</a>で。</p>				</div>			</div>		</section>		<section id="complete">			<div class="wrap">				<div class="full">					<h2>完全版:sonic.mimichat.fr</h2>					<p>このゲームは<strong>Sonic PHP</strong>から生まれました。オリジナルの完全版は<a href="https://sonic.mimichat.fr/" target="_blank" rel="noopener">sonic.mimichat.fr</a>で遊べます。ここにあるものはすべて入っていて、さらに次の機能があります。</p>					<ul>						<li><strong>最大6人のオンライン対戦</strong>:レース、フラッグ、リング、デスマッチ</li>						<li>公開ルーム、または4文字のコードで入る非公開ルーム。空いた席はボットが埋めます</li>						<li>ルーム内とゲーム中のチャット</li>						<li>全試合の<strong>リプレイ</strong></li>						<li>ブラウザと同じルームに入れるデスクトップ版(ネイティブPHP)</li>					</ul>					<a class="cta pixel" href="https://sonic.mimichat.fr/" target="_blank" rel="noopener">オンラインでプレイ ↗</a>				</div>			</div>		</section>		<section id="commandes">			<div class="wrap">				<h2>操作方法</h2>				<div class="cards">					<div class="card">						<h3>キーボード</h3>						<p><kbd>←</kbd> <kbd>→</kbd> 走る<br />							<kbd>↑</kbd> 上を見る、<kbd>↓</kbd> ボールになる<br />							<kbd>スペース</kbd> ジャンプ<br />							<kbd>Enter</kbd> メニューとポーズ<br />							<kbd>Esc</kbd> タイトルへ戻る</p>					</div>					<div class="card">						<h3>ゲームパッド</h3>						<p>十字キーまたはスティックで走り、<b>A</b>・<b>B</b>・<b>X</b>・<b>Y</b>でジャンプ、<b>Start</b>でメニューとポーズ、<b>Select</b>でタイトルに戻ります。</p>					</div>					<div class="card">						<h3>スマートフォン</h3>						<p>左側の十字キーで走り、右側の<b>JUMP</b>でジャンプ、<b>ROLL</b>でボール、<b>START</b>でポーズ、<b>MENU</b>でタイトルへ。スマートフォンは横向きに持ってください。</p>					</div>				</div>				<p style="margin-top: 28px; text-align: center"><a class="cta pixel" href="../play/?back=../ja/">▶ 今すぐプレイ</a></p>			</div>		</section>		<section id="fabrication">			<div class="wrap split">				<div>					<h2>制作について</h2>					<p><strong>Sonic PHP</strong>は、物理演算、オブジェクト、敵、ボス、カメラ、ボットまで、すべてPHPで書かれています。ステージとグラフィック、そのカラーサイクルはオリジナルのカートリッジから解析し、音楽はゲームのZ80サウンドプログラムをエミュレーターで動かして取り出しました。</p>					<p>このバージョンは<a href="https://github.com/davidnurdin/jumPhp" target="_blank" rel="noopener">JumPHP</a>エンジンに移植されています。同じコードがパソコンのウィンドウでも、PHPを<strong>WebAssembly</strong>にコンパイルしたブラウザでも動きます。ゲームのロジックはオリジナルのままで、表示、音、操作、セーブだけがJumPHPを通ります。</p>					<p>コード:<a href="https://github.com/davidnurdin/sonic-jumphp" target="_blank" rel="noopener">sonic-jumphp</a>(このバージョン)と<a href="https://github.com/davidnurdin/sonicGamePhp" target="_blank" rel="noopener">sonicGamePhp</a>(完全版)。</p>				</div>				<figure>					<img src="../images/title.png" width="840" height="426" loading="lazy" class="smooth"						alt="ロゴと、START・MULTIPLAYER・OPTIONS・BEST TIMESのメニューが並ぶタイトル画面" />					<figcaption><b>タイトル画面</b>とそのメニュー。</figcaption>				</figure>			</div>		</section>		<section id="questions">			<div class="wrap">				<h2>よくある質問</h2>				<details>					<summary>何かインストールする必要はありますか?</summary>					<p>いいえ。ゲームはパソコンでもスマートフォンでもブラウザ上で動きます。初回の読み込みで約25MB(WebAssembly版PHP、ステージ、グラフィック、音楽)をダウンロードし、その後はすべてキャッシュされます。</p>				</details>				<details>					<summary>完全版とは何が違いますか?</summary>					<p><a href="https://sonic.mimichat.fr/" target="_blank" rel="noopener">完全版</a>には、最大6人のオンライン対戦、ルーム、チャット、リプレイがあります。こちらは同じゲームをJumPHPに移植したもので、一人またはボット相手に遊べます。</p>				</details>				<details>					<summary>タイムは保存されますか?</summary>					<p>はい。ベストタイム、ゴースト、オプションはお使いのブラウザに保存されます。</p>				</details>				<details>					<summary>ブラウザ以外でも遊べますか?</summary>					<p>はい。JumPHPとDockerを使えば、<code>bin/jumphp run sonic</code>で音つきのウィンドウでゲームが開きます。<a href="https://github.com/davidnurdin/sonic-jumphp" target="_blank" rel="noopener">GitHubリポジトリ</a>を参照してください。</p>				</details>			</div>		</section>	</main>	<div class="ground"></div>	<footer>		<div class="wrap">			<p>広告なし・無料のファンメイド作品。<a href="https://github.com/davidnurdin/jumPhp" target="_blank" rel="noopener">JumPHP</a>で制作。</p>			<p>Sonic the Hedgehog © SEGA 1991。マスターシステム版はAncientが開発。このプロジェクトはSEGAおよびAncientとは無関係です。キャラクター、グラフィック、ステージ、音楽の権利はそれぞれの制作者に帰属します。</p>		</div>	</footer></body></html>