Giter VIP home page Giter VIP logo

unsleep-cave's Introduction

공개용 잠이 안 와 동굴 퍼즐

WebGL 빌드 페이지

https://yangsooplus.github.io/unsleep-cave/

  • 스테레오 사운드를 지원하지 않습니다.
  • 웹 환경에서 구동할 수 있도록 경량화하여 실제 게임과는 다릅니다.
  • 실제 플레이는 아래 영상을 확인해주세요.

플레이 영상

플레이 영상

코드 설명

csv 데이터로 맵 구성하기

9 csv

  • csv로 동굴 맵 데이터를 표현
  • csv 한 칸은 Carven 객체 하나를 나타냄
  • CaveMapParser에서 DFS로 csv를 탐색하여 Cavern Tree로 전체 맵을 구성
public class Cavern
{
    public int routeCnt;
    public int talkId;
    public string soundPosition;
    public int soundIndex;
    public float volume;
    public int soundIndex2;
    public float volume2;
    public bool isObject = false;
    public int objectIndex;
    public bool isSave;

    public Cavern prev = null;
    public Cavern[] next = null;
}

전진 / 후퇴하기

  • CaveMapManager에서 전진할때마다 지나온 길(Cavern)을 Stack에 Push한다.
    public void proceed(int routeIndex) // routeIndex: 전진하려는 길의 인덱스
    {
        if (caveMapRenderer.moving) return;

        stack.Push(currentCavern); // 지나온 길을 push
        currentCavern = currentCavern.next[routeIndex]; // 현재 위치를 전진할 길로 이동 
        caveMapRenderer.proceed(currentCavern); // 화면 + 소리 갱신

        (생략)
    }
  • 후퇴할 때에는 Stack에서 pop한 길로 이동한다.
    public void back()
    {
        if (caveMapRenderer.moving) return;

        currentCavern = stack.Pop();
        caveMapRenderer.back(currentCavern); // 화면 + 소리 갱신

        if (stack.Count == 0) backButton.SetActive(false); // 스택이 비었을 경우, 뒤로 후퇴하는 버튼을 숨긴다.
    }
 
  • 중간포인트로 버튼을 눌러 빨간색으로 표시된 시점으로 되돌아갈 수 있다. point
     public void returnLastPoint()
    {
        if (stack.Count == 0 || stack.Peek().isSave) return; // 지나온 길이 없거나 이미 중간포인트에 있는 경우

        while (!stack.Peek().isSave) // 중간 포인트에 도달할 때까지 지나온 길을 pop한다.
        {
            stack.Pop();
        }
        currentCavern = stack.Pop(); // 중간포인트
        caveMapRenderer.renderCavern(currentCavern); // 화면 + 소리 갱신

        if (stack.Count == 0) backButton.SetActive(false); // 스택이 비었을 경우, 뒤로 후퇴하는 버튼을 숨긴다.
    }

unsleep-cave's People

Contributors

yangsooplus avatar

Stargazers

ezhoon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.