도전 과제

Achievement 모듈을 사용하면 플레이어에게 도전 과제를 부여하거나 초기화하고, 달성 여부를 확인할 수 있습니다. 도전 과제의 진행도도 기록할 수 있습니다.

기본적으로 도전 과제 정보는 영구 데이터 파일에 저장됩니다. Steam 지원을 사용할 수 있고 활성화되어 있으면 Steam과 자동으로 동기화합니다.

Steam 파트너 프로그램에 승인된 제작자만 배포할 수 있도록 Steam 지원은 Ren'Py에 별도로 추가해야 합니다. 설치하려면 “환경설정(preferences)”, “라이브러리 설치(Install libraries)”, “Steam 지원 설치(Install Steam Support)”를 선택하세요.

achievement.Sync()

achievement.sync()를 호출하는 액션입니다. 도전 과제가 동기화되지 않은 경우에만 활성화됩니다.

achievement.clear(name)

name 도전 과제를 초기화합니다.

achievement.clear_all()

모든 도전 과제를 초기화합니다.

achievement.get_progress(name)

name 도전 과제의 현재 진행도를 반환합니다. 기록된 진행도가 없거나 알 수 없는 도전 과제이면 0을 반환합니다.

achievement.grant(name)

name 도전 과제가 아직 부여되지 않았다면 부여합니다.

achievement.has(name)

플레이어에게 name 도전 과제가 부여되었으면 true를 반환합니다.

achievement.progress(name, complete)

name 도전 과제가 아직 부여되지 않았다면 진행도를 보고합니다. 해당 도전 과제에는 달성에 필요한 양이 정의되어 있어야 합니다.

name

도전 과제의 이름입니다. 통계 이름이 아니라 도전 과제 이름이어야 합니다.

complete

도전 과제 달성을 위해 완료한 단위 수를 나타내는 정수입니다.

achievement.register(name, **kwargs)

도전 과제를 등록합니다. 등록은 필수가 아니지만, 등록하면 백엔드에 정보를 전달할 수 있습니다.

name

등록할 도전 과제의 이름입니다.

다음 키워드 매개변수는 선택 사항입니다.

steam

Steam에서 사용할 이름입니다. 지정하지 않으면 name이 기본값입니다.

stat_max

도전 과제가 잠금 해제되는 통계의 정숫값입니다.

stat_modulo

진행도를 stat_max로 나눈 나머지가 0이면 사용자에게 진행도를 표시합니다. 예를 들어 stat_modulo가 10이면 진행도가 10, 20, 30 등에 도달할 때 표시합니다. 지정하지 않으면 기본값은 0입니다.

achievement.sync()

등록된 도전 과제를 로컬 저장소와 다른 백엔드(Steam 등) 사이에서 동기화합니다.

도전 과제를 제어하는 변수는 다음과 같습니다.

achievement.steam_position = None

None이 아니면 Steam 알림 팝업의 위치를 설정합니다. "top left", "top right", "bottom left", "bottom right" 중 하나인 문자열이어야 합니다.

define config.steam_appid = None

None이 아니면 Steam appid여야 합니다. Ren'Py는 시작할 때 이 appid를 자동으로 설정합니다. define 문으로 설정해야 합니다.

define config.steam_appid = 12345
define config.automatic_steam_timeline = True

true이면 Steam에서 실행할 때 게임이 Steam 타임라인을 자동으로 갱신합니다.

현재는 다음 작업을 수행합니다.

  • save_name 변수가 설정되어 있으면 그 값에 맞춰 게임 진행 단계를 갱신합니다.

  • 플레이어가 메뉴 안에 있는지 반영하도록 게임 모드를 갱신합니다.

Steamworks API

Steam을 사용할 수 있으면 achievement.steamapi로 Steamworks API의 ctypes 기반 바인딩을 사용할 수 있습니다. 이 바인딩은 여기에 있는 steamapi 모듈의 인스턴스이며 C++ Steamworks API를 Python으로 기계적으로 변환한 것입니다.

또한 Steamworks API를 사용할 수 있을 때에만 achievement.steam 객체의 여러 함수를 사용할 수 있습니다.

achievement.steam

Steam 초기화에 성공하면 고수준 Steam 메서드가 있는 네임스페이스입니다. 초기화되지 않았으면 None입니다. 메서드를 호출하기 전에 항상 None이 아닌지 확인하세요.

Steam 앱

achievement.steam.dlc_installed(appid)

dlc가 설치되어 있으면 True, 아니면 False를 반환합니다.

achievement.steam.dlc_progress(appid)

DLC 다운로드 완료까지의 진행도를 보고합니다.

achievement.steam.get_app_build_id()

설치된 게임의 빌드 ID를 반환합니다.

achievement.steam.get_current_beta_name()

현재 베타의 이름을 반환합니다. 확인할 수 없으면 None을 반환합니다.

achievement.steam.get_current_game_language()

사용자가 선택한 언어의 이름을 반환합니다.

achievement.steam.get_steam_ui_language()

Steam UI에서 사용하는 언어의 이름을 반환합니다.

achievement.steam.install_dlc(appid)

appid에 해당하는 DLC의 설치를 요청합니다.

achievement.steam.is_subscribed_app(appid)

사용자가 appid 앱을 소유하면 true, 아니면 false를 반환합니다.

achievement.steam.uninstall_dlc(appid)

appid에 해당하는 DLC의 제거를 요청합니다.

Steam 오버레이

achievement.steam.activate_overlay(dialog)

Steam 오버레이를 활성화합니다.

dialog

오버레이에서 열 대화 상자입니다. "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements" 중 하나입니다.

achievement.steam.activate_overlay_to_store(appid, flag=None)

Steam 오버레이에서 스토어를 엽니다.

appid

열 앱의 appid입니다.

flag

achievement.steam.STORE_NONE, .STORE_ADD_TO_CART, .STORE_ADD_TO_CART_AND_SHOW 중 하나입니다.

achievement.steam.activate_overlay_to_web_page(url)

Steam 오버레이를 활성화하고 url의 웹 페이지를 엽니다.

achievement.steam.is_overlay_enabled()

Steam 오버레이가 활성화되어 있으면 true를 반환합니다. (게임 시작 후 true를 반환하기까지 시간이 걸릴 수 있습니다.)

achievement.steam.overlay_needs_present()

Steam 오버레이가 활성화되어 있으면 true를 반환합니다. (게임 시작 후 true를 반환하기까지 시간이 걸릴 수 있습니다.)

achievement.steam.set_overlay_notification_position(position)

Steam 오버레이의 위치를 설정합니다. Position은 achievement.steam.POSITION_TOP_LEFT, .POSITION_TOP_RIGHT, .POSITION_BOTTOM_LEFT, .POSITION_BOTTOM_RIGHT 중 하나여야 합니다.

Steam 통계

achievement.steam.clear_achievement(name)

name 도전 과제를 초기화합니다. 변경 사항을 서버에 반영하려면 _renpysteam.store_stats()를 호출하세요.

achievement.steam.get_achievement(name)

name 도전 과제의 상태를 가져옵니다. 부여되었으면 True, 아직 부여되지 않았으면 False, 알 수 없는 도전 과제이거나 오류가 발생하면 None을 반환합니다.

achievement.steam.get_float_stat(name)

name 통계의 값을 반환합니다. 해당 통계가 없으면 None을 반환합니다.

achievement.steam.get_int_stat(name)

name 통계의 값을 반환합니다. 해당 통계가 없으면 None을 반환합니다.

achievement.steam.grant_achievement(name)

name 도전 과제를 부여합니다. 변경 사항을 서버에 반영하려면 _renpysteam.store_stats()를 호출하세요.

achievement.steam.indicate_achievement_progress(name, cur_progress, max_progress)

사용자에게 도전 과제 진행도를 알립니다. 도전 과제의 잠금을 해제하지는 않습니다.

achievement.steam.list_achievements()

도전 과제 이름의 목록을 반환합니다.

achievement.steam.retrieve_stats()

Steam에서 도전 과제와 통계를 가져옵니다.

achievement.steam.set_float_stat(name, value)

name 통계의 값을 설정합니다. 해당 통계의 자료형은 FLOAT여야 합니다. 변경 사항을 서버에 반영하려면 _renpysteam.store_stats()를 호출하세요.

achievement.steam.set_int_stat(name, value)

name 통계의 값을 설정합니다. 해당 통계의 자료형은 INT여야 합니다. 변경 사항을 서버에 반영하려면 _renpysteam.store_stats()를 호출하세요.

achievement.steam.store_stats()

Steam 서버에 통계와 도전 과제를 저장합니다.

Steam 타임라인

achievement.steam.add_timeline_event(icon, title, description, priority=0, start_offset=0.0, duration=0.0, possible_clip=None)

타임라인에 이벤트를 추가합니다. 여기서 인수 순서는 Steam API와 다릅니다.

icon

이벤트에 표시할 아이콘입니다. 표준 Steam 아이콘 또는 Steam에 업로드한 아이콘을 나타내는 문자열이어야 합니다.

title

이벤트 제목입니다.

description

이벤트 설명입니다.

priority

충돌 해결에 사용하는 이벤트 우선순위입니다. 0~1000 사이의 정수여야 합니다.

start_offset

현재 시각을 기준으로 한 이벤트 시작 시각의 오프셋이며 단위는 초입니다.

duration

이벤트의 지속 시간이며 단위는 초입니다.

possible_clip

이벤트를 클립으로 만들 수 있는지 결정합니다. achievement.steam.CLIP_PRIORITY... 상수 중 CLIP_PRIORITY_NONE, CLIP_PRIORITY_STANDARD, CLIP_PRIORITY_FEATURED 중 하나여야 합니다.

achievement.steam.clear_timeline_state_description(time_delta)

타임라인의 현재 상태 설명을 지웁니다.

achievement.steam.set_timeline_state_description(description, time_delta=0.0)

타임라인의 현재 상태 설명을 설정합니다.

description

현재 상태의 설명을 나타내는 문자열입니다.

time_delta

마지막 상태 변경 이후 경과한 시간입니다.

Steam 사용자

achievement.steam.cancel_ticket()

achievement.steam.get_session_ticket()이 반환한 티켓을 취소합니다.

achievement.steam.get_account_id()

사용자의 계정 ID를 반환합니다.

achievement.steam.get_csteam_id()

사용자의 전체 CSteamID를 64비트 숫자로 반환합니다.

achievement.steam.get_game_badge_level(series, foil)

사용자가 이 게임에서 획득한 Steam 배지의 레벨을 가져옵니다.

achievement.steam.get_persona_name()

사용자의 공개 이름을 반환합니다.

achievement.steam.get_session_ticket(identity=None)

서버에 보내 사용자를 인증할 수 있는 티켓을 가져옵니다.

Steam 창작마당

achievement.steam.get_subscribed_item_path(item_id)

사용자 제작 콘텐츠 항목의 설치 경로를 반환합니다. 설치되지 않았으면 None을 반환합니다.

item_id

항목 ID입니다.

achievement.steam.get_subscribed_items(include_disabled=False)

사용자가 Steam 창작마당에서 구독한 항목의 ID 목록을 반환합니다.

include_disabled

true이면 비활성화된 항목도 포함합니다.