Page 1 of 3 123 LastLast
Results 1 to 10 of 21

Thread: Vesta Forever - mini game for Linux

  1. #1

    Vesta Forever - mini game for Linux

    Fellow pascal programmers,

    I'm pleased to present a late beta of the slightly dystopian Jonax mini game Vesta Forever

    Download link and more info at:

    https://www.jonax.se/linux/vesta.php

    The system requirements are incredibly modest and the game runs well even in Virtual Machines. Which is the way I recommend for unknown software btw.

    No installation needed. Just download the standalone 3 MB file and start playing.

    No doubt there are some ancient systems unable to run the game but I assume that if you got 64-bit Linux you probably got power enough under the hood for this one.

    The whole thing might be viewed as an almost linear abstract action adventure game. Or perhaps an abstract RPG.

    For players with reasonable dexterity it should be over in a couple of minutes, though some quick thinking and clever decision making is helpful for the last few levels.

    Feedback highly welcome.

    Enjoy!


  2. #2
    Update: new version available - Vesta0303


    https://www.jonax.se/linux/vesta.php



    Minor fixes and larger bubbles. Should reduce waiting times for the last levels, but also make the game less challenging. 8-)

  3. #3
    Update:

    Two year's later I returned to the mini game and made minor game adjustments.
    Now easier gameplay. But still possible to fail if choosing wrong strategy consistently.
    Minor text adjustments done but the main story is the same.
    Outcome depends on your choices but still pretty limitied. It is a mini game.

    For 64Bit AMD/Linux:

    The game is supposed to handle high dpi monitors and scaling in steps of 25%
    I.e. 100% 125% 150%... 300%

    Now I notice KDE allows for scaling in steps of 5%. E.g. 115%.
    The game is still 'playable' at such odd scalings but in case you try you get a friendly hint to stick to even 25% steps.

    Now there is also a 32 bit version compiled on ReactOS. Also runs on 32-bit XP.
    Not tested on other Windows OS. Not recommended but is likely to run there.

    Link to Linux version https://www.jonax.se/linux/vesta.php

    Link to ReacOS version https://www.jonax.se/XP/VestaForever.php

    Feedback as always welcome. Enjoy the mini-game

  4. #4
    Quote Originally Posted by Jonax View Post
    Now there is also a 32 bit version compiled on ReactOS. Also runs on 32-bit XP.
    Not tested on other Windows OS. Not recommended but is likely to run there.
    On Windows 10 the game runs just fine.

    What control do you use for drawing of those circles?

  5. #5
    Thanks SilverWarior. I'm glad to hear Windows 10 cooperated despite the code being 32-bit.
    Drawing the circles: use the canvas.ellipse(a,b,c,d) where the a,b,c,d are the corner coordinates of an invisible box. Of course circles are just special cases of ellipses that part is pretty easy. No fancy codes here. Just drawing on a bitmap and copying to an image when update is needed. Super simple and maybe that's why the write once - complie everywhere worked fine in this case. Also the ReactOS and/or Lazarus/FPC teams seems to have improved their software.

  6. #6
    Quote Originally Posted by Jonax View Post
    No fancy codes here. Just drawing on a bitmap and copying to an image when update is needed.
    You should use TPaintBox instead of TImage.
    While Timage is good for loading and showing existing images from files it is not very good for drawing on. It updates quite slow.
    TPaintBox on the other hand is optimised for drawing on. So all you need is to write a proper code in OnPaint event of the TPaintBox. This event is automatically fired every time the TPaintBox control needs to be redrawn. And when you want to force it to be redrawn you just call its Invalidate method.

  7. #7
    Thanks for suggestions SilverWarior. I'm not sure how to do that but no need to try it right now. For next project perhaps. Whenever that will begin.

  8. #8
    Quote Originally Posted by Jonax View Post
    I'm not sure how to do that but no need to try it right now. For next project perhaps.
    I haven't seen your current code but from what you are saying it probably won't be much different of what you do now. You would still render on a canvas but instead on a bitmap canvas you would be drawing directly on PaintBox canvas.. I'm guessing you would only have to modify portion of your code that decides when to render thing slightly in order to accommodate PaintBox rendering design.
    So with that in mind attempting to implement something like this in existing game is not such a bad idea. Because this way at least you don't have to start from scratch to even see some results. Sure in the end you might not end up using this new approach in any of your old games but you will get better idea about possible benefits and drawbacks since you would be able to directly compare it to your existing implementation.

  9. #9
    I just tried the paintbox thingie on a new project. Managed to find and add the paintbox component but have not yet had any success in making something appear on it. Come to think of it I think I used a paintbox component in Delphi back then. I'm sure there is some solution. Indeed it would be interesting to compare the painbox and the image paths. Currently my games are so simple they ran decently even on weak hardware but it would of course be interesting to use more efficient code. Mostly in case there is a need for handling more moving parts for future games. If I eventuallly manage to use the paintbox thingie I'll also make an attempt to compare with the bitmap canvas method.

  10. #10
    Quote Originally Posted by Jonax View Post
    Managed to find and add the paintbox component but have not yet had any success in making something appear on it.
    I'm guessing you are making the same newbie mistake that most of us did when trying to use TPaintBox for the first time. You need to make sure that all drawing calls are within the OnPaint event. Any drawing call made from outside of the OnPaint event will most likely be immediately overridden. That is why it seems as none of them worked.

    EDIT:
    You might want to check https://www.youtube.com/watch?v=t3yXs7j3Eu4 for basic explanation of the difference between TImage and TPaintBox in Lazarus.
    Last edited by SilverWarior; 05-06-2025 at 05:41 PM.

Page 1 of 3 123 LastLast

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •