New features and fixes for each version of Solarus.
Release date: 2021/04/06
This release adds new features but does not introduce any incompatibility.
destructible:get/set_cut_method()
force-software
suspend-unfocused
Release date: 2020/04/12
No change in the engine package (only changes for Solarus Quest Editor).
Release date: 2020/04/11
enemy:on_dying()
Release date: 2019/08/15
Release date: 2019/08/10
-force-software-rendering
hero:on_state_changed()
entity:overlaps(...)
sol.menu.start
game:get/set_transition_style()
state:get/set_can_use_teletransporter/switch/stream()
surface
text_surface
timer
Release date: 2018/12/22
sol.timer.start()
timer:set_suspended_with_map()
circle_movement:get_direction4()
path_movement:get_path()
pixel_movement:get_trajectory()
straight_movement:set_max_distance()
straight_movement:set_speed()
entity:test_obstacles()
entity:get_ground_below()
map:on_started()
map:get_hero()
hero:on_movement_changed()
on_activated()
enemy:on_restarted()
item:on_ability_used()
sol.file.exists()
HAVE_UNISTD_H
This release adds new features and deprecates a few ones but does not introduce any incompatibility.
sol.video:on_draw(screen)
sol.main.get_quest_version()
sol.main.get_game()
game:simulate_key_pressed/released()
push
grab
pull
game:get/set_ability()
item:is_being_used()
entity:set_size()
entity:set_origin()
entity:create/remove_sprite()
entity:is/set_drawn_in_y_order()
entity:get/set_weight()
entity:get_property()
entity:set_property()
entity:get_properties()
entity:set_properties()
entity:get_layer()
entity:set_layer()
entity:get_controlling_stream()
entity:overlaps()
entity:get/set_draw_override()
entity:on_pre/post_draw(camera)
entity:on_pre/post_draw()
entity:on_enabled/disabled()
entity:on_suspended()
hero:get_carried_object()
hero:start_grabbing()
hero:start_attack_loading()
hero:on_state_changing()
camera:on_state_changing()
camera:get_surface()
dynamic_tile:get/set_tileset()
door:open()
door:close()
door:set_open()
stairs:get_direction()
stairs:is_inner()
destructible:on_lifting()
carried_object:get_carrier()
carried_object:get/set_damage_on_enemies()
carried_object:get/set_destruction_sound()
carried_object:on_lifted/thrown/breaking()
map:create_block()
block:get/set_max_moves()
block:get/set_maximum_moves()
enemy:set_attack_consequence()
enemy:is_immobilized()
enemy:get/set_attacking_collision_mode()
enemy:get/set_dying_sprite_id()
custom_entity:is/set_tiled()
custom_entity:get/set_follow_streams()
drawable:get/set_rotation()
get/set_scaling()
get/set_opacity()
sprite:is_animation_started()
sprite:stop_animation()
sprite:get_frame_src_xy()
sprite:get_ignore_suspend()
sprite:get_num_frames()
sprite:get_frame_delay()
sprite:get_size()
sprite:get_origin()
surface:get_pixels()
surface:set_pixels()
surface:gl_bind_as_target/texture()
movement:is_suspended()
movement:get/set_ignore_suspend()
get_angle()
circle_movement:get_center()
circle_movement:get/set_angle_from_center()
circle_movement:get/set_angular_speed()
sol.menu.bring_to_front/back()
sol.file.is_dir()
sol.file.list_dir()
sol.input
get/set_color_modulation()
sol.text_surface.get_predicted_size()
get/set_max_moves()
max_moves
maximum_moves
origin_x
origin_y
Release date: 2016/04/01
text_surface:set_horizontal/vertical_alignment()
Release date: 2016/11/29
sol.main.load_settings()
hero:unfreeze()
entity:get_name()
"entities/chest"
Release date: 2016/07/27
solarus_run
solarus-run
-lua-console
-win-console
-turbo
-lag
[Solarus]
sprite:on_animation_finished()
sprite:set_animation()
hero:set_invincible()
enemy:set_attack_consequence_sprite()
custom_entity:set_can_traverse()
custom_entity:set_can_traverse_ground()
custom_entity:get_modified_ground()
custom_entity:on_ground_below_changed()
custom_entity:set_origin()
text_surface:set_rendering_mode()
circle_movement:set_initial_angle()
sol.input.get_mouse_coordinates()
chest:on_empty()
chest:on_opened(treasure)
set_hurt_style()
"jump_over_water"
"freezed"
"frozen"
map:get_entities()
map:create_custom_entity()
map:get_camera_position()
camera:get_bounding_box()
map:move_camera()
map:draw_sprite()
map:draw_visual()
entity:set_enabled(true)
circle_movement:get/set_initial_angle()
sol.main.get_solarus_version()
sol.main.get_quest_format()
sol.main.get_type()
game:set_suspended()
map:get_min_layer()
map:get_max_layer()
map:get_entities_by_type()
map:get_entities_in_rectangle()
map:get_camera()
map:set_world()
map:set_floor()
map:get_entities*()
entity:on_movement_started()
entity:get_max_bounding_box()
entity:get_center_position()
entity:get_facing_position()
entity:get_facing_entity()
entity:get_ground_position()
entity:set_optimization_distance()
entity:get_sprite()
entity:get_sprites()
entity:bring_sprite_to_front/back()
enemy/custom_entity:create_sprite()
hero:save_solid_ground()
hero:start_attack()
npc:is/set_traversable()
chest:get/set_treasure()
chest:on_opened()
dynamic_tile:get_pattern_id()
destination:get/set_starting_location_mode()
switch:is_walkable()
switch:is_locked()
surface:get_opacity()
surface/text_surface/sprite:get/set_blending_mode
title_bar
title
min_layer
max_layer
starting_location_mode
width
height
Release date: 2015/11/22
Bug fixes for the 1.4 release.
sol.main.load_file()
Release date: 2015/08/19
Release date: 2015/08/12
map:get_ground()
game:set_command_keyboard/joypad_binding
camera:move()
map:on_finished()
entity:bring_to_front()/back()
enemy:immobilize()
Release date: 2015/05/09
No change in the engine (changes in Solarus Quest Editor only).
Release date: 2015/05/02
The new quest editor release!
-win-console=yes
-no-video
sol.text_surface.create()
sol.main.get_os()
sprite:on_frame_changed()
You can use the script editor/resources/tools/data_files_conversion/1.3_to_1.4/update_quest.lua to automatically update your data files. Don't forget to make a backup first.
editor/resources/tools/data_files_conversion/1.3_to_1.4/update_quest.lua
Release date: 2014/08/25
Bug fixes for the 1.3 release.
Release date: 2014/08/21
The sprite editor release!
game:on_started()
hero:save_solid_ground
sprite:get_animation_set_id()
sprite:has_animation()
sprite:get_num_directions()
hero:get_solid_ground_position()
switch:get_sprite()
enemy:get_treasure()
pickable/destructible:get_treasure()
You can use the script editor/resources/tools/data_files_conversion/1.2_to_1.3/update_quest.lua to automatically update your data files. Don't forget to make a backup first.
editor/resources/tools/data_files_conversion/1.2_to_1.3/update_quest.lua
Release date: 2014/08/02
Bug fixes for the 1.2 release.
entity:is_in_same_region()
custom_entity:on_interaction()
enemy:restart()
hero:set_tunic_sprite_id()
timer:get_remaining_time()
0
on_joypad
Release date: 2014/05/06
The SDL2 release.
"wide"
enemy:on_hurt()
StraightMovement
hero:start_treasure()
map:set_tileset()
"walking"
hero:on_removed()
hero:teleport()
You can use the script tools/data_files_conversion/1.1_to_1.2/update_quest.lua to automatically update your data files. Don't forget to make a backup first.
tools/data_files_conversion/1.1_to_1.2/update_quest.lua
shop_item
shop_treasure
conveyor_belt
stream
"stops_projectiles"
sol.video.switch_mode()
surface:set_transparency_color()
surface:clear()
sol.audio.play_music("none")
sol.audio.play_music(nil)
on_key_pressed()
on_character_pressed()
map:create_destructible()
map:create_teletransporter()
map:create_shop_item()
map:create_shop_treasure()
map:create_conveyor_belt()
map:create_stream()
"conveyor belt"
hero:get_state()
enemy:get/set_magic_damage()
hero:start_hurt()
item:on_pickable_movement_changed
pickable:on_movement_changed
pickable:get_treasure()
sol.video.get/set/reset_window_size()
sol.audio.play_music()
sol.main.get_metatable()
menu:is_started()
map:get_world()
map:create_wall()
entity:get_game()
entity:bring_to_front()
entity:bring_to_back()
enemy:get_attack_consequence()
get_attack_consequence_sprite()
entity:on_created()
enemy:on_hurt_by_sword()
enemy:on_attacking_hero()
enemy:on_hurting_hero()
hero:on_hurt()
hero:is/set_invincible()
hero:is/set_blinking()
hero:get/set_animation()
hero:get/set_sword_sound_id()
sensor:on_left()
block:on_moving()
teletransporter:on_activated()
destination:on_activated()
movement:on_position_changed()
movement:start()
random_movement:get_max_radius()
game:add/remove_life/money/magic
item:add/remove_amount
timer:is_suspended_with_map()
timer:get/set_remaining_time
get_elapsed_time
get_key_modifiers
NullPointerException
num_columns
Release date: 2013/12/01
Bug fixes for the 1.1 release.
block:on_moved
Release date: 2013/10/13
on_command_pressed/released()
menu:on_finished()
hero:start_victory()
on_obtained()
SOLARUS_DEBUG_KEYS
on_draw()
You can use the script tools/data_files_conversion/1.0_to_1.1/update_quest.lua to automatically update your data files. Don't forget to make a backup first.
tools/data_files_conversion/1.0_to_1.1/update_quest.lua
"default"
"destination"
"ice"
"low_wall"
map:is_dialog_enabled()
game:is_dialog_enabled()
map:start_dialog()
game:start_dialog()
map:draw_dialog_box()
map:set_dialog_style()
map:set_dialog_position()
map:set_dialog_variable()
map:set_pause_enabled()
game:set_pause_allowed()
enemy:create_enemy()
map:create_enemy()
sol.language.get_default_language()
sol.main.is_debug_enabled()
map:get_light()
map:set_light()
"get_back_from_death"
on:empty()
game:get/set_starting_location()
sol.video.get_quest_size()
entity:is_in_same_region(entity)
entity:get_direction4_to()
entity:get_direction8_to()
game:get_hero()
hero:get/set_walking_speed()
separator:on_activating()
separator:on_activated()
enemy:is/set_traversable()
on_position_changed()
on_obstacle_reached()
on_movement_changed()
on_movement_finished()
target_movement:set_target(entity)
game:is_pause_allowed()
map:get_music()
on_top
sprite:on_animation_changed()
sprite:on_direction_changed()
sol.input.is_key_pressed()
sol.input.is_joypad_button_pressed()
sol.input.get_joypad_axis_state()
sol.input.get_joypad_hat_direction()
sol.input.is/set_joypad_enabled()
sol.audio.get_music()
sol.audio.get_music_format()
sol.audio.get_music_num_channels()
sol.audio.get/set_music_channel_volume()
sol.audio.get/set_music_tempo()
sol.language.get_string()
sol.language.get_dialog()
game:stop_dialog(status)
game:on_dialog_started(dialog, info)
game:on_dialog_finished(dialog)
game:start_game_over()
game:stop_game_over
game:on_game_over_started()
game:on_game_over_finished
sol.file
open()
exists()
remove()
mkdir()
Release date: 2013/06/26
Bug fixes for the 1.0 release.
Release date: 2013/06/25
Release date: 2013/06/22
item:set_sound_when_brandish()
nil
set_suspended_with_map
Release date: 2013/05/12
Release date: 2013/05/03
The "I love Lua" release.
This is a major release. The version number switches from 0.x to 1.x because there is a brand new Lua scripting API. I now consider that Solarus can be used to create your own Zelda-like games in decent conditions. By "in decent conditions", I essentially mean: with a clean and stable scripting API. Clean because there are nice datatypes now and the API is much easier to use, less error-prone and more with the Lua spirit. Stable because future versions of the scripting API will now try to keep compatibility with existing scripts. Any API change that breaks compatibility will now be clearly documented.
Data files and scripts written for solarus 0.x are not compatible with solarus 1.x. Which is not a problem since until now, I never said you could create a quest in decent conditions :) More seriously, I guess I'm the only one to have a lot of data files and scripts created for solarus 0.x. Anyway, conversion scripts are provided to upgrade your existing data files, but not your scripts (the scripting API, which was working but ugly and unstable, has totally changed).
This version also include changes from 0.9.3, though 0.9.3 is not released yet:
Release date: 2013/05/08
This should be the last release of the 0.9 branch. Existing games must now upgrade to Solarus 1.0.
However, upgrading to Solarus 1.0 represents a lot of work and testing: in the meantime, this release introduces important fixes that improve the situation of existing games.
Release date: 2012/04/03
Release date: 2012/02/12
"run"
sol.map.destructible_item_create
sol.enemy.get_angle_to_hero()
sol.main.get_distance(x1, y1, x2, y2)
Release date: 2011/12/23