GithubHelp home page GithubHelp logo

nearoo / wario-land-3 Goto Github PK

View Code? Open in Web Editor NEW
49.0 49.0 13.0 622 KB

A remake of the GBC-Game "Wario Land 3" using Pygame for Python

License: MIT License

Python 99.85% Batchfile 0.15%
game gbc-game pygame python spritesheet tilesets wario

wario-land-3's Introduction

Nearoo's Github Stats

wario-land-3's People

Contributors

airon90 avatar nearoo 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

Watchers

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

wario-land-3's Issues

OS Independent Paths

Using "" in paths doesn't work on linux. Instead use os module to allow the game to work on both windows and linux.
e.g.
import os
os.path.join("images","image.png")

  • Components/SpearheadComponents.py
  • Components/WarioComponents.py
  • Graphics.py

Images missing

Some images like ANI_Wario_turn_r.png are still missing.

Sprites not showing

The sprites are showing up purple and the console is showing "libpng warning: iCCP: known incorrect sRGB profile"

By the way I'm on Mac

I'm interested in your project

Hey I was wondering if you could help me out with something. I'm trying to get sound to play without the game crashing. Can you help with that? I also have questions about making a simple scoreboard for the game as well. Hopefully I hear from you soon :D

Improve Animation-Class

The animation-class is still very limited. It would be great to be able to control the order of sprites much more.

One improvement would be to separate the information about the order of the sprites from the actual surfaces. One argument could be the list of all the surfaces, and another one the order in which these surfaces should appear - which could be much longer than the amount of surfaces given. To combine it with the length of the single sprites, a list could look like this:

[(frame_nr_1, frame_1_length), (frame_nr_2, frame_2_length) ...]

An animation that plays its surfaces in order 1, 2, 1, 3, 1, 2, 1, 3 with each frame being showed 100 frames would then look like this:

Animation(self, [surface_1, surface_2, surface_3], [(0, 100), (1, 100), (0, 100), (2, 100)])

A major clean-up is becoming necessary

Things to do:

  • Correct typos
  • Sort methods
  • Delete unused functions
  • Complete documentation
  • Correct documentation
  • Improve comments
  • Rename methods, variables and classes to more sense

Separate the engine-part of game_actor

It doesn't really make sense to call game_actor.world to affect something engine-wide and game_actor.rect to affect something of the individual GameActor. Much better would be to get an argument engine and one game_actor. Maybe for that purpose, a static variable called "engine" should be added to GameActors - best would be a dummy-class that contains the engine-things.

Create a GameActor controller

So far, any GameActor is able to access graphics, sound, user-input and world data - but a really important part is to ensure communication between gameactors. This is why the Engine-class needs a new class-instance, the GameActorController (or similar), who handles tasks like these:

  • Most importantly, has and offers acces to all GameActors active in the current level
  • Offers methods to check for collision between GameActors
  • Offers methods to send messages to other GameActors
  • Offers methods to kill GameActors
  • Offers methods to spawn GameActors

Following these functions, the GameActor BC needs a new method called receive_message(, and all components one that is called receive_stranger_message( or similar.

Create sound-superclass for sound implementation in the future

There's no programming done regarding playing sound. In it's current state, the game needs no sound, but if sound should be needed later down the road, it's better if a dummy-sound-engine is already implemented now.

A draft of how it could work:

class Sound:
    def load_sound(self, filename): # Load sound in advance
    def play_sound(self, filename): # Play sound if already loaded, otherwise load it before
    def stop_sound(self, filename):
    def load_music(self, filename): # Same applies here
    def play_music(self, filename):
    def stop_music(self, filename):
    def queue_music(self, filename):

It then gets passed the same way as Input, World or Graphics. Maybe sounds should even be bound to game-actors, so they can stop sounds they are currently playing... but that's something that can be decided in the future, and be added as a non-standard argument. (e.g. id = id(self))

Improve storage of Tile-order in World-class

Maybe it would be good to store the Tile-instances in the World class sorted by material_group in a dictionary instead of in a raw list, since

  • dicts are much faster to acces
  • collision-detection of game-actors often needs a list of tiles based on their material-group

Maybe the Tile-instances should even contain the information about their position (or even a complete rect) and only share the surface-data?

Warios jump-bug - jump to infinity and beyond!

If the right and the left key to move Wario get presst alternately, sometimes, Wario is able to jump much higher than he should. If the right frequency is found, he's even able to jump infinitely high.

Implement the "sleep" animation of Wario

I'm not sure how to implement this jet. Probably add two new Wario-states "goto-sleep" and "wake-up" on which the animation of going to sleep and waking up will be played. When these states go over to "sleep" or "stand-stay" could be controlled by the Look-Component so these states take exactly as long as the animation.

Create "ResourcePaths.py"-module to store paths to resource-files

It would probably be a good idea to store the paths to source-files centralized in a seperate module, so it's easy to move the images around while the project grows...
Example:

# Images:
IMG_ANI_walk_r = "images\\ANI_walk_r.png"
# Sound:
SND_shoot_fireball = "sound\\tmp\\shoot_sound.wav"

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.