Love Potion 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = Love Potion | image = https://dlhb.gamebrew.org/3dshomebrew/LovePotionv1.1.0.png|250px | type = Game engine | version = V1.1.0 | licence = Mix...")
 
m (Text replacement - "↵Category:Support the author" to "")
 
(42 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = Love Potion
|title=LOVE Potion
| image = https://dlhb.gamebrew.org/3dshomebrew/LovePotionv1.1.0.png|250px
|image=Lovepotion3.png
| type = Game engine
|description=The unofficial port of LOVE for Nintendo 3DS.
| version = V1.1.0
|author=Videah, TurtleP
| licence = Mixed
|lastupdated=2024/03/26
| author = TurtleP
|type=Developments
| website = https://github.com/TurtleP/LovePotion
|version=3.0.1
| download = https://dlhb.gamebrew.org/3dshomebrew/LovePotionv1.1.0.rar
|license=Mixed
| source = https://dlhb.gamebrew.org/3dshomebrew/LovePotionv1.1.0.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/lovepotion3ds.7z
|website=https://lovebrew.org
|source=https://github.com/lovebrew/lovepotion
|donation=https://www.patreon.com/TurtleP
}}
}}
LÖVE Potion is a homebrew game framework for Nintendo 3DS and Nintendo Switch originally by VideahGams. It is an implementation of the [https://love2d.org LÖVE API] for 3DS Homebrew, which can be used to make 2D games in the Lua programming language.
LÖVE is totally free, and can be used in anything from friendly open-source hobby projects, to evil, closed-source commercial ones. Currently updated by TurtleP.
==User guide==
The [https://lovebrew.org LÖVE Potion wiki] will refer to what is implemented in Löve Potion which will follow the official [https://love2d.org/wiki/Main_Page LÖVE API].
Please note that not all functions of LÖVE will be able to be implemented at this time until it moves from SDL2 to pure OpenGL on Nintendo Switch.
The 3DS version also has a very limited selection of the graphics API.
If you are new and unfamiliar with LÖVE and/or Lua, it is recommended to visit [https://sheepolution.com/learn/book/contents How to LÖVE] by Sheepolution, which covers the basics of how to program games with the LÖVE framework.
===FAQ===
'''Q. Can I run my LÖVE game on this?'''
Running your game without any changes is possible, but it's recommended to currently use LÖVE Potion to make games from the ground up.
Take a look at [https://lovebrew.org/#/compatibility compatibility] and the API reference on the sidebar to see what may need changing.
'''Q. How do I build this?'''
Follow [https://lovebrew.org/#/building this guide], building should work on Linux, Windows and macOS if setup properly.
'''Q. Neat! I'm gonna send my game to Nintendo and get cartridge of my game and I'l-'''
Stop right there, this is for Homebrew only.
This is not for releasing a real 3DS title. Contact Nintendo if that's what you want.
'''Can I use this to run Mari0?'''
No.
===Showcase===
* [[Picroxx_3DS|Picroxx!]] by Substance12.
* [http://novaember.com/s/8f9453/FIrGGQ.mp4 Space Shooter Game] by Darkwater.
* [http://ludumdare.com/compo/ludum-dare-33/?action=preview&uid=31436 Ludum Dare 33 Entry] by videah.
* [[NumberF--ker3DS|NumberFucker3DS]] by unek & videah.
* [[Space_Fruit_3DS|SpaceFruit]] by TurtleP.
* [[Loophole_3DS|Loophole]] by Aaron Butterworth & CKlidify.
* [[Hax0r_3DS|Hax0r]] by TurtleP.
* [[Idiot 3DS|Idiot]] by TurtleP.
* [[Ravimid_3DS|ravimid]] by hoksy "raisin bran" jp.
* [[JETSKI 3DS|Jetski 3DS]] by miltoncandelero.
==Media==
'''Personal 3DS Homebrew Aguraki/Love2D/Love Potion''' ([https://www.youtube.com/watch?v=mTyscXt7NMg Ganjulationess3DS ]) <br>
<youtube>mTyscXt7NMg</youtube>
<youtube>mTyscXt7NMg</youtube>


As you probably know by now, L�E is a framework for making 2D games in the Lua programming language. It can be used in anything from friendly open-source projects, to evil, closed-source proprietary ones.
==Changelog==
This wiki will refer to what is implemented (so far) in L�Potion which will follow the official L�E API. Please note that not all functions of L�E will be able to be implemented at this time until it moves from SDL2 to pure OpenGL on Nintendo Switch. The 3DS version also has a very limited selection of the graphics API.
'''v3.0.1'''
Additions 3DS:
*What's Changed:
love.graphics.circle love.graphics.setDefaultFilter Custom fonts via system font loading Please use the mkbcfnt tool on ''.ttf files ex: mkbcfnt myfont.ttf -o myfont.bcfnt Images and Fonts must use typical extensions LOVE would expect (e.g. `''.png and *.ttf) I wrote a compatability checker to ensure it can find the t3x or bcfnt, allowing it to work seamlessly love.graphics.set3D (why did I keep forgetting to add it?) love.graphics.setDepth Switch:
**Fix Various Post-Release Bugs by @TurtleP in #215.
Text objects Loading *.lpx files from the Homebrew Menu. Please see the wiki for details. Critical Note In order for Love Potion to work flawlessly on Nintendo Switch, users are urged to use atmosphere title takeover functionality. This ensures you get the best experience to create your game along with allowing use of the software keyboard. Rounded rectangles General:
**Fix Joystick:getGamepadAxis on Nintendo 3DS (#223).
love.joystickaxis for gyroscope and accelerometer reading functionality TCP sockets -- you can now debug your games using lovebird! Software keyboard functionality. Pass a table with specific string indexes to configure it. Config Notes type basic, numpad, and standard1 isPassword makes the text hidden after entry header1 Header to display subheader1 Sub-header to display hint Text to prompt for on the input 1 Nintendo Switch only
**Fix app suspend not resuming (via swkbd or suspend) on Nintendo 3DS (#220).
HTTP functionality, except you can only get the buffer data at the moment. Useful for things like checking for game updates, DLC, etc. HTTPS also works, but does not on standard LOVE, use with caution. Renamed love.system.getWifiStrength and love.system.hasWifiConnection to love.system.getInternetStatus--returns strength and if the console is connected. On Switch, you can specify ethernet or wireless as an argument Fixes 3DS:
*Additions:
love.graphics.setScissor having issues Still has some issues? Audio would sometimes be slower/faster due to mixer rate being incorrect Fixed the error handler because it would lock up the application, now you can exit properly Switch:
**Nestlink is no longer required for debugging:.
Image and Font scaling, rotation, and offsetting (thanks @bms2993!) Games could crash exiting with sound effects as "static" Remedied in a prior commit (thanks @bms2993!) There was an alleged regression with quads drawing at some point, along with alpha transparency applying Fixed in a prior commit (thanks @bms2993!) General:
***Set t.console = true in conf.lua and connect via telnet on Windows or netcat on macOS/Linux.
Filesystem module now checks the save directory first before the game directory This is the behavior expected from LOVE Game directory being the game folder or romfs Fixed an issue where reading a file could cause a crash (thanks @fincs!) Fixed UDP socket code to be much more reliable Return of the game folder! Surprisingly I decided to re-add this Please create a 3dsx/nro file or even a lpx file once you are finished creating your game Added the ability to quit the no game screen Alpha value for love.graphics.setColor default to 1, as per LOVE documentation General system stability improvements to enhance the user's experience. Please review the wiki for getting your games up and running :)
****Connect via {DEVICE_IP} 8000.
***Other options can be done, simply by connecting via a TCP socket client.
***There is no timeout to connect, so leaving t.console = true without connecting will wait for a connection.
****A timeout can be added if desired, please open an issue for this.
'''v3.0'''
* This is the first stable release of LÖVE Potion 3.0.
* Please refer to the previous six pre-release items for details.
* Some items may still be missing, but it can be considered the main version to use now.
'''v2.4.1'''
*Fixes
** Fixed an issue on 3DS where Images would not return proper width/height.
** Fixed an issue on 3DS where some images, depending on width and height, would have problems displaying due to the --border option. This option is no longer needed, so please update to the latest version of lovebrew.
** Fixture objects not returning their proper Shape object.
 
'''v2.4.0'''
* getLanguage -> getPreferredLocales.
* love.video support.
 
'''v2.3.2'''
* lua-https (LÖVE 12.0 feature, use at your own risk since it is unreleased).
* Fixed: Reloading textures would not be released properly, causing its old memory to be unfreed.
* Fixed: Getting a really long error backtrace would crash the system. It has been mitigated.
* General system stability improvements to enhance the user's experience.
 
'''v2.3.1'''
* Fixed a potential issue where providing bad data to love.graphics.newImage would crash the console.
** This now produces the proper error as would be expected on normal LÖVE.
* Updated the JPGHandler class to use <jpeglib.h> instead of <jpegturbo.h>.
** This does not affect any JPG loading.
* Versioning number updates are more reliable to be done from the Makefile.
** Not entirely important for end-users, but is noteworthy.
 
'''v2.3.0'''
* General system stability improvements to enhance the user's experience.
* Added the love.image module.
* Added Data as a supported item for FileData construction.
* Added ByteData:clone().
 
'''v2.2.0'''
 
Additions (3DS):
* Audio playback for global play, pause, and stop.
* Table and variadic versions of play, pause and stop functions.
* love.graphics.(get/set)BlendMode.
* Thank you @Nehemek for extra testing.
* love.graphics.(get/set)ColorMask.
* love.graphics.isActive.
* love.graphics.isCreated.
* love.graphics.getCanvas.
* love.math.noise.
* Networked debugger, simpler than using gdb on Nintendo 3DS.
* Get it at the repository.
* Wiki documentation and usage.
 
Bugfixes (3DS):
* Fixed an issue where audio volume was not applied correctly.
* Various issues with love.window.showMessagebox.
* Thank you @HTV04 for finding these.
* Fixtures not working properly with Fixture:getShape().
* Fixed audio being shaky/pitched at times.
* This may be from a prior release, but figured it should be mentioned.
* Canvases not clearing on first construction.
 
Removals (3DS):
* Removed love.graphics.setBlendFactor.
* Colors can be multiplied as expected now with love.graphics.setColor, as of the newest citro2d version, using a special tinting mode.
* Big thanks to @fincs.
 
Misc:
* General system stability improvements to enhance the user's experience.
 
==Credits==
Acknowledgements:
* [https://github.com/devkitPro devkitPro]
** devkitARM and libctru
** devkitPPC and wut
** devkitA64 and libnx
** Various portlibs for the consoles
* [https://github.com/piepie62 piepie]
** Various C++ components
* [https://github.com/fincs fincs]
** citro2d, citro3d, and deko3d
* [https://github.com/mtheall mtheall]
** Initial debugging with Switch font rendering
* [https://github.com/love2d/love LÖVE's Developers]
** Code is referenced and used in this project
* [https://github.com/videah videah]
** Original author of LÖVE Potion
 
==External links==
* Official website - https://lovebrew.org
* GitHub (TurtleP) - https://github.com/lovebrew/lovepotion
* GitHub (Videah) - https://github.com/videah/LovePotion
* GBAtemp - https://gbatemp.net/threads/release-loevepotion-loeve-api-for-3ds-homebrew-beta.397559
* LÖVE - https://love2d.org/forums/viewtopic.php?t=80593
 
 
[[Category:Homebrew developments for 3DS]]

Latest revision as of 04:32, 17 May 2024

LOVE Potion
Lovepotion3.png
General
AuthorVideah, TurtleP
TypeDevelopments
Version3.0.1
LicenseMixed
Last Updated2024/03/26
Links
Download
Website
Source
Support Author

LÖVE Potion is a homebrew game framework for Nintendo 3DS and Nintendo Switch originally by VideahGams. It is an implementation of the LÖVE API for 3DS Homebrew, which can be used to make 2D games in the Lua programming language.

LÖVE is totally free, and can be used in anything from friendly open-source hobby projects, to evil, closed-source commercial ones. Currently updated by TurtleP.

User guide

The LÖVE Potion wiki will refer to what is implemented in Löve Potion which will follow the official LÖVE API.

Please note that not all functions of LÖVE will be able to be implemented at this time until it moves from SDL2 to pure OpenGL on Nintendo Switch.

The 3DS version also has a very limited selection of the graphics API.

If you are new and unfamiliar with LÖVE and/or Lua, it is recommended to visit How to LÖVE by Sheepolution, which covers the basics of how to program games with the LÖVE framework.

FAQ

Q. Can I run my LÖVE game on this?

Running your game without any changes is possible, but it's recommended to currently use LÖVE Potion to make games from the ground up.

Take a look at compatibility and the API reference on the sidebar to see what may need changing.

Q. How do I build this?

Follow this guide, building should work on Linux, Windows and macOS if setup properly.

Q. Neat! I'm gonna send my game to Nintendo and get cartridge of my game and I'l-

Stop right there, this is for Homebrew only.

This is not for releasing a real 3DS title. Contact Nintendo if that's what you want.

Can I use this to run Mari0?

No.

Showcase

Media

Personal 3DS Homebrew Aguraki/Love2D/Love Potion (Ganjulationess3DS )

Changelog

v3.0.1

  • What's Changed:
    • Fix Various Post-Release Bugs by @TurtleP in #215.
    • Fix Joystick:getGamepadAxis on Nintendo 3DS (#223).
    • Fix app suspend not resuming (via swkbd or suspend) on Nintendo 3DS (#220).
  • Additions:
    • Nestlink is no longer required for debugging:.
      • Set t.console = true in conf.lua and connect via telnet on Windows or netcat on macOS/Linux.
        • Connect via {DEVICE_IP} 8000.
      • Other options can be done, simply by connecting via a TCP socket client.
      • There is no timeout to connect, so leaving t.console = true without connecting will wait for a connection.
        • A timeout can be added if desired, please open an issue for this.

v3.0

  • This is the first stable release of LÖVE Potion 3.0.
  • Please refer to the previous six pre-release items for details.
  • Some items may still be missing, but it can be considered the main version to use now.

v2.4.1

  • Fixes
    • Fixed an issue on 3DS where Images would not return proper width/height.
    • Fixed an issue on 3DS where some images, depending on width and height, would have problems displaying due to the --border option. This option is no longer needed, so please update to the latest version of lovebrew.
    • Fixture objects not returning their proper Shape object.

v2.4.0

  • getLanguage -> getPreferredLocales.
  • love.video support.

v2.3.2

  • lua-https (LÖVE 12.0 feature, use at your own risk since it is unreleased).
  • Fixed: Reloading textures would not be released properly, causing its old memory to be unfreed.
  • Fixed: Getting a really long error backtrace would crash the system. It has been mitigated.
  • General system stability improvements to enhance the user's experience.

v2.3.1

  • Fixed a potential issue where providing bad data to love.graphics.newImage would crash the console.
    • This now produces the proper error as would be expected on normal LÖVE.
  • Updated the JPGHandler class to use <jpeglib.h> instead of <jpegturbo.h>.
    • This does not affect any JPG loading.
  • Versioning number updates are more reliable to be done from the Makefile.
    • Not entirely important for end-users, but is noteworthy.

v2.3.0

  • General system stability improvements to enhance the user's experience.
  • Added the love.image module.
  • Added Data as a supported item for FileData construction.
  • Added ByteData:clone().

v2.2.0

Additions (3DS):

  • Audio playback for global play, pause, and stop.
  • Table and variadic versions of play, pause and stop functions.
  • love.graphics.(get/set)BlendMode.
  • Thank you @Nehemek for extra testing.
  • love.graphics.(get/set)ColorMask.
  • love.graphics.isActive.
  • love.graphics.isCreated.
  • love.graphics.getCanvas.
  • love.math.noise.
  • Networked debugger, simpler than using gdb on Nintendo 3DS.
  • Get it at the repository.
  • Wiki documentation and usage.

Bugfixes (3DS):

  • Fixed an issue where audio volume was not applied correctly.
  • Various issues with love.window.showMessagebox.
  • Thank you @HTV04 for finding these.
  • Fixtures not working properly with Fixture:getShape().
  • Fixed audio being shaky/pitched at times.
  • This may be from a prior release, but figured it should be mentioned.
  • Canvases not clearing on first construction.

Removals (3DS):

  • Removed love.graphics.setBlendFactor.
  • Colors can be multiplied as expected now with love.graphics.setColor, as of the newest citro2d version, using a special tinting mode.
  • Big thanks to @fincs.

Misc:

  • General system stability improvements to enhance the user's experience.

Credits

Acknowledgements:

  • devkitPro
    • devkitARM and libctru
    • devkitPPC and wut
    • devkitA64 and libnx
    • Various portlibs for the consoles
  • piepie
    • Various C++ components
  • fincs
    • citro2d, citro3d, and deko3d
  • mtheall
    • Initial debugging with Switch font rendering
  • LÖVE's Developers
    • Code is referenced and used in this project
  • videah
    • Original author of LÖVE Potion

External links

Advertising: