Status of the project @ 2021-10-26: Missing the deadline


Hello everyone.

Things have not been going as I expected, such is life, so here I am to give you all an update on the project and inform you all that I won't make the (self-imposed) deadline of the end of October.

Let's see what's happening.

Pseudocode listings uniforming

As stated in the Previous update I decided to uniform the style of pseudocode towards a more C-like style.

Sadly this has made the pseudocode less readable in my eyes, so I'm looking around for a more suitable solution without having to rewrite everything. I'm thinking of taking inspiration from Python's Type hints for functions and its decorator syntax to mark static methods wherever needed.

Collision Reaction section restructuring

This is going slow, I'm having trouble coming up with the energy necessary to undertake such a big task and make something that is easy to understand and complete at the same time. I found some errors in this section too, which will need to be fixed, thus taking even more time.

Examples are missing and the section is quite big already, so the amount of work is quite a lot. But I'll get through it one step at a time.

General Burnout

Life is not being kind to me at the moment, so many worries and thoughts are taking space in my head and there is not much space left for any non-work-related project.

I am now aiming to release version 0.7.2 for the end of the year, although I'm kind of thinking of changing the versioning system to something that makes more sense of the "continuously growing project" nature of this ebook. Maybe something along the lines of "<year>.<month>" (for example "2021.10" or "21.10"): I feel like a "version 1.0" would mark the completion of this project, which just doesn't exist.

That's all, thank you all for reading.

Take care,

Penaz.

Get 2D Game Development: From Zero To Hero

Comments

Log in with itch.io to leave a comment.

In my humble opinion Mr. Penaz, you've already done a swell job.
I can personally  recommend you take a much needed break.
Burnout is not something to be ignored.

There is an issue that has been pestering me.

Despite my personal recommendations of your book, most of the gamedevs who use these engines respond apathetically:

"C++ is too advanced, Python is unoptimized and is not meant for games and finally pseudo-code has a notorious reputation as not being a real language."

That's the general opinion of most of the 2D gamedevs who I have encountered nowadays who make use of just two game engines: Gamemaker and RPG Maker.

Though I'm not recommending you write a version using GML,
I do insist that you ought to consider writing another version of your
awesome book in the standard languages of Ruby and JavaScript.

Sure JavaScript is not that OOP oriented as Ruby is, (I'd prefer Ruby) but these couple of languages would make a much bigger impact than the current versions.

Just don't inflict self harm on yourself Mr. Penaz.

Cheers!
P.S. Not many use Ren'Py or Godot where I'm from.

* Opinion from India *

(1 edit)

First of all: thank you very much for your kind words and thank you for taking the time for writing them. And most of all: thank you for recommending the book!

The issue that you brought to my attention is absolutely valid:

  • C++ is complex and requires a lot of "manual operations", including memory management, 95 (!!) reserved keywords to remember and pointers. It's obviously the "most powerful" solution, but also has the "highest maintenance cost".
  • Python is a strange beast, it's easy to write code with it, but it's hard to write "high performance code", sometimes it can be next to impossible (Global Interpreter Lock, for instance, can be seen as an obstacle to CPU-bound multi-threading). My reason for making an edition in this language is two-fold: I'm mainly a Python Dev, so it's good exercise, and I see python as a good entry-level general-purpose programming language.
  • Pseudocode is not a real language, but it's a helpful tool if someone wants to understand just the concept of an algorithm, without being tied to a real-world programming language.

I've been thinking about making an ECMAScript6-compliant JavaScript edition, since it has better support for Object-Oriented paradigms, but never made a "To-do" kind of note. If all goes well, I wouldn't exclude taking some time to make a JavaScript edition in the near future.

Sadly my experience with the Ruby language doesn't go further than configuring Vagrant virtual boxes, but at the same time Ruby is one of those programming languages that fascinates me, so I don't exclude a Ruby release in a distant future.

I want to mainly focus on free/open source solutions, so if you happen to know some frameworks, game engines or libraries that use Ruby or JavaScript that are well-known, please let me know, I will check on them and eventually add them (also let me know if you want to be credited for that!)

Again, thank you for your kind words and suggestions.

Take care!

Penaz.

(1 edit)

I’m glad to hear your response Mr. Penaz.

Well first the bad news.

I haven't personally used any open source Javascript frameworks aimed specifically for game development but there are sure many of them which you can take a look at here: https://gamefromscratch.com/javascript-game-engines/

However the best JavaScript game engine that I know of is the MV engine by RPG Maker.

Unfortunately, regarding the JavaScript documentation, like any run-of the-mill JavaScript API, it is badly documented for RPG Maker. There is an incomplete documentation of the JavaScript code used in RPG Maker MV engine at this link:

https://forums.rpgmakerweb.com/index.php?threads/jump-into-javascript-a-breakdown-and-explanation-of-the-default-js-files-in-mv.74928/

Despite being released since 2015, there isn’t any official documentation of the JavaScript code released by Degica, the proprietary company of the MV engine. (at least in my knowledge).

GameDevs tend to just wing it when using the MV Engine. It’s JavaScript afterall.

That’s why there are huge third-party repositories in existence detailing third-party plugins.

Here is the largest plugin library regarding the MV engine in Javascript:

http://yanfly.moe/category/yanfly-engine-plugins/

This library itself links to scores of other plugin libraries. Most of us have had our hands full with them yet the inherent lack of order that is inherent to the JavaScript community technically condemns most RPG Maker MV games to be of shoddy quality (as you may know the reputation that RPG Maker games have on platforms such as this very website or on Steam etc.)

This is why I am humbly requesting a JavaScript version of your awesome book;

to bring order to the chaos.

The most decent introduction to this JavaScript engine I could find is this:

https://www.gamedeveloper.com/programming/rpg-maker-mv-scripting-first-impressio...

Also, don't forget the awesomeness that is SRPG Studio: https://store.steampowered.com/app/857320/SRPG_Studio/

It's codebase is also entirely written in Javascript.

================================================================

On the brighter side, 

Regarding open source Ruby game development, look no further than the Gosu Library: https://www.libgosu.org/cgi-bin/mwf/board_show.pl?bid=2

In addition, unlike the JavaScript MV engine, the more matured RPG MAKER VX Ace engine has full official AND third-party documentation of its Ruby code.

INTRO: https://www.gamedeveloper.com/programming/rpg-maker-vx-ace-ruby-scripting-crash-course

Here is the OFFICIAL documentation for the Ruby code used in VX Ace:

https://dlscrib.com/download/rpg-maker-vx-ace-help-rgss3-reference-manual_5830548e6454a7646bf32c9a_pdf

This is the basic manual that all budding Scripters begin with. We RPG Maker gamedevs use it as a reference.  

There is no better official introduction to the Ruby Game Scripting System 3 (RGSS3 for short) that is used in the RPG Maker VXAce engine based off Ruby version 1.9.

RPG Maker XP might be the more famous engine, but it uses the older Ruby version 1.8 which isn’t my cup of tea. This is also well documented: http://www.rpg-maker.fr/dl/monos/aide/xp/index.html?page=source%2Frgss%2Findex.h..


Next, a deep dive into the code; the complete full fledged in-depth third-party documentation of RGSS3 :

https://forums.rpgmakerweb.com/index.php?threads/slip-into-ruby-an-introductory-guide-to-rgss-for-beginners.38900/

It took an eternity to fully compile the RGSS3 documentation. It even has been listed on Ruby Gems:

https://rubygems.org/gems/rpg-maker-rgss3/versions/1.02.0

In fact, there is an entire wiki dedicated to the VX Ace engine, https://rmvxace.fandom.com/wiki/RPG_Maker_VX_Ace_Wiki

Plus there is a Japanese language wiki about RGSS3

https://rgss3.wiki.fc2.com/

(No fret, Ruby code is one of the most English dependant languages out there. You’ll be able to read the code even if the website is in Japanese!)

FINAL THOUGHTS

When it comes to OOP game development using interpreted languages, starting with the JavaScript MV engine might seem logical, but you’ll get bogged down like the rest of us in the chaos that is its code base.

The good news is that JavaScript MV engine’s chaotic codebase is mostly a translation of the older Ruby codebase found in RGSS3. 

The RGSS3 codebase has been fully documented, and once known, one can easily transfer all of its concepts over to the JavaScript codebase in my opinion.

Hence it is easier and more effective to start with a Ruby background, instead of spending an eternity trying to bring some order to the JavaScript camp from the get go in my opinion.  Besides, your book could be a huge boost to the Gosu community.

Heaven knows that they need all the help that they can get. 

(P.S. the Gosu games aren't all that good IMHO).

In any case, these engines serve as a proving ground for newbies (like myself) before they move onto more in depth books as yours in order to make some truely professional games from scratch.

Migrating from either Ruby or Javascript into Python, let alone C++ is setting the bar a bit too high.

I do urge you to not overextend yourself in trying to fix the pseudocode version of your book. I don’t think many people like pseudocode anyway.

Instead focus on the only two standard programming languages that are used as the fundamental code base for official and non-proprietary 2D game development engines; Ruby and Javascript; as new versions of your book for those who want to strike it out on their own. 

Let me know if you need more info.

Thank you kindly for your reply and all the material!

I personally don't want to tie myself to any engine just yet, but I am thinking about making a system that would allow me to swap out code listings with more flexibility, so I could offer working code that can be written down and (mostly) work.

I have to let all this information settle down in my mind before tackling some of the sources you mentioned.

In case you have more suggestions or requests, feel free to open a topic in the "community section": https://therealpenaz91.itch.io/2dgd-f0th/community

Thank you very much.