I've been looking for a tool that would do this, so thanks for the recommendation.
Pixelbyte Studios
Creator of
Recent community posts
VideoDude checks to see if FFMPEG is in the path and will complain if it is not. If you aren't seeing any such messages when you start it up, there must be something else going on. I'll dig around and see what I can find. I think at the very least this warrants getting a log file setup in the program so one can see what is going on in cases like this.
All the colors used in the output gif are modified by quantizing them into a smaller subset of colors (256 for the algorithm I'm using). This means any color close to black may be assigned to be black in the output gif. Thus, if you check "use black as transparent", those colors would then be made transparent. If the transparent color was changeable, it would still be subject to the above issue as the algorithm controls which colors are combined, but I can put it on my list of things to look into. If you limit yourself to 256 colors (including black), I don't think the algorithm will modify them, but I'm not 100% sure. The max output gif frame size of 1000x1000 is new to me and must be another constraint of the library I'm using to make it all work.
I love the little blurbs when you lose at the end, and the open-endedness of it increase the replability. It does seem like the blocks are blown/moved around irregardless of the material they are made out of. Additionally, limiting block rotation to something like 45 degree increments would improve the building experience. Overall nice job.
At first I found the mining a bit fiddly because sometimes there would be just a small bit of ground left that impeded my progress. However, after I got the first upgrade it was much better. Maybe I just figured out how to do it right. In any case, it was rather relaxing digging around to find precious minerals, and I like that you gave him what amounted to a mini jet pack to help with getting out of precarious situations. Also, the ending was pretty cute.
Thanks for the review. As far as the AI, yeah, I didn't have time to tune it. As a matter of fact, the build I uploaded was only the 2nd one I did and I forgot to specify the correct resolution in the html file. You can see everything just fine, but you have to click the fullscreen button to make the game fullscreen. I wanted to fix it, but submission time was over.
Yes I did and thank you. The AI is passable, but as others have said, I didn't get time to tune it so the copmo version of the game is pretty easy as it stands. As for the theme, there is supposed to be a phase where you have to give one of your cards to your opponent and he later must do the same for you. I was able to implement it before the deadline, but I had to wait for it to build and was thus unable to submit it for the compo.
This was really fun. I did have an issue with shoot/retrieve being the enter key. It felt awkward and more difficult for me to control, but that is mainly just a personal preference. I finished all the levels and was left wanting more. The game play is both relaxing and quite fun which I appreciate. Well done.
Many of the levels are tough, but the quick death-restart minimizes the frustration. The timer should probably start after the player starts to move. That would allow me to plan out my path without having to continually die until i figure out what I want to do. I think it is a neat idea and I enjoyed playing it.
Currently, Joysticker Pro does not work with Joysticker scripts, but they could be made to if needed at some point in the future. The funny thing is, in order to do that, I'd end up using a portion of Joysticker to accomplish it because it utilizes the Windows API for its joystick I/O. The WinAPI has been around for a very long time and won't go away anytime soon.
P.S. I just looked at the controller you are using, and it is very cool. I didn't know anything like that existed.
Try this script. It uses a custom state_change handler to check if the key in the map is a single value or a table, if it is a table, it calls SendKey() on all elements of the table. Note: You may not achieve the desired results with this as the SendKey() calls might have to have some delay inserted. I plan to have this built-in as part of a future update.
--
--This script is used with joysticker Pro
--
--Below is our mapping table which tells Joysticker which keys to press for a corresponding Joystick Input
--Remaps analog dp/down/left/right to the arrow keys, Joystick Button a to 'Z' and 'A', and Joystick Button x to 'X' and 'V'
--This demonstrates a way to map single joystick inputs to multiple keypress outputs
local map = Map{
name = "Player1", --the name is optional
padUp = Key.Up,
padDown = Key.Down,
padLeft = Key.Left,
padRight = Key.Right,
a = {Key.Z,Key.A},
x = {Key.X, Key.V} }
--Tell JoystickerPro to also map the Left analog stick of the joystick
--to the pad controls: up, down, left, right
JS.analog_conversion_mode = JS.CONVERT_LEFT
--Add the maping to JoystickerPro's controller maps
JS.AddMapping(map)
-------Custom Callback:
--state_change() is called whenever a joystick input changes state
--You can provide your own implementations of the state_change callback and
--do whatever you want in response to joystick input
--This handler does some of what the default handler does in that
--it takes the input_type and looks for a corresponding key mapping in the mappings table
--
--NOTE: If you do this, the JS.analog_conversion_mode will no longer work. You can re-implement it
-- by making use of the ConvertAnalogAxisToDigital() method (see docs/README.txt for more info)
function state_change(stick_id, input_type, state)
local m = JS.FindMapping(stick_id)
local keys = m[input_type]
if (keys ~= nil) then
print(input_type .. " =[" .. state .. "]=\n")
--If it is a table, then assume multiple keys
if type(keys) == "table" then
for k,v in pairs(keys) do
JS.SendKey(v, state)
end
else
JS.SendKey(keys, state)
end
elseif (state == 1) then--Only print the message when the input is active
print("Unassigned: ".. input_type .. "\n")
end
end
There currently is not, although it is something I've been planning on adding. Your question has prompted me to look into it, and as a result, I'm releasing an updated version that upgrades some internal libraries and fixes a couple of bugs. Currently I'm unable to look into it much more, but I will as I get time. I'm glad you're finding the program useful.