Demiurge se met à la mitose x)

Dans ce blog, j’ai créé une nouvelle catégorie pour publier l’actualité de Demiurge et si vous regardez la catégorie vous constaterez qu’il y a en fait 3 catégories. Demiurge, le jeu en projet depuis fin 2011, donc qui va sur ses 6 ans, n’a pas beaucoup avancé après que j’ai du faire le constat que ma première tentative était vite devenu une usine à gaz ingérable. Aujourd’hui, je souhaitais continuer à développer le moteur du jeu, et notamment le moteur graphique 3D, mais la motivation reste trop fragile et finalement, je dois me résoudre à changer encore la manière de voir ce projet. Le soucis principal est que la conception d’un moteur 3D est plus compliqué qu’un moteur en 2D en vue de dessus. Le niveau de difficulté augmente lorsque vous passez de la 2D en vue de dessus ou de côté, à la vue isométrique toujours 2D. Un moteur 2,5D si il est isométrique reste plus facile que la 3D sans FPS. Un moteur 2,5D simulant du FPS comme Doom ou DukeNukem3D est un peu plus technique, mais lorsqu’on sait comment faire, ça ne devrait pas non plus être trop ardu à réaliser. Le plus difficile des moteurs que j’ai eu à faire ou observer est le moteur 3D pour le FPS affichant des boxels partout. Un moteur comme Minecraft n’est pas du tout facile à faire, et demande d’avoir exploré et maitrisé différents concepts du monde de la 2D et de la 3D classique avant de s’y lancer à corps perdu. Pourtant, je me suis lancée sur Demiurge en 3D à la fin de l’année à laquelle j’ai découvert et exploré Minecraft et quelques mods, sans même avoir seulement fini un seul prototype de jeux 2D de type plateformer ou de jeux en 2,5D isométriques plus proche du style avec des terrains nivelables. C’est une grossière erreur de débutante un peu orgueilleuse, il faut le dire, que je déconseille à mon tour de reproduire. Si vous êtes débutant.e.x, ne brûlez pas les étapes, même si vous êtes surdoué.e.x. Vous perdrez du temps, de l’énergie, du plaisir et si vous n’avez pas l’entêtement que j’ai, sûrement aussi la passion et toute motivation.

Bon parlons donc de cette mitose de Demiurge. Et bien, The Fantastic Labyrinth a été le projet qui a tout changé, et c’était un peu le but aussi :p D’autres choses comme le défi Tetris que j’ai codé en 20 heures pendant 5 jours, et aussi la découverte de Minicraft, un jeu réalisé par Notch, fin 2011, en 48 heures, à l’occasion d’un concours, m’ont démontrés que diviser un projet trop complexe et demandant plus d’expérience apportait plus d’avantages que se borner à faire un gros projet d’un seul coup. Surtout quand on est seule sur un truc qui serait plus viable en équipe. Demiurge va donc se divisé en 3 grandes versions :

  • Demiurge Mini : Il va s’agir d’un jeu 2D en vue de dessus qui s’inspire de jeux Nintendo et qui présente l’univers de Demiurge et exploite un certain nombre de constituants du gameplay de Demiurge. Le monde sera en 2D sans profondeur, c’est à dire tout sur le même plan. On pourra miner, crafter, cultiver, etc… Mais, il n’y aura pas d’accès à des niveaux inférieurs comme on peut le voir dans Minicraft. Le développement peut donc se concentrer sur l’essentiel pour jouer et donner corps à l’univers de Demiurge en restant sur des algorithmes assez basiques.
  • Demiurge 2D : Version intermédiaire de Demiurge qui sera énormément inspiré de Dwarf Fortress. Ce n’est pas vraiment le principe des colonies de nains qui m’intéressent dans cette inspiration, mais plus tôt l’introduction de la profondeur, et donc du monde en 3D et d’un affichage qui pourra soit être sous forme ASCII, sous forme 2D en vue de dessus, soit en 2,5D isométrique (vue dimétrique). C’est en raison des différentes manières d’afficher que ce jeu est intermédiaire, car le passage en 3D est une autre manière d’afficher, donc une évolution logique 🙂 Plus de mécaniques du gameplay seront présents, ce qui permet d’approcher du projet final avec une approche encore assez facile à mettre en œuvre pour moi.
  • Demiurge 3D : Il s’agit de la version finale qui contiendra tout le gameplay et l’univers de Demiurge. Le jeu sera bien plus riche que ce que les premières démos laissent à imaginer. A part la 3D, ça n’aura presque plus rien à voir avec le classique clone de Minecraft qu’à été le projet au départ. Bien sûr, il sera toujours question de miner, cultiver, etc… de construire surtout, détruire aussi, faire de la magie, etc… Mais, ce n’est pas tout, et vous en saurez plus déjà avec la version Mini 😉

Voilà un projet qui va vraiment pouvoir sortir de ses difficultés et qui, je l’espère, profitera de ses premières heures de gloire dés la version Mini. En tout cas, je me sens bien plus à l’aise avec ça, surtout depuis le défi Tetris. Faites-moi un petit retour sur ce que tout ça vous inspire, dans les commentaires 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

recaptcha/recaptchalib.php at 1.0.0 · google/recaptcha · GitHub
Skip to content
Permalink
Switch branches/tags
Find file
8a45f9d Dec 1, 2014
141 lines (129 sloc) 4.47 KB
<?php
/**
* This is a PHP library that handles calling reCAPTCHA.
* - Documentation and latest version
* https://developers.google.com/recaptcha/docs/php
* - Get a reCAPTCHA API Key
* https://www.google.com/recaptcha/admin/create
* - Discussion group
* http://groups.google.com/group/recaptcha
*
* @copyright Copyright (c) 2014, Google Inc.
* @link http://www.google.com/recaptcha
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* A ReCaptchaResponse is returned from checkAnswer().
*/
class ReCaptchaResponse
{
public $success;
public $errorCodes;
}
class ReCaptcha
{
private static $_signupUrl = "https://www.google.com/recaptcha/admin";
private static $_siteVerifyUrl =
"https://www.google.com/recaptcha/api/siteverify?";
private $_secret;
private static $_version = "php_1.0";
/**
* Constructor.
*
* @param string $secret shared secret between site and ReCAPTCHA server.
*/
function ReCaptcha($secret)
{
if ($secret == null || $secret == "") {
die("To use reCAPTCHA you must get an API key from <a href='"
. self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
}
$this->_secret=$secret;
}
/**
* Encodes the given data into a query string format.
*
* @param array $data array of string elements to be encoded.
*
* @return string - encoded request.
*/
private function _encodeQS($data)
{
$req = "";
foreach ($data as $key => $value) {
$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
// Cut the last '&'
$req=substr($req, 0, strlen($req)-1);
return $req;
}
/**
* Submits an HTTP GET to a reCAPTCHA server.
*
* @param string $path url path to recaptcha server.
* @param array $data array of parameters to be sent.
*
* @return array response
*/
private function _submitHTTPGet($path, $data)
{
$req = $this->_encodeQS($data);
$response = file_get_contents($path . $req);
return $response;
}
/**
* Calls the reCAPTCHA siteverify API to verify whether the user passes
* CAPTCHA test.
*
* @param string $remoteIp IP address of end user.
* @param string $response response string from recaptcha verification.
*
* @return ReCaptchaResponse
*/
public function verifyResponse($remoteIp, $response)
{
// Discard empty solution submissions
if ($response == null || strlen($response) == 0) {
$recaptchaResponse = new ReCaptchaResponse();
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = 'missing-input';
return $recaptchaResponse;
}
$getResponse = $this->_submitHttpGet(
self::$_siteVerifyUrl,
array (
'secret' => $this->_secret,
'remoteip' => $remoteIp,
'v' => self::$_version,
'response' => $response
)
);
$answers = json_decode($getResponse, true);
$recaptchaResponse = new ReCaptchaResponse();
if (trim($answers ['success']) == true) {
$recaptchaResponse->success = true;
} else {
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = $answers [error-codes];
}
return $recaptchaResponse;
}
}
?>
You can't perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Fatal error: Class 'ReCaptcha' not found in /homepages/39/d436294224/htdocs/clickandbuilds/TheeDonistMonk/index.php on line 29