피드백 수정 사항 적용 (모두 반영된 것은 아님)
▶주간 의회 명칭 변경: 주간 의회 --> 정기 의회
▶라운드 당 결재 건수는 다름 : 라운드가 증가할때마다 결재 건수가 줄어들도록 하여 아쉬움 발생 - 결재 건수가 0이 되면 게임 오버 (검토를 해보고 줄어드는게 나을지 늘어나는게 나을지 검토 해줘)
▶라운드 구성 개념의 디테일 부족: 기획서에 플로우차트(다이어그램)를 추가 ('결재 단계'와 '주간 의회 단계'의 흐름이 플레이어와 개발자 모두에게 명확하도록)
▶확인 결과 아래 데이터 없음. 데이터 추가 필요 (추가한 데이터가 시스템에 맞게 작동하도록 구현 해줘)
- 자산 데이터
- 오염 카드 데이터
- 내러티브 데이터
▶토큰 마이너스 상태 처리: 방향 B (패널티 및 파산 - 블랙코미디에 어울림), 마이너스를 허용하되 가혹한 대가를 치르게 하기
파산 문책 시스템 기획 및 구현 필요 (아래는 간략 시스템 작성 - 블랙 코미디가 구현되면 좋겠음)
- 마이너스 상태에서 결재 1건 처리 할 때 마다, 파산 카운터 증가
- 정기 의회에서 파산 문책 : 파산 카운터에 따라 문책의 강도가 달라 짐
- 파산 문책으로 경고를 받았는데도 개선(마이너스를 0 이상으로 복구)하지 못하면 다음 정기 의회에서 게임 오버
▶글이 너무 길어 읽기 힘든 문제:
- 게임 플레이 필수 글 (직관성 최우선): 카드 상단에 상황 키워드를 배치하고, 그 아래에 질문을 배치해 무엇을 요구 하는지 확실하게 알려 줌 (예: 상황 키워드 = 요원들의 시위 발생, 질문 = 시위를 어떻게 하시겠습니까?) 그리고 좌우 스와이프 시 등장하는 보상 표시에서 left_text, right_text의 텍스트 크기를 키우고 그 아래의 보상 오브젝트(예: [예산 -2] , [지지도 +10] )는 텍스트보다는 기호와 숫자를 활용하여 1초 만에 파악할 수 있도록 함.
- 서사에 필요한 글 (메인 텍스트): '게임 플레이 필수 글'에서 추가적인 스토리 정보를 원한다면 봐야 하는 글로 카드 데이터에서 text컬럼의 내용을 표시 합니다. 게임 플레이 필수 글보다는 폰트가 작아야 하고, 너무 길지 않게 핵심 서사 위주로 설명 합니다. (예를 들면, 상황 키워드가 요원들의 시위 발생인데, 왜 시위가 발생했는지에 대한 서사를 알려 주면 됩니다)
- 블랙 코미디/플레이버 텍스트 (선택적 정보): 공간을 분리합니다.(공간 구분이 확실해야 합니다.) 카드 하단에 글자를 작게 하고, 폰트를 다르게 하여 구분되도록 합니다.
This commit is contained in:
@@ -6,22 +6,49 @@ const parsed = Papa.parse(csv, { header: true });
|
||||
|
||||
parsed.data.forEach(row => {
|
||||
if (!row.id) return;
|
||||
row.left_pan = 0;
|
||||
row.right_pan = 0;
|
||||
// Let's add panic to some rows for testing
|
||||
if (row.id == 23 || row.id == 11) {
|
||||
row.left_pan = 1;
|
||||
row.right_pan = 0;
|
||||
}
|
||||
|
||||
// Auto-generate some basic keyword and question based on text
|
||||
if (row.text.includes('시위')) { row.keyword = '요원들의 시위 발생'; row.question = '시위를 어떻게 처리하시겠습니까?'; }
|
||||
else if (row.text.includes('격리실')) { row.keyword = '격리실 오염 발생'; row.question = '오염을 어떻게 정화하시겠습니까?'; }
|
||||
else if (row.text.includes('촉수')) { row.keyword = '촉수 괴물 출현'; row.question = '출동 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('DNA')) { row.keyword = '변이 DNA 이식 제안'; row.question = '실험을 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('폭격')) { row.keyword = '전술 폭격 건의'; row.question = '폭격을 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('암시장')) { row.keyword = '부산물 암시장 매각'; row.question = '매각을 허가하시겠습니까?'; }
|
||||
else if (row.text.includes('대중 매체')) { row.keyword = '존재 양지화 프로젝트'; row.question = '프로젝트를 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('도서관')) { row.keyword = '대규모 도서관 건립'; row.question = '예산을 배정하시겠습니까?'; }
|
||||
else if (row.text.includes('마녀사냥')) { row.keyword = '이단 색출 마녀사냥'; row.question = '어떻게 개입하시겠습니까?'; }
|
||||
else if (row.text.includes('유튜버')) { row.keyword = '변칙 현상 영상 유출'; row.question = '어떻게 처리하시겠습니까?'; }
|
||||
else if (row.text.includes('인신 공양')) { row.keyword = '사이비 종교 인신 공양'; row.question = '어떻게 대응하시겠습니까?'; }
|
||||
else if (row.text.includes('감사')) { row.keyword = '의회의 긴급 감사'; row.question = '어떻게 대처하시겠습니까?'; }
|
||||
else if (row.text.includes('초과 근무')) { row.keyword = '연구 부서 파업 조짐'; row.question = '요구를 수용하시겠습니까?'; }
|
||||
else if (row.text.includes('무역로')) { row.keyword = '이계 무역로 개방'; row.question = '무역로를 개방하시겠습니까?'; }
|
||||
else if (row.text.includes('비밀 금고')) { row.keyword = '전임 국장 비밀 금고'; row.question = '금고를 개방하시겠습니까?'; }
|
||||
else if (row.text.includes('메가코프')) { row.keyword = '메가코프 협박 작전'; row.question = '작전을 실행하시겠습니까?'; }
|
||||
else if (row.text.includes('시민')) { row.keyword = '민간인 구역 붕괴 위기'; row.question = '어떻게 명령하시겠습니까?'; }
|
||||
else if (row.text.includes('파업')) { row.keyword = '행정부 파업 예고'; row.question = '어떻게 대응하시겠습니까?'; }
|
||||
else if (row.text.includes('뇌를 결합')) { row.keyword = '불침번 요원 개발'; row.question = '배치하시겠습니까?'; }
|
||||
else if (row.text.includes('스파이')) { row.keyword = '내부 스파이 첩보'; row.question = '어떻게 조사하시겠습니까?'; }
|
||||
else if (row.text.includes('수용소')) { row.keyword = '변이 요원 수용소'; row.question = '건립을 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('유물')) { row.keyword = '이계의 유물 인양'; row.question = '유물을 어떻게 처리하시겠습니까?'; }
|
||||
else if (row.text.includes('눈동자')) { row.keyword = '이계의 주시자 출현'; row.question = '대중을 어떻게 통제하시겠습니까?'; }
|
||||
else if (row.text.includes('트라우마')) { row.keyword = '요원 집단 트라우마'; row.question = '어떻게 지원하시겠습니까?'; }
|
||||
else if (row.text.includes('폭로')) { row.keyword = '내부 고발자 발생'; row.question = '어떻게 막으시겠습니까?'; }
|
||||
else if (row.text.includes('타이머')) { row.keyword = '차원 붕괴 폭탄 오작동'; row.question = '어떻게 대응하시겠습니까?'; }
|
||||
else if (row.text.includes('군사 기업')) { row.keyword = 'PMC 흡수 합병'; row.question = '결탁하시겠습니까?'; }
|
||||
else if (row.text.includes('관찰')) { row.keyword = '대규모 거주 구역 실험장화'; row.question = '제안을 승인하시겠습니까?'; }
|
||||
else if (row.text.includes('이계의 군주')) { row.keyword = '이계 군주의 외교'; row.question = '제안을 수락하시겠습니까?'; }
|
||||
else if (row.text.includes('믹스 커피')) { row.keyword = '믹스 커피 재고 고갈'; row.question = '어떻게 해결하시겠습니까?'; }
|
||||
else if (row.text.includes('신화적 존재')) { row.keyword = '신화적 존재 강림'; row.question = '어떻게 대적하시겠습니까?'; }
|
||||
else { row.keyword = '비정상적 위기 발생'; row.question = '국장님, 결단이 필요합니다.'; }
|
||||
});
|
||||
|
||||
const newCsv = Papa.unparse(parsed.data, {
|
||||
columns: [
|
||||
'id','type','text','flavor',
|
||||
'id','type','keyword','question','text','flavor',
|
||||
'left_text','left_res','left_ent','left_pan','left_rsk','left_bud','left_per','left_inf','left_wea','left_for','left_sur',
|
||||
'right_text','right_res','right_ent','right_pan','right_rsk','right_bud','right_per','right_inf','right_wea','right_for','right_sur'
|
||||
]
|
||||
});
|
||||
|
||||
fs.writeFileSync('./src/data/cards.csv', newCsv);
|
||||
console.log('CSV updated');
|
||||
console.log('CSV updated with keyword and question');
|
||||
|
||||
Reference in New Issue
Block a user