<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Data_Driven_Development</id>
	<title>Data Driven Development - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Data_Driven_Development"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Data_Driven_Development&amp;action=history"/>
	<updated>2026-05-15T04:53:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Data_Driven_Development&amp;diff=84288&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0001 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Data_Driven_Development&amp;diff=84288&amp;oldid=prev"/>
		<updated>2026-03-26T23:56:06Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0001 pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:56, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l56&quot;&gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다른 내용이 있다면 적어주시면 감사하겠습니다 꾸벅&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;다른 내용이 있다면 적어주시면 감사하겠습니다 꾸벅&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Data_Driven_Development&amp;diff=31160&amp;oldid=prev</id>
		<title>imported&gt;ccang8: {CREATE}</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Data_Driven_Development&amp;diff=31160&amp;oldid=prev"/>
		<updated>2017-03-26T20:00:01Z</updated>

		<summary type="html">&lt;p&gt;{CREATE}&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; == 이 페이지는 뭔가 ==&lt;br /&gt;
&lt;br /&gt;
* Data Driven Development라고 게임 개발쪽에서 자주 쓰이는 개발 패러다임이 있는데 국내에 어째 자료를 못찾겠어서 나름 정리해볼려고 만든 페이지&lt;br /&gt;
* Table Driven Development라고 불리기도 하는 것 같다.&lt;br /&gt;
&lt;br /&gt;
 == 주의! ==&lt;br /&gt;
* Data Driven Programming 은 패턴 매칭 등을 통해 데이터를 처리하기 위한 프로그래밍 패러다임이다. (AWK 등, 어떤 패턴의 대용량 데이터가 있을 때 이를 효율적으로 처리하기 위한 언어)&lt;br /&gt;
* Data Driven Development라는 이름만 같고, 방향이 좀 다른 개발론이 있다. 이는 데이터에 따라서 유동적으로 프로그램의 흐름을 바꿔야 된다는 방법인데, 데이터가 프로그램의 로직을 결정하는 것이 아닌 데이터를 분석해서 어떤 식으로 움직여야 하는지 결정하는, 빅 데이터 쪽의 개발론이다. (쇼핑몰 검색 결과를 데이터 분석을 통해 실시간으로 바꾼다던가,,, 그런 것)&lt;br /&gt;
&lt;br /&gt;
* 대부분 내가 기본 개념을 보고 정리하면서 쓴 것이다. 그래서 어느정도의 추측이 들어가있다,,,&lt;br /&gt;
&lt;br /&gt;
 == 참고 자료 == &lt;br /&gt;
 &lt;br /&gt;
[http://www.gamedevforever.com/12]&lt;br /&gt;
[http://samarian.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%93%9C%EB%A6%AC%EB%B8%90-%EB%B0%A9%EC%8B%9D%EC%9D%84-%ED%86%B5%ED%95%9C-%ED%95%98%EC%9D%B4%EB%B8%8C%EB%A6%AC%EB%93%9C-%EC%95%B1%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0]&lt;br /&gt;
[http://www.slideshare.net/sehyeonnam9/10-38127704]&lt;br /&gt;
[http://www.gamedevforever.com/12]&lt;br /&gt;
&lt;br /&gt;
 == 개요 ==&lt;br /&gt;
* 간단히 말해서, 하드코딩 하지 말고, 좀 데이터로 빼라는 말&lt;br /&gt;
* 좀 풀어 말해서, 프로그램 안에다가 로직을 넣지 말고, 프로그램이 돌아가는 것을 외부 데이터를 통해서 관리하는 방식.&lt;br /&gt;
* 스크립팅 언어가 이를 위한 도구임.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 == 장점 ==&lt;br /&gt;
* 개발자를 통하지 않고 기획자가 테스트 해 볼 수 있다..&lt;br /&gt;
** 하드코딩 했을 경우, 기획자는 테스트를 하기 위해서 개발자를 거쳐야 된다. 이 비용 발생 자체가 오버헤드고, 이때문에 기획자가 테스트를 꺼릴 수도 있다. 여튼 안좋다.&lt;br /&gt;
** 게임 내부의 로직을 데이터로 움직일 수 있게 하면 기획자는 프로그래머를 거치지 않고 그 데이터만을 수정함으로써 자신의 기획을 테스트해 볼 수 있다.&lt;br /&gt;
** 기획자와 개발자의 영역이 분리된다는 점도 있을 듯?&lt;br /&gt;
&lt;br /&gt;
* 다양한 플랫폼 지원 가능&lt;br /&gt;
** 다양한 플랫폼에 따라서 내부에서 분기를 해 줄 필요가 없다. 그저 다른 플랫폼 용 데이터만을 선택해서 작동시키면 되는 일이다.&lt;br /&gt;
&lt;br /&gt;
* 라이브 패치 등, 프로그램을 다시 빌드하지 않고 새로운 기능을 추가할 수 있다.&lt;br /&gt;
** 퀘스트 로직이 잘못 되었을 때, 유저가 프로그램을 재설치하지 않고 그 로직에 관련된 파일만을 교체시키면 된다. &lt;br /&gt;
&lt;br /&gt;
* UCC 가능&lt;br /&gt;
** 유저가 만드는 확장 프로그램. 어느정도 데이터 드리븐으로 구현되어있느냐에 따라 달라지긴 할듯.&lt;br /&gt;
&lt;br /&gt;
 == 주의해야 할 점 ==&lt;br /&gt;
* 데이터를 통해 코딩하면 안된다.&lt;br /&gt;
** LUA같은 것으로 Data를 만든다고 할 때, 프로그래머는 최소의 기능만 제공해주고 어떤 기능의 로직을 이것으로 구현하는 것은 방향이 다르다.&lt;br /&gt;
** 예를 들어서, 퀘스트 구현을 한다고 할 때, 기획자는 &amp;#039;어떤&amp;#039; NPC가 &amp;#039;이런&amp;#039; 텍스트의 부탁으로 &amp;#039;이만큼&amp;#039; 시간안에 &amp;#039;무슨 물건&amp;#039;을 가지고 오는지만을 정의해서 퀘스트를 만들 수 있어야 하지, 퀘스트의 실행부터 팝업창의 실행, 타이머 조작 등의 세세한 것까지 만지게 하면 안된다는 것이다. 정도의 문제이다.&lt;br /&gt;
* 아주 간단한 프로그램이면 이럴 필요가 없다. 걍 하드코딩으로 붙자&lt;br /&gt;
** 하지만 이 프로그램이 추후 변동될수 있을지를 생각해보자. 또한 프알못이 이걸 건드릴 일이 있나 생각해보자.&lt;br /&gt;
 &lt;br /&gt;
 == 예시 ==&lt;br /&gt;
* 한 안드로이드 앱을 만드는데 레이아웃 구조와 씬 움직임을 하드코딩해둠. 모든 다른 기종마다 다른 빌드를 만들거나, 내부적으로 기종에 따른 모든 데이터를 하드코딩 해야 됨.&lt;br /&gt;
** 데이터 드리븐으로 하면 각 설정별 XML파일을 만드는 것으로 새로운 레이아웃을 만들 수 있음. 심지어 XML파일만 갈아끼면 되니 서버에 XML파일을 저장해놓고 상황에 맞게 바꿀 수도 있음.&lt;br /&gt;
* 비주얼 노벨 게임을 만드는데 난 프로그래머, 그리고 시나리오 라이터가 다른 사람,.&lt;br /&gt;
** 데이터 드리븐이 아니면 사실상 프로그래머가 그 모든 텍스트 출력을 다 해야함,,, 보통은 데이터 포맷을 정의하고 이 방식대로 시나리오 라이터 또는 스크립터가 작성하면 프로그램 내부구조 몰라도 돌아가게 짬. 대부분의 노벨게임 엔진이 이런식.&lt;br /&gt;
* 게임 퀘스트를 만듬&lt;br /&gt;
** 데이터 드리븐 안하면 실제 반영되지 않을 내용도 기획자가 보려면 프로그래머가 고쳐야됨. 발 * 암&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다른 내용이 있다면 적어주시면 감사하겠습니다 꾸벅&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;ccang8</name></author>
	</entry>
</feed>