GithubHelp home page GithubHelp logo

jigoku / boxclip Goto Github PK

View Code? Open in Web Editor NEW
89.0 89.0 8.0 68.52 MB

2D platformer engine using LÖVE and Lua

Home Page: https://jigoku.github.io/boxclip/

License: GNU General Public License v3.0

Lua 99.52% Shell 0.09% Makefile 0.38% Batchfile 0.01%
2d-game 2d-platformer 2d-platformer-engine engine game love2d lua map-editor

boxclip's Introduction

Hi there 👋

  • 🔭 I’m currently working on some Red Eclipse 2 maps, and some half-assed LUA/Love2D games
  • 🗺️ Highly interested in original game engine design and interactive level editor / map editors

boxclip's People

Contributors

jigoku avatar rufio72 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boxclip's Issues

Add 'hopper' enemy type

Like the walker, it has a fixed movement area with no left/right collisions, but jumps back and forth instead.

Add rotation option to spike enemy

Add a switch to this; eg enemies:spike(x,y,dir)

0 facing up
1 facing down
2 facing left
3 facing right

would allow spikes on platform ceilings or platform sides.

Implement 'death' material

Can be added to world like the platform with click/drag, but appears as a shaded area (transparent) in the editor. Not visible in world but kills objects that collide with it.

Add 'spinner' enemy type

Appearance would be a ball with a chain attached to a spiked ball rotating around it.

  • No gravity
  • Can be given a movex or movey parameter

Add 'doorway' entity

This could be used for loading another map, ie; challenge room, hidden room etc.

Implement sweptAABB

Sometimes (rarely) collisions fail to resolve... usually if gravity is set to a stupid amount, or the system freezes momentarily.

Highly noticable when loading a VERY laggy and messy map. many enemy entitys will just decide to plop through the platform and die.

Add bouncing to pickups

When a crate is destroyed, add velocity depending on the side the crate was hit, and bounce momentarily before stopping.

Add 'falling spike' enemy

Like the icicle/spike enemies, but falls when you are below it, and collides with the ground below.
If it collides with player, it kills.

add world death area

groundLevel should be removed (changed) to be a deathzone.

world platforms would reside above it. deathzone should be able to be set as water (drown), lava (die) etc. This way pickups can fall into the deathzone and be destroyed, aswell as the player losing a life.

Choose a better project name

Zippy | Too many projects relating to platformers already use Zippy it turns out...
Boxclip | Generic, boring, descriptive engine name

Find something else!

Add 'roamer' enemy type

This would check for collision with objects, and if it collides, it simply switches direction.

Look into how *.love files are built

As of now, *.love reaches above 12MB... is this ideal? Might be better to try and separate the assets, so that only script files are stored within the executable.

Fix collision twitching.

On a solid structure, holding right or left, causes tiny amount of pixel fighting, adjust this to make the object stay still.

Add platform 'clip type'

Secondary platforms that do not collide with left/right/bottom sides.

This could be used to create more interesting maps.

Mouse selection of world entity ordering

when selecting ents in an area that overlaps (of the same kind).

eg; platform over platform over platform. the oldest/lowest layer platform is selected for actions like deleting. most recently placed ent should be selected instead.

add some kind of reordering to platforms.

Add 'floater' enemy type

Like the walker, except there is no gravity applied. Can be used for weak flying enemies.
These shouldn't clip platforms either.

Add key/chest entities

  • keys as pickup types
  • chests similar to crates
  • can only be opened if key has been collected
  • red key, opens red chest, etc.
  • one colour type per level.

Fix camera scaling

Looks okay in "game" mode. But changing the scale gets broken in editor.
Also effects minimap view in the editor mode.

test maps fail to load when compiled ot love executable

$ love platform_engine.love 
Error: cannot open maps/test.map: No such file or directory
stack traceback:
    [C]: in function 'dofile'
    world.lua:104: in function 'loadMap'
    main.lua:23: in function 'load'
    [string "boot.lua"]:418: in function <[string "boot.lua"]:413>
    [C]: in function 'xpcall'

Add 'shooter' enemy type

This would be sitting in one place.

Ideas;

  • Apply gravity so it's fixed to the structure below it, rather than manually fiddling to the pixel level.
  • When player is within a certain range, it shoots a projectile depending left or right side.
  • Cannot be killed
  • Player can stand on top of it however.

Clean up LICENSE information for assets

This would be easier to organize LICENSE files (one per folder) similar to how some other FOSS games do it.

eg;

graphics/<AUTHOR>/file1.png
graphics/<AUTHOR>/LICENSE

Implement mapstates

If no checkpoint has been activated, and we die... we can simply reload the map.

If a checkpoint is activated, we want to store all states of entities...
*crate
*enemies
*pickups

etc

So that when we die after activating a checkpoint, we make sure collected/killed/destroyed entities collected after dying are restored to the last checkpoint state.

Might be simpler to fix this, by getting rid of all tables named "pickups" "crates" "enemies" etc, and merge them into entities={ ... }, activating a checkpoint would create a new_entities={ ... } table, when dying load up the new table?

Filter enemy movement to world:inview()

Don't move enemies unless they are on screen.

This might help with speed in the long term. Also makes some enemies predictable, which can be useful for creating bounce/jump courses throughout a level, making things less chaotic for speed running etc.

Add 'layers' to world

add layers;

  1. back layer (non collision background images; eg trees or other detail)
  2. middle layer (collision objects, 'structures' here)
  3. front layer (non collision foreground images)

More world props needed

Arches, pillars, meshes, grates, fences, other generic platformer structures, etc.

They can be coloured or greyscal (to be themed with the world pallette/theme). These are objects that never collide with anything, but just add some detail to the world.

Example:
c

This gives a small depth illusion and appears to be supporting the platform above.
d

Or used as a tunnel support/entrance
s4

Editor kp numbers need to be reworked

moving platforms are bugged when trying to reposition, also needs to have other entity types added (particularly, crates, and other non-gravity applied objects)

Add entity browser to editor

Should be keyboard/mouse controlled, by either a popup menu (keybind, eg M for menu?) or small corridor style menu at edge of screen. Should be scrollable to select entity type, showing a preview/name.

Why? Because there are now 9 entity types that can be added to the world, and 1-9 binds have been used up.

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.