๐Ÿ“š Docs

๋งต ๋ชจ๋“œ: 3๋‹จ๊ณ„

์—…๋ฐ์ดํŠธ๋จ - 2021๋…„ 9์›” Marcos Elias ์ž‘์„ฑ

์†Œ๊ฐœ

Proton Bus ๋งต ๋ชจ๋”ฉ ์‹œ์Šคํ…œ์˜ 3๋‹จ๊ณ„์—์„œ๋Š” ์ฐจ๋Ÿ‰ ๊ตํ†ต, ๊ธฐ์ฐจ, ์ž‘๋™ํ•˜๋Š” ์‹ ํ˜ธ๋“ฑ ๋ฐ GPS๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

์ค‘์š”: ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด .map.txt ํŒŒ์ผ์˜ [map] ์„น์…˜์—์„œ mapModVersion=3์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.


์ง„์ž…์  ๊ตฌ์„ฑ (3๋‹จ๊ณ„ ์—…๋ฐ์ดํŠธ)

3๋‹จ๊ณ„์—์„œ๋Š” entrypoints.txt์— ์ƒˆ๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

dest ํด๋”์— ๋นˆ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋„๋กœ ๋˜๋Š” ๋„์‹œ ๊ฒฝ๋กœ์ธ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • intercity.txt: ๋„๋กœ ๊ฒฝ๋กœ (์Šน๊ฐ์€ ๋งˆ์ง€๋ง‰์—๋งŒ ํ•˜์ฐจ).
  • outofservice.txt: ์ฐจ๊ณ /์˜ˆ์•ฝ๋จ (์•„๋ฌด๋„ ํƒ‘์Šนํ•˜์ง€ ์•Š์Œ).

์ฐจ๋Ÿ‰ ๊ตํ†ต (aivehicles)

๊ตฌ์„ฑ์€ ๋ณดํ–‰์ž์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 3D์—์„œ ๊ฒฝ๋กœ(path)๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค (์˜ˆ: avBrasil1.000, avBrasil1.001...).

์ฐจ๋Ÿ‰ ๊ตํ†ต

๊ตฌ์„ฑ ํŒŒ์ผ (.txt)

aivehicles ํด๋” (modelsDir ๋‚ด๋ถ€):

[automatic_setup]
enabled=1
loop=0
reverse=0

[defaults]
isSpawner=1
spawnInterval=5
allowBicycle=0
leftBlinker=0
rightBlinker=0
  • spawnInterval: ์ƒˆ ์ฐจ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ„๊ฒฉ (๋ฐ€๋„๋ฅผ ์ค„์ด๋ ค๋ฉด ๋Š˜๋ฆฌ์‹ญ์‹œ์˜ค).
  • maxSpeed: km/h ๋‹จ์œ„์˜ ์ตœ๋Œ€ ์†๋„.
  • isBusSpawner=1: ์ด ๊ฒฝ๋กœ์— ๋ฒ„์Šค๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๋ ค๋ฉด.

๊ธฐ์ฐจ (aitrains)

๊ธฐ์ฐจ๋Š” ๊ตํ†ต๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •์˜๋œ ๋ ˆ์ผ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํด๋”: aitrains.

๊ธฐ์ฐจ ์˜ˆ์‹œ

๊ธฐ์ฐจ ์ „์šฉ ๋งค๊ฐœ๋ณ€์ˆ˜:

  • randomTimeToWaitAtStart=1: ์ฒซ ๋ฒˆ์งธ ๊ธฐ์ฐจ๊ฐ€ ๋ฌด์ž‘์œ„ ์‹œ๊ฐ„์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • spawnTimeInterval=120: ๊ธฐ์ฐจ ๊ฐ„ ์ดˆ ๋‹จ์œ„ ๊ฐ„๊ฒฉ (์˜ˆ: 2๋ถ„).
  • trainType=0: ๊ธฐ์ฐจ ์œ ํ˜• (๊ธฐ๋ณธ๊ฐ’ 0).

์ค‘์š”: ๊ธฐ์ฐจ๋Š” ์žฅ์• ๋ฌผ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฒฝ๋กœ๊ฐ€ ๊นจ๋—ํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค! ๊ธฐ์ฐจ๊ฐ€ ์„œ๋กœ ๋’ค๋”ฐ๋ฅด์ง€ ์•Š๋„๋ก ๋†’์€ spawnTimeInterval์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.


์‹ ํ˜ธ๋“ฑ (Traffic Lights)

์‹ ํ˜ธ๋“ฑ์€ ์ฐจ๋Ÿ‰์˜ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์€ trafficlights ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ํ˜ธ๋“ฑ ๊ตฌ์กฐ

"Ticks"์— ์˜ํ•œ ์ž‘๋™

์‹ ํ˜ธ๋“ฑ์€ ์ƒํƒœ ๋˜๋Š” "ticks"์— ๋”ฐ๋ผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

Ticks ๊ตฌ์„ฑํ‘œ

  1. Tick 1: ์ฐจ์„  1 ๋…น์ƒ‰, ์ฐจ์„  2 ์ ์ƒ‰.
  2. Tick 2: ์ฐจ์„  1 ํ™ฉ์ƒ‰, ์ฐจ์„  2 ์ ์ƒ‰.
  3. Tick 3: ์ฐจ์„  1 ์ ์ƒ‰, ์ฐจ์„  2 ๋…น์ƒ‰.

txt์—์„œ์˜ ๊ตฌ์„ฑ:

[trafficlight]
prefix=semaforo001
howManyPaths=2
howManyTicks=4
tickInterval=1
triggerRadius=1.5
useRealLights=1

[tick1]
repeat=10
path1_red=0
path1_green=1
path2_red=1
path2_green=0
path1_trigger=0
path2_trigger=1
  • pathX_red/green/yellow: ํ‘œ์‹œ๋“ฑ์ด ์ผœ์ ธ ์žˆ๋Š”์ง€(1) ๊บผ์ ธ ์žˆ๋Š”์ง€(0) ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • pathX_trigger: ํŠธ๋ž™์˜ ๋ณด์ด์ง€ ์•Š๋Š” ์ฐจ๋‹จ์ด ํ™œ์„ฑ ์ƒํƒœ์ธ์ง€(1) ๋น„ํ™œ์„ฑ ์ƒํƒœ์ธ์ง€(0) ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

3D ๊ตฌ์„ฑ

์กฐ๋ช…์—๋Š” ํ…์Šค์ฒ˜๊ฐ€ ์žˆ๋Š” ํ‰๋ฉด(Additive ์…ฐ์ด๋”)์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ œ์•ˆ๋œ ์ด๋ฆ„:

  • _farol1_path1_green_additive_
  • _farol1_path1_red_additive_

3D ์‹ ํ˜ธ๋“ฑ

์ž๋™์ฐจ๋ฅผ ๋ฉˆ์ถ”๋ ค๋ฉด ๋ณด์ด์ง€ ์•Š๋Š” ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค: _farol1_path1_trigger_

ํŠธ๋ฆฌ๊ฑฐ๋Š” ์ž๋™์ฐจ๊ฐ€ ๋ฉˆ์ถฐ์•ผ ํ•˜๋Š” ๊ณณ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

์‹ ํ˜ธ๋“ฑ ํŠธ๋ฆฌ๊ฑฐ

์—”์ง„์˜ ํŠธ๋ฆฌ๊ฑฐ ๋ชจ์–‘ (์บก์А):

ํŠธ๋ฆฌ๊ฑฐ ๋ชจ์–‘


์กฐ๋ช… ๋ฐ ํ™˜๊ฒฝ

์‹ค์ œ ์กฐ๋ช…(Spot/Point)๊ณผ ๊ฐ€์งœ(๋น›๋‚˜๋Š” ํ…์Šค์ฒ˜)๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋”: streetlights.

์กฐ๋ช… ๊ตฌ์„ฑ

txt์—์„œ์˜ ๊ตฌ์„ฑ:

[streetlight]
prefix=luz001
alwaysOn=0 (0=๋ฐค์—๋งŒ, 1=ํ•ญ์ƒ)

[real]
colorR=1
colorG=0.9
colorB=0.8
range=20
intensity=1

[fake]
texture=glow.png
shader=additive
alwaysFaceCamera=1

3D์—์„œ:

  • _luz001_real_: ์‹ค์ œ ์กฐ๋ช…(ํฌ์ธํŠธ ๋ผ์ดํŠธ)์šฉ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ „๊ตฌ ์•ฝ๊ฐ„ ์•„๋ž˜์— ๋†“์œผ์‹ญ์‹œ์˜ค.
  • _luz001_fake_: ์ „๊ตฌ ์œ„์— ๋น›๋‚˜๋Š” ํ…์Šค์ฒ˜(ํ—ค์ผ๋กœ)๊ฐ€ ์žˆ๋Š” ํ‰๋ฉด ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

๊ฐ€๋กœ๋“ฑ ์˜ˆ์‹œ

์ ์šฉ ์˜ˆ:

์ด์ค‘ ๊ฐ€๋กœ๋“ฑ ๋‹จ์ผ ๊ฐ€๋กœ๋“ฑ ๋…ธ๋ž€์ƒ‰ ์กฐ๋ช…


GPS

GPS๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ(๋„๋กœ) ์œ„์— ๋–  ์žˆ๋Š” ๋ฉ”์‰ฌ๋ฅผ ๋‹ค์Œ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค: _gps_ENTRYPOINT_NAME_

์˜ˆ: _gps_309T-10 TP_.

GPS ์˜ˆ์‹œ

ํŒ: GPS๊ฐ€ ๋งค์šฐ ๊ธด ๊ฒฝ์šฐ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋” ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์‹ญ์‹œ์˜ค.


์ตœ์ ํ™” ๋ฐ ํŠน์ˆ˜ ๋ช…๋ น

๋ฌด์ž‘์œ„ ๊ฐ์ฒด (_rand_)

๊ฐ์ฒด ์ด๋ฆ„์— _rand_XX_๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚  ํ™•๋ฅ (% ๋‹จ์œ„)์„ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ: _rand_50_ (50% ํ™•๋ฅ ).

ํ—ˆ์šฉ๋˜๋Š” ์ˆซ์ž: 1, 3, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99.

๋ฌด์ž‘์œ„ ๊ฐ์ฒด

ํŠน์ˆ˜ ๊ตฌ์—ญ

  • _low_speed_zone_: ํ„ฐ๋ฏธ๋„์˜ ๋ณด์ด์ง€ ์•Š๋Š” ํ๋ธŒ์ž…๋‹ˆ๋‹ค. ์Šน๊ฐ์ด ์ €์†์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • _force_exit_: ์ข…์  ๊ทผ์ฒ˜์˜ ๋ณด์ด์ง€ ์•Š๋Š” ํ๋ธŒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ฐ•์ œ๋กœ ํ•˜์ฐจ์‹œํ‚ต๋‹ˆ๋‹ค.

Force Exit

์ถ”๊ฐ€ ์„ธ๋ถ€ ์ •๋ณด (_det1)

์ ‘๋ฏธ์‚ฌ _det1.3ds๋กœ ๋ช…๋ช…๋œ ๊ฐ์ฒด(์˜ˆ: arvores_det1.3ds)๋Š” ๊ฒŒ์ž„์—์„œ "์ถ”๊ฐ€ ์„ธ๋ถ€ ์ •๋ณด" ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋งŒ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด ์žฅ์‹์— ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.


๋ฐ˜์ง์ด๋Š” ํ…์Šค์ฒ˜ (Z-Fighting)

๋ฐ”๋‹ฅ ํ…์Šค์ฒ˜๊ฐ€ ๊นœ๋ฐ•์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํ…์Šค์ฒ˜์— ๋Œ€ํ•œ .config.txt ํŒŒ์ผ์„ ๋งŒ๋“œ์‹ญ์‹œ์˜ค(์˜ˆ: asfalto.png.config.txt).

ํ…์Šค์ฒ˜ ๊ตฌ์„ฑ

์ด๊ฒƒ์€ ํฐ ์ง€ํ˜• ํ…์Šค์ฒ˜์˜ "๋ฐ˜์ง์ž„"์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค!

3๋‹จ๊ณ„ ๋!