Code Monkey home page Code Monkey logo

pro-pinball-super-ultra's People

Contributors

jayfoxrox avatar

Watchers

 avatar  avatar

Forkers

ksooo

pro-pinball-super-ultra's Issues

Flipper-Staging should be supported

On many real pinball machines which have 2 flippers per side, you can control them individually by half-pressing buttons.
This depends on #5.

Timeshock in Pro Pinball Ultra does not have this feature. I'm not sure if this was working in the original game.

Because this might give players an advantage, it could affect scoring, so it should be optional.

Gamecontrollers should be supported for nudging

Analogous to #5 , but this issue is specifically about analog nudging.
The game code does handle this, but it's currently not being used.

The interesting bits are in set_digital_nudge_acceleration_multipliers(float x, float y);.

Font path is hardcoded

I wasn't sure how to deal with game-relative paths because I'm new to macOS. I hardcoded an absolute path for #1 in:

error = FT_New_Face(library, "/Applications/Pro Pinball.app/Contents/Resources/fonts/Oswald-Regular.ttf", 0, &face);

Achievements

There should be support for some form of achievements to give extra-challenges to players

Translations

With the text rendering fix for #1 we can already replace some of the text. This could be used for localization.
As this project develops into a more complete hook, we could also do more advanced replacements elsewhere, too.
There could also be a language-neutral menu which uses pictograms instead of text.

Controller support for menu

Not having controller support in menus is very annoying.

To implement this, I'd suggest to simply replace the entire original menu.
We also have trouble with it for #9 and configuration for features like #20 or #17.
We also needed to hotfix the original menu for #1, so getting rid of the menu might be a good option.

Consider support for iOS, Android and other platforms

I'm not even sure which platforms eventually got a release and how they shipped or what the platforms restrict.

If there are DRM-Free builds for those platforms floating around, they should be added to https://github.com/JayFoxRox/Pro-Pinball-Super-Ultra/wiki/DRM-Free-download
Otherwise I will probably not work on them to avoid generating traffic to piracy sites.

Regardless, iOS support would have to be handled by someone else.
I could potentially work on Android though.

Xbox 360 was supposed to have a release, but I'm not sure if it ever came out. I might be able and willing to work on that.

Gamecontrollers should be supported for buttons

At least on macOS, the game doesn't recognize my Xbox 360 controller (which does work fine with SDL2 and Enjoyable).
While I can use Enjoyable to remap controller input to buttons, I have very limited deadzone control for the flipper-buttons.

Coin button should be exposed

There should be a button for adding virtual coins into the virtual game.

It's really annoying to have to play a couple of setup games if you only care about buy-in high-scores or progressing through the entire story with buy-ins.

Broken text rendering on macOS

I experienced an issue with text-rendering on macOS 10.15.7 and the base-game 1.2.3:

Before / After fix:

BrokenFixed


This function creates a buggy OpenGL texture:

https://github.com/cocos2d/cocos2d-x/tree/cocos2d-x-2.2.6 [probably]

Process 1052 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 3.2
    frame #0: 0x000000010015f660 Pro Pinball`cocos2d::CCTexture2D::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment)
Pro Pinball`cocos2d::CCTexture2D::initWithString:
->  0x10015f660 <+0>: pushq  %rbp
    0x10015f661 <+1>: movq   %rsp, %rbp
    0x10015f664 <+4>: pushq  %r15
    0x10015f666 <+6>: pushq  %r14
Target 0: (Pro Pinball) stopped.
(lldb) print (char*)$r15
(char *) $68 = 0x0000000100cccd01 "SIGN IN"

Relevant stack:

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x00007fff39b83186 libGL.dylib`glTexImage2D
    frame #1: 0x000000010015ee18 Pro Pinball`cocos2d::CCTexture2D::initWithData(void const*, cocos2d::CCTexture2DPixelFormat, unsigned int, unsigned int, cocos2d::CCSize const&) + 418
    frame #2: 0x000000010015f581 Pro Pinball`cocos2d::CCTexture2D::initPremultipliedATextureWithImage(cocos2d::CCImage*, unsigned int, unsigned int) + 627
    frame #3: 0x000000010015f2d4 Pro Pinball`cocos2d::CCTexture2D::initWithImage(cocos2d::CCImage*) + 90
    frame #4: 0x000000010015f743 Pro Pinball`cocos2d::CCTexture2D::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 227
    frame #5: 0x000000010011df85 Pro Pinball`cocos2d::CCLabelTTF::updateTexture() + 253
  * frame #6: 0x000000010011dbfc Pro Pinball`cocos2d::CCLabelTTF::initWithString(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 248
    frame #7: 0x000000010011dab7 Pro Pinball`cocos2d::CCLabelTTF::create(char const*, char const*, float, cocos2d::CCSize const&, cocos2d::CCTextAlignment, cocos2d::CCVerticalTextAlignment) + 85
    frame #8: 0x00000001000771de Pro Pinball`UI_BUTTON::setLabel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float, char const*) + 52
    frame #9: 0x000000010007bbb1 Pro Pinball`UI_SCENE::add_button_with_label(char const*, ANCHOR::TYPE, float, float, float, float, cocos2d::CCObject*, void (cocos2d::CCObject::*)(cocos2d::CCObject*), std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float) + 61
    frame #10: 0x0000000100083bc2 Pro Pinball`WELCOME_SCENE::init() + 354
    frame #11: 0x000000010008427b Pro Pinball`WELCOME_SCENE::create() + 159

This issue is what inspired this project. I also wasn't the first one to experience this issue.

Training mode

There should be a training mode which:

  • Resets the game-state to a specific mode
  • Resets the ball to specific positions / velocities

Simulate a broken machine

While working on #8 I had some fun with only using the hold-coils for a much weaker shot strength. It could be interesting to simulate machine faults to challenge players in new ways.

Statistics

There should be some form of statistics. For example, a counter how often you made each shot (and from which side).
A heatmap could be used to visualize where the player is most likely to lose the ball.

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.