I have no experience with making games. My only experience with programming is making macros in WoW so LUA immediately seemed very attractive. My major annoyance with engines I tried, is that they try to suffocate me in an endless supply of menus before I'm allowed to make anything. That resulted in me being very pleased with the fact that I can whip up notepad++ and make an actual application that does something, however unimpressive, within 5 minutes of clicking the link to the main page.
Are these things possible?
1: I want a feature in a game (once I actually know what I'm doing ofc.) where you can sorta' hack the game from the inside out. Essentially being able to modify the code of the game while it's running using an in-game command prompt. Players could access hidden assets that way, modify the behavior of NPCs as well as completely break the game by not using proper syntax. Then, when they next try to run the exe they'd be greeted with an Easter egg and the game would repair itself by simply reinstalling itself. I imagine the latter is the easier part. I have a lot of ideas of what to do with this concept.
2: Dynamic lighting for pixel art using normal maps. I'm guessing yes.
3: A powerful object manipulation system like in Papers, Please! Also guessing yes.
Here're the first couple of things I'm planning to learn to do, tell me if it's a good place to start.
Make a properly scaled pixel art dude walk around a room with obstacles in it by using either wasd or pathfinding with mouse clicks.
Pull up a new scene when you click on a multiple page document on a table, touch it all over. Drag it around the screen, open it, write on it, tear a piece off etc. using the mouse.
I'm already pretty sold but I'd like reassurance that LÖVE is the right choice.
Re: I'm already pretty sold but I'd like reassurance that LÖVE is the right choice.
Hi and welcome to the forums! What you want to do sounds perfectly doable, as long as you handle it correctly. You'll need to reload files for any edit to work and you also need to be careful not to overwrite any data when you do, behaviour only, or reloading a file would basically reset things instead of allowing for live edit. Dynamic lighting using normal maps has been done already, if I recall correctly, although that was a few versions of LÖVE ago. I'm afraid I don't know what Papers, Please! is, but if you're referring to either physics objects or programming objects you can both roll your own solution in Lua or use already existing libraries (love.physics for physics, any of the existing OOP libraries for that, although maybe ECS would be better suited to your game due to point 1? I'm not sure about that).
The prototype seems like a good start to get used to LÖVE, too. If you have any questions, people can be pretty fast to answer and you can also join us on Discord or IRC. Have a good stay!
The prototype seems like a good start to get used to LÖVE, too. If you have any questions, people can be pretty fast to answer and you can also join us on Discord or IRC. Have a good stay!
lf = love.filesystem
ls = love.sound
la = love.audio
lp = love.physics
lt = love.thread
li = love.image
lg = love.graphics
ls = love.sound
la = love.audio
lp = love.physics
lt = love.thread
li = love.image
lg = love.graphics
- zorg
- Party member
- Posts: 3468
- Joined: Thu Dec 13, 2012 2:55 pm
- Location: Absurdistan, Hungary
- Contact:
Re: I'm already pretty sold but I'd like reassurance that LÖVE is the right choice.
On the other hand, I do know what Papers, please is, and yes, i'd think that's the easiest thing you could implement on your list!
(unless you have an affinity with shaders and the glsl language, or graphical programming)
Dynamic lighting is possible, yes; in many ways as well, including either "baking" the normal maps for your sprites, or actually doing things realtime dynamically (with some small performance penalty of course) Also there are a few applications for this kind of thing already, like sprite lamp or sprite dlight (i think both of them have somewhat dissimilar uses but nevertheless similar ideas... also i think one's dev actually talked about it here on the forums)
The "hacking the game inside-out" is, in my opinion, the hardest of things you can want to do, and i'm not only talking about relatively to your list only. Nixola gave a few ideas on how it could be achieved but these things have so many ways to work and not work, it's really complex for anyone regardless of how new they are to lua/löve/programming in general. This is not to dissuade you, of course!
Your example seems simple enough, in terms of i can neatly separate the smaller parts, like scaling, pathfinding, pixel perfect graphics (assuming), tactile input, etc.
I'd still rather urge you to start with the "classics" like pong, breakout, invaders, galaga, snake, tetris... just to get a feel of game programming (and because tutorials, sources and such are ambudant for those games; don't just copy them though, try to get a feel of the base ideas, and try coding it your way; functional code first, fast code second, neat code... eventually, maybe )
(unless you have an affinity with shaders and the glsl language, or graphical programming)
Dynamic lighting is possible, yes; in many ways as well, including either "baking" the normal maps for your sprites, or actually doing things realtime dynamically (with some small performance penalty of course) Also there are a few applications for this kind of thing already, like sprite lamp or sprite dlight (i think both of them have somewhat dissimilar uses but nevertheless similar ideas... also i think one's dev actually talked about it here on the forums)
The "hacking the game inside-out" is, in my opinion, the hardest of things you can want to do, and i'm not only talking about relatively to your list only. Nixola gave a few ideas on how it could be achieved but these things have so many ways to work and not work, it's really complex for anyone regardless of how new they are to lua/löve/programming in general. This is not to dissuade you, of course!
Your example seems simple enough, in terms of i can neatly separate the smaller parts, like scaling, pathfinding, pixel perfect graphics (assuming), tactile input, etc.
I'd still rather urge you to start with the "classics" like pong, breakout, invaders, galaga, snake, tetris... just to get a feel of game programming (and because tutorials, sources and such are ambudant for those games; don't just copy them though, try to get a feel of the base ideas, and try coding it your way; functional code first, fast code second, neat code... eventually, maybe )
Me and my stuff True Neutral Aspirant. Why, yes, i do indeed enjoy sarcastically correcting others when they make the most blatant of spelling mistakes. No bullying or trolling the innocent tho.
Re: I'm already pretty sold but I'd like reassurance that LÖVE is the right choice.
You could approach the "runtime hacking" by making an API for the game which can be accessed from the files. The files would register callback functions in the game engine, and the game engine would call these functions as appropriate. This is fairly simple way of doing this, it's the same way LOVE itself works with your game scripts. And it allows you to load/unload user files wholesale using the "require" command. Unloading involves a bit of screwing around with system variables but is still easy to do.
Who is online
Users browsing this forum: Ahrefs [Bot] and 3 guests