Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: YAPG - Yet Another Platformer Game  (Read 6020 times)

0 Members and 1 Guest are viewing this topic.

victorlevasseur

  • Full Member
  • ***
  • Posts: 206
    • View Profile
YAPG - Yet Another Platformer Game
« on: February 11, 2016, 12:23:35 pm »
Hi all,

I would like to introduce to you a project I'm been working on for one month: YAPG, Yet Another Platformer Game (temporary name)

Introduction



It's a platformer game that aims to be the most moddable possible: it will be possible to create your own objects/blocks and levels easily. A level editor will be included to allow an easier level creation. On the contrary, the objects/blocks will have to be written by hand.

The game is coded in C++ et uses SFML to manage the window and the display, Entityx (ECS engine), Boost.FileSystem and Sol (a C++ lua binding).

The game is free and under the GPLv2 license and is available on my Github: https://github.com/victorlevasseur/YAPG.

An early alpha version is available here for Windows only: https://github.com/victorlevasseur/YAPG/releases/.
Otherwise, you can build it yourself using the instructions here: https://github.com/victorlevasseur/YAPG/wiki/Build-YAPG

For now, the game loads the level named level.lua and only has some objects coded in lua.

Technical side
To allow the user to create custom objects/blocks, the objects are declared using lua scripts. For instance, the "player" object is described by this file :

(click to show/hide)

The use of lua allows the "entity templates" to describe complex structures and declare callback functions to give a custom behavior to the object. It's pretty easy to change the components' attributes from Lua using the get/set_string/number/bool_attribute methods. In the previous example, when the player jumps, the "Platformer" system calls the onStartJump function that changes the animation of the player to "jump".

On the C++ side, components declare their attributes (to allow them to be loaded from Lua, get or set from Lua callback functions). For example, to declare the structure of an Animation (and Frame), the following code is executed during the game init:

(click to show/hide)
« Last Edit: March 05, 2016, 06:04:54 pm by victorlevasseur »

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 10791
    • View Profile
    • development blog
    • Email
Re: YAPG - Yet Another Platformer Game
« Reply #1 on: March 05, 2016, 04:59:20 pm »
The possibilities regarding modding sounds quite interesting! :)
Hope you get around to creating some more in-game content, i.e. multiple levels etc.

Btw. you might want to update those links, since you're linking directly to one specific version, some people might not realize that you've create quite a few more versions in the meantime. ;)
Official FAQ: https://www.sfml-dev.org/faq.php
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

victorlevasseur

  • Full Member
  • ***
  • Posts: 206
    • View Profile
Re: YAPG - Yet Another Platformer Game
« Reply #2 on: March 05, 2016, 06:04:19 pm »
Quote
The possibilities regarding modding sounds quite interesting! :)
Hope you get around to creating some more in-game content, i.e. multiple levels etc.
I'm currently focused on the level editor development (with SFGUI) so that everyone will be able to create levels in the next version.
I've also written a first version of the modding tools doc : http://yapg.readthedocs.org/en/latest/

It currently looks like this : (the "property grid" is not fully working for now)

victorlevasseur

  • Full Member
  • ***
  • Posts: 206
    • View Profile
Re: YAPG - Yet Another Platformer Game
« Reply #3 on: April 06, 2016, 11:40:32 pm »
Hi all,

A new version of YAPG is available : YAPG version 0.3.0 alpha. It contains a brand new level editor to easily create levels. It also features collisions callbacks for entities, useful to create bonus blocks for example (an example of abonus block that doesn't spawn any bonuses is available, reacting to collisions with a player under it). A modding documentation is also available so that everyone with a basic understanding of Lua can develop its own entities templates (new blocs, players, ...)

Download
https://github.com/victorlevasseur/YAPG/releases/tag/v0.3.0-alpha
I'm currently investigating the support of OBS to build packages for Ubuntu, Fedora and Arch Linux.

Modding documentation
http://yapg.readthedocs.org

Complete changelog
# Version 0.3.0 Alpha -  Release notes

Game
====

 - Win and loose screens
 - Adds level finish lines
 - New "About..." window
 - Custom widgets style

Templates
=========

 - New components: Collider and Collidable components to react to collisions between entities
 - Can now declare abstract templates (templates that can only be inherited but not instanciated)
 - Special component : CustomDataComponent to store custom data per entity during the runtime
 - Support for CustomData fields as parameters
 - New component: FinishLineComponent to declare an entity as a finish line

Level editor
============

 - Brand new level editor

Dependencies
============

 - Updates Sol to Sol 2.3
 - Updates SFGUI to a modified version (with some custom widgets)


Sygmei

  • Newbie
  • *
  • Posts: 22
    • View Profile
Re: YAPG - Yet Another Platformer Game
« Reply #4 on: April 08, 2016, 04:12:11 pm »
I tested the new release and it's pretty cool, but I see no Lua scripting here :o
Also I loved the virtual grid feature, keep adding feature to make an impressive platformer creator :D

victorlevasseur

  • Full Member
  • ***
  • Posts: 206
    • View Profile
Re: YAPG - Yet Another Platformer Game
« Reply #5 on: April 08, 2016, 05:15:38 pm »
Thank you.  :)

Quote
but I see no Lua scripting here
Take a look at the template/kenney folder where all entities templates are declared (you can't script directly from the level editor).
« Last Edit: April 08, 2016, 05:49:17 pm by victorlevasseur »

victorlevasseur

  • Full Member
  • ***
  • Posts: 206
    • View Profile
Re: YAPG - Yet Another Platformer Game
« Reply #6 on: August 13, 2016, 01:00:43 pm »
New version : 0.4.2-alpha

This release provides a reworked level editor, new templates management (stored in packages), new collisions detection feature and health management. The game now contains enemies !  :)

Download
https://github.com/victorlevasseur/YAPG/releases/tag/v0.4.2-alpha

Modding documentation
http://yapg.readthedocs.io

Complete changelog
# Version 0.4.2 Alpha -  Release notes

Game core:
 - **[feature]** Separated assets and entities templates into independent packages
 - **[feature]** Health management (no HUD currently)
 - **[feature]** Level loading screen
 - **[feature]** Error screen if an error happens during a level or during the level loading
 - **[feature]** Improve the level editor (ImGui for GUI instead of SFGUI)
 - **[perf]** Spatial indexation to improve the hitboxes performances
 - **[bugfix]** Fixed a bug when moving the spawn position in the editor

Scripting:
 - **[feature]** Direct access to component's member variable (example : `position(entity).x` to get the X member variable of the position component of `entity` instead of `as_float(entity:get_attribute("Position", "x"))`)
 - **[feature]** The platform hitbox (PlatformerSystem) is now separated from the standard collisions hitboxes (CollisionSystem)
 - **[feature]** Multiple named hitbox for the collision
 - **[feature]** New finish line management (no components, just a function to call on the level)

Content:
 - Added new assets
 - Added enemies (a frog and a slime)
 - Added an new player template
 - *Reworked all entities templates for their new syntax*

Technical:
 - Built with MinGW-w64 (GCC 6.1) on Windows
 - Updated SFML to SFML 2.4.0
 - Updated Sol from 2.4 to 2.11.2