Giter Site home page Giter Site logo

2dgd-f0th / 2dgd_f0th Goto Github PK

View Code? Open in Web Editor NEW
204.0 9.0 16.0 36.64 MB

[CC BY-NC-SA] A compendium of the community knowledge on game design and development

Home Page: https://therealpenaz91.itch.io/2dgd-f0th/

License: Other

Makefile 0.79% TeX 3.80% Python 23.03% Lua 24.52% CSS 0.68% HTML 0.49% Shell 0.52% C++ 24.10% JavaScript 22.08%
gamedev development algorithms ebook game-development knowledge teaching programming-languages game-programming games

2dgd_f0th's People

Contributors

luosrestil avatar penaz91 avatar rei2229 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

2dgd_f0th's Issues

Checkmark filter

The later sections contain a lot of the LaTeX \checkmark command, which should be replaced with something more friendly to a future epub release, like a simple Lua filter.

JavaScript Listings

It could be an idea to translate the code listings into ES6-compliant javascript, since it has support for classes.

This would broaden the demographic and help more people learn.

Adaptive music

Insert some topics on how to implement and write Adaptive music

Listing_status script rewrite

It would be nice to be able to rewrite the listing_status script with two things in mind:

  • It should make a tree of the missing listings instead of listing only the filenames
  • It should be compatible with "language variants/libraries"

Discontinue GitLab/GitHub releases

Since the amount of minutes available in GitLab has been greatly reduced and the fact that GitHub releases keep breaking, I think I'll just discontinue them.

Need to remove everything from the releases and artifacts, as well as changing the README file to direct people to the Itch page.

Additional DRM issues

Bring example of Disney making SecuROM DRM license expire, thus making Tron: evolution impossible to play or activate.

Consequences are obviously unsatisfied customers and people resorting to piracy

Epub (and PDF) friendly appendices (broken TOC in PDFs)

It seems that the glossary contains some commands to avoid numbering sections that mess up the Table of contents, making it less accessible.

It would be a good idea to remove them and replace them with something better, also for the benefit of avoiding raw LaTeX in the documents.

Balanced Unlockable rewards (roguelikes)

When gating a reward behind a challenge (in roguelikes) or any kind of unlockable, the unlockables should be

  • 1 positive for the player
  • A neutral with possible advantages in some situations
  • 1 positive and 1 negative for the player

If we put only a negative unlockable, the player (even more in the age of wikis) will avoid unlocking it. A possible solution is putting the "negative" inside a bigger requirement for a positive thing (for instance beating a boss may yeld a negative item, but beating all available boss monsters may unlock a powerful positive item)

Colors in 026

As of now free, paid, and donation products symbols are created via latex commands, this should be converted to a filter

Epub-Friendly Front Matter

As of now, the front matter is part of the LaTeX template, it's better to prepare some space for the front matter inside the template but keep it as a markdown document, this should also help with the template cleanup and the Epub version.

Pandoc 2.14 breaks build

Pandoc 2.14 makes it so that svg images are not found anymore and the build breaks down badly.

Switch to a more book-like structure

It could be an idea to separate the book structure further, into sections. Possible names:

  • Basics (math and computer science)
  • Project Management
  • Game Mechanics (collision detection, etc...)
  • Game Design
  • Creating Resources
  • Containers, Algorithms and advanced CS (procedural, AI, etc...)
  • Marketing

Errors in C++ Listings

It seems that there are errors in the C++ Listings, mostly when declaring arrays.

It has been too long since I properly coded in C++.

Bounce and easing for UIs

Explain how to make a "bounce" transition, where at around 80% of the time passed, the property is at around 120% of the value, the rest of the time is used to get back to 100%.

This may give a better feeling in some UIs and may be an interesting effect to teach

Reorganize "Collision detection" section

As it stands now, the "Collision detection" section is content-rich but really messy. It should probably get sorted like follows:

  • Multi-pass Collision Detection -> Why collision detection is usually done in multiple passes
  • Finding out who hit what -> Broad-pass collision detection
  • Collision Detection: Did it really collide? -> Narrow-pass collision detection
  • Separating Axis theorem
  • Common Issues with collision detection
  • Ray Casting

More images to convert to Vector

Some images could benefit from vector conversion, those are usually images that represent diagrams.

Follows a list of those I think can be redone as vector:

  • AI/dijkstra_path.png
  • AI/euclidean_distance.png
  • AI/greedy_best_first_path.png
  • AI/manhattan_distance.png (remove second example too)
  • AI/pathfinding_heuristics.png
  • AI/pathfinding_reference.png
  • AI/wandering_1.png
  • AI/wandering_2.png
  • AI/wandering_broken.png
  • algorithms/bintree_1...6.png
  • algorithms/diamond_square_1...5.png
  • algorithms/eller_1...7.png
  • algorithms/kruskal_1...6.png
  • algorithms/RDFS_1...4.png
  • algorithms/recursive_division_1...6.png
  • developing_mechanics/coyote_time.png
  • developing_mechanics/enhanced_gravity_jump_plot.png
  • developing_mechanics/jump_buffering.png
  • developing_mechanics/physics_accurate_jump_plot.png
  • developing_mechanics/timed_jumps.png
  • game_design/secret_in_secret.png
  • project_ideas/tic_tac_toe.png
  • project_ideas/breakout_bias.png

More on cheating

In some games it is important to record inputs or at least a "lightweight video" (like the position of the player) so that cheated runs are easier to detect.

Use trackmania as an example.

Epub-friendly "placeholder" command

This should be easy, done via Lua Filters, shows a simple string.

Instead of a LaTex \placeholder command, we can make something akin to the {{hello_world}} command inside a lua filter.

This should reduce the amount of raw LaTeX in the book.

C# Listings

A widely used language in game development is C#, which is used in Unity.

I know a tiny bit of C#, but not nearly enough to be sure that what I write is semantically (as well as syntactically) correct.

Bookish suggestions

Here are some suggestions of how to make the book more usable for groups/platforms that can distribute your book widely. (I'm thinking of the Open Educational Resource/Textbook folks.)

  1. In order for the CC License to work, you need one or more copyright owners (It's a copyright license). Thus you need a copyright statement and date in the front matter. For usability, it's best to enumerate the copyright owners; even if you have many contributors. The CC license is irrevocable; having multiple owners makes it difficult to enforce the license.

  2. Put a link to your repo in the front matter.

  3. Give yourself attribution in the front matter! Either editor or author is fine - if you can have a dedication, you should have an attribution. In fact, your CC license requires attribution, so make it easy!

  4. Consider building 3 editions for your three language versions. Expecting readers to build it themselves is a high barrier. Your build ~~~may~~~will have dependencies that break the build in the future.

  5. Give each edition their own edition subtitles.

  6. Include edition and version info in the front matter.

The dynamic_listings filters broke

It doesn't import code correctly, no highlighting for pseudocode edition (for sure, idk about the others), too much spacing, definitely different from inline code.

Scene Trees

Practically all engines make use of "scenes" and "scene trees".

Maybe an introduction to them in a generic way (I don't know about "programming them"), could be useful.

Uniform Pseudocode

For now, the pseudocode is really all over the place, it has no consistency: it goes from C-like to Python-like to something that is neither.

It absolutely needs to be made more consistent.

Language Addons

It could be a nice idea to insert "addons" so people can learn algorithms in their favourite framework.

  • The python edition would get its source code from the dynamic_listings/python/default folder
  • Python edition with the "pygame" addon would read from the dynamic_listings/python/pygame folder

This obviously limits the number of addons for each edition, but I think it's more than enough.

Remove "minipage"s

There is surely one part where i used minipages to split the page in two to show examples side-by-side.

This doesn't work with epubs, neither in code nor in concept. Let's just make them one-after-the-other.

Improve Math

For now, the book uses some custom packages to import some symbols (like the degree symbol), but this isn't compatible with MathML (it fails to translate \degree).

It seems that not many ereaders support EPub3 (which uses MathML), but I don't really want to use --webtex, which makes the release times 10x longer.

A local service would be nice.

Improve collision reaction section

Collision reaction is chaotic, messy and badly explained, it should be restructured.

Put more emphasis on shallow-axis reaction, followed by other, more specific stuff.

Java Listings

In a far off future, Java could be included in the languages we can make an edition of.

Maybe.

EPub friendly "Boxes"

There is already a filter to convert "fenced divs" into colored boxes for "pitfalls", "tips" and "trivia".

Need to check if they work on EPub (yhey may have no styling) and eventually adapt the Lua filter to support the Epub Format

New Cover + Back cover

It would be nice having a better designed and more captivating cover, as well as a back cover.

Wrapping screen

For puzzle platformers it seems that it's a liked idea to make wrapping screens (exit right, re-enter left). Talk about how to implement that.

Folder Reorganization

At the moment all chapters are slapped into a single folder, which leads to some chapters being really long, like:

  • Computer Science Fundamentals: > 1400 lines
  • Collision Detection: > 1000 Rows
  • Resources: > 1000 Rows

This can make it harder to work on single topics. Maybe switch to a nested folder structure, like part/section/subsection.md along with the changes that may happen in #43 .

Ruby Listings

It could be a good idea to create Ruby listings to support some interesting Ruby-based toolkits.

EPub friendly epigraphs

Each chapter has a quote using latex's \epigraph command.

We need an epub friendly way to make this hapoen, maybe via filters

Lua listings

One of the new languages I want to add in this book, is Lua (which is widely used in the field, due to modding and the Love engine).

This may prove to be hard due to lack of native classes and my scarce knowledge of the language.

"Universal" dynamic code blocks

For now, I am using a custom LaTeX \code{}{} block that imports automatically a code block for the selected language (in the metadata.yml).

This won't work well for an Epub release, maybe using a haskell/Lua filter?

Renewing Boxes

I was thinking about renewing a bit the boxes:

  • The tip box is ok as it is (i like the pun)
  • I'm not too convinced on the pitfall box, twitter poll going on, at most I'll use the old graphics just renewed
  • Not convinced on the trivia box, maybe change it to "Random fact" and use a rand() image as icon
  • I'm starting to feel the need of a more generic "note box", paper yellow, with a sticky note with a musical note and an exclamation mark as icon (I like puns).

Find a place where to talk about "new game+"

  • Starting a new game with all "currency"
  • Start a new game with all weapons
  • Unlock new stuff for the second playthrough (Okami/RE4)
  • Unlock overpowered stuff for the second playthrough (Okami/RE4)
  • ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.