24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจฎเฉˆเจ‚ เจฐเจธเจŸ เจตเจฟเจš เจ‡เจ• เจ›เฉ‹เจŸเฉ€ เจœเจฟเจนเฉ€ เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐเจจ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจจเจฟเฉฑเจœเฉ€ เจ…เจจเฉเจญเจต เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ. เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฌเจฃเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจฒเจ—เจญเจ— 24 เจ˜เฉฐเจŸเฉ‡ เจฒเฉฑเจ— เจ—เจ (เจฎเฉˆเจ‚ เจœเจฟเจ†เจฆเจพเจคเจฐ เจธเจผเจพเจฎ เจจเฉ‚เฉฐ เจœเจพเจ‚ เจธเจผเจจเฉ€เจตเจพเจฐ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจธเฉ€)เฅค เจ–เฉ‡เจก เจ–เจคเจฎ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจฆเฉ‚เจฐ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ…เจจเฉเจญเจต เจซเจฒเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพ. เจฎเฉˆเจ‚ เจœเฉ‹ เจ•เฉเจ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉเจ เจจเจฟเจฐเฉ€เจ–เจฃ เจœเฉ‹ เจฎเฉˆเจ‚ เจธเจผเฉเจฐเฉ‚ เจคเฉ‹เจ‚ เจ–เฉ‡เจก เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉŒเจฐเจพเจจ เจ•เฉ€เจคเฉ‡ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจ‚เจเจพ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ: เจฆเฉ‹ เจธเจพเจฒเจพ เจชเฉเจฐเฉˆเจ•เจŸเฉ€เจ•เจฒ เจ•เฉ‹เจฐเจธ "เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹ เจตเฉˆเฉฑเจฌ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจนเจพเจ‚".

เจ…เจธเฉ€เจ‚ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚: "Habr" เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจชเจพเจ เจ•เจพเจ‚ เจฒเจˆ - "Habr" เจชเฉเจฐเจšเจพเจฐ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจ•เฉ‹เจฐเจธ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒเจพ เจฒเฉˆเจฃ เจตเฉ‡เจฒเฉ‡ 10 เจฐเฉ‚เจฌเจฒ เจฆเฉ€ เจ›เฉ‹เจŸเฅค

เจœเฉฐเจ—เจพเจฒ เจ•เจฟเจ‰เจ‚?

เจฎเฉˆเจ‚ เจ‡เจธ เจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ† เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจšเฉฐเจ—เฉ€เจ†เจ‚ เจ—เฉฑเจฒเจพเจ‚ เจธเฉเจฃเฉ€เจ†เจ‚ เจนเจจ เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ–เฉ‡เจก เจตเจฟเจ•เจพเจธ เจตเจฟเฉฑเจš เจนเฉ‹เจฐ เจ…เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉเฉฐเจฆเฉ‡ เจฆเฉ‡เจ–เจฆเจพ เจนเจพเจ‚เฅค เจ—เฉ‡เจฎ เจฒเจฟเจ–เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจฐเจธเจŸ เจตเจฟเฉฑเจš เจธเจงเจพเจฐเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐเจจ เจฆเจพ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจ…เจจเฉเจญเจต เจธเฉ€เฅค เจ‡เจน เจ–เฉ‡เจก เจฒเจฟเจ–เจฃ เจตเฉ‡เจฒเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ†เจœเจผเจพเจฆเฉ€ เจฆเฉ€ เจญเจพเจตเจจเจพ เจฆเฉ‡เจฃ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจธเฉ€เฅค

เจ–เฉ‡เจก เจ•เจฟเจ‰เจ‚ เจ…เจคเฉ‡ เจ•เจฟเจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€ เจ–เฉ‡เจก?

เจ–เฉ‡เจกเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ เจฎเจœเจผเฉ‡เจฆเจพเจฐ เจนเฉˆ! เจฎเฉˆเจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจนเฉ‹เจฐ เจ•เจพเจฐเจจ เจนเฉเฉฐเจฆเฉ‡, เจชเจฐ "เจ˜เจฐ" เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฒเจˆ เจฎเฉˆเจ‚ เจ…เจœเจฟเจนเฉ‡ เจตเจฟเจธเจผเจฟเจ†เจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจœเฉ‹ เจฎเฉ‡เจฐเฉ‡ เจจเจฟเจฏเจฎเจค เจ•เฉฐเจฎ เจจเจพเจฒ เจฌเจนเฉเจค เจจเฉ‡เฉœเจฟเจ“เจ‚ เจธเจฌเฉฐเจงเจค เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‡เจน เจ•เจฟเจนเฉœเฉ€ เจ–เฉ‡เจก เจนเฉˆ? เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจŸเฉˆเจจเจฟเจธ เจธเจฟเจฎเฉ‚เจฒเฉ‡เจŸเจฐ เจตเจฐเจ—เจพ เจ•เฉเจ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€ เจœเฉ‹ เจธเจฟเจŸเฉ€เจœเจผ เจธเจ•เจพเจˆเจฒเจพเจˆเจจเจœเจผ, เจšเจฟเฉœเฉ€เจ†เจ˜เจฐ เจŸเจพเจˆเจ•เฉ‚เจจ, เจœเฉ‡เจฒเฉเจน เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ–เฉเจฆ เจŸเฉˆเจจเจฟเจธ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจ‡เฉฑเจ• เจŸเฉˆเจจเจฟเจธ เจ…เจ•เฉˆเจกเจฎเฉ€ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ–เฉ‡เจก เจฌเจฃ เจ—เจˆ เจœเจฟเฉฑเจฅเฉ‡ เจฒเฉ‹เจ• เจ–เฉ‡เจกเจฃ เจฒเจˆ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจคเจ•เจจเฉ€เจ•เฉ€ เจธเจฟเจ–เจฒเจพเจˆ

เจฎเฉˆเจ‚ Rust เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€, เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ เจจเจนเฉ€เจ‚ เจชเจคเจพ เจธเฉ€ เจ•เจฟ เจ‡เจธ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเฉฐเจจเจพ เจ•เฉ เจ†เจงเจพเจฐ เจ•เจพเจฐเจœ เจฒเฉฑเจ—เฉ‡เจ—เจพเฅค เจฎเฉˆเจ‚ เจชเจฟเจ•เจธเจฒ เจธเจผเฉˆเจกเจฐ เจฒเจฟเจ–เจฃเจพ เจ…เจคเฉ‡ เจกเจฐเฉˆเจ—-เจเจจ-เจกเฉเจฐเฉŒเจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจธเจญ เจคเฉ‹เจ‚ เจฒเจšเจ•เจฆเจพเจฐ เจนเฉฑเจฒ เจฒเฉฑเจญ เจฐเจฟเจนเจพ เจธเฉ€เฅค

เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจพเจญเจฆเจพเจ‡เจ• เจธเจฐเฉ‹เจค เจฎเจฟเจฒเฉ‡ เจนเจจ เจœเฉ‹ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจธเจพเจ‚เจเฉ‡ เจ•เจฐเจฆเจพ เจนเจพเจ‚:

เจฎเฉˆเจ‚ เจ•เจˆ Rust เจ—เฉ‡เจฎ เจ‡เฉฐเจœเจฃเจพเจ‚ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เฉ€เจคเฉ€, เจ†เจ–เจฐเจ•เจพเจฐ เจชเจฟเจธเจŸเจจ เจ…เจคเฉ‡ ggez เจฆเฉ€ เจšเฉ‹เจฃ เจ•เฉ€เจคเฉ€เฅค เจชเจฟเจ›เจฒเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฎเฉˆเจ‚ เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจฟเจ†เฅค เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ ggez เจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ† เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ 2D เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจตเจงเฉ‡เจฐเฉ‡ เจขเฉเจ•เจตเจพเจ‚ เจœเจพเจชเจฆเจพ เจธเฉ€. เจชเจฟเจธเจŸเจจ เจฆเฉ€ เจฎเจพเจกเจฏเฉ‚เจฒเจฐ เจฌเจฃเจคเจฐ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจกเจฟเจตเฉˆเจฒเจชเจฐ (เจœเจพเจ‚ เจ•เฉ‹เจˆ เจตเจฟเจ…เจ•เจคเฉ€ เจœเฉ‹ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจœเฉฐเจ—เจพเจฒ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ) เจฒเจˆ เจฌเจนเฉเจค เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉˆเฅค

เจ–เฉ‡เจก เจฌเจฃเจคเจฐ

เจฎเฉˆเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฃ เจตเจฟเฉฑเจš เจ•เฉเจ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‡เจ†เฅค เจชเจนเจฟเจฒเจพ เจ•เจฆเจฎ "เจœเจผเจฎเฉ€เจจ", เจฒเฉ‹เจ• เจ…เจคเฉ‡ เจŸเฉˆเจจเจฟเจธ เจ•เฉ‹เจฐเจŸ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ. เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจฆเฉ‡ เจ—เฉ‡เฉœเฉ‡ เจฎเจพเจฐเจจเฉ‡ เจชเฉˆเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‰เจกเฉ€เจ• เจ•เจฐเจจเฉ€ เจชเฉˆเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจ•เฉ‹เจฒ เจ…เจœเจฟเจนเฉ‡ เจนเฉเจจเจฐ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเฉเจงเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจจเจพเจฒ เจนเฉ€, เจ‡เฉฑเจ• เจธเฉฐเจชเจพเจฆเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจ…เจคเฉ‡ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจนเฉเจฃ เจฎเฉเจซเจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจธเจญ เจ•เฉเจ เจธเฉ‹เจšเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจ•เฉฐเจฎ 'เจคเฉ‡ เจฒเฉฑเจ— เจ—เจฟเจ†เฅค

เจ–เฉ‡เจก เจฐเจšเจจเจพ

เจธเจผเฉเจฐเฉ‚เจ†เจค: เจšเฉฑเจ•เจฐ เจ…เจคเฉ‡ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ

เจฎเฉˆเจ‚ ggez เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจ…เจคเฉ‡ เจธเจ•เฉเจฐเฉ€เจจ เจคเฉ‡ เจ‡เฉฑเจ• เจšเฉฑเจ•เจฐ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ. เจธเจผเจพเจจเจฆเจพเจฐ! เจนเฉเจฃ เจ•เฉเจ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจเฅค เจฎเฉˆเจ‚ เจธเฉ‹เจšเจฟเจ† เจ•เจฟ เจ—เฉ‡เจฎ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจคเฉ‹เจ‚ เจฆเฉ‚เจฐ เจฐเจนเจฟเจฃเจพ เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ. เจนเจฐเฉ‡เจ• เจตเจธเจคเฉ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจฅเฉ‡ เจฆเฉฑเจธเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

// the game object trait
trait GameObject {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()>;
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()>;
}
 
// a specific game object - Circle
struct Circle {
    position: Point2,
}
 
 impl Circle {
    fn new(position: Point2) -> Circle {
        Circle { position }
    }
}
impl GameObject for Circle {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()> {
        Ok(())
    }
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
        let circle =
            graphics::Mesh::new_circle(ctx, graphics::DrawMode::Fill, self.position, 100.0, 2.0)?;
 
         graphics::draw(ctx, &circle, na::Point2::new(0.0, 0.0), 0.0)?;
        Ok(())
    }
}

เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เจธ เจŸเฉเจ•เฉœเฉ‡ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉฐเจ—เฉ€ เจธเฉ‚เจšเฉ€ เจฆเจฟเฉฑเจคเฉ€ เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจฌเจฐเจพเจฌเจฐ เจตเจงเฉ€เจ† เจฒเฉ‚เจช เจตเจฟเฉฑเจš เจ…เจชเจกเฉ‡เจŸ เจ…เจคเฉ‡ เจฐเฉˆเจ‚เจกเจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเจพเจ‚.

mpl event::EventHandler for MainState {
    fn update(&mut self, context: &mut Context) -> GameResult<()> {
        // Update all objects
        for object in self.objects.iter_mut() {
            object.update(context)?;
        }
 
        Ok(())
    }
 
    fn draw(&mut self, context: &mut Context) -> GameResult<()> {
        graphics::clear(context);
 
        // Draw all objects
        for object in self.objects.iter_mut() {
            object.draw(context)?;
        }
 
        graphics::present(context);
 
        Ok(())
    }
}

main.rs เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเจพเจˆเจจเจพเจ‚ เจนเจจเฅค เจฎเฉˆเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจ เจ…เจคเฉ‡ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจฅเฉ‹เฉœเฉเจนเจพ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‡เจ†เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:
เจธเจฐเฉ‹เจค -> เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉฐเจชเจคเฉ€เจ†เจ‚ เจนเจจ (เจšเจฟเฉฑเจคเจฐ)
เจเจฐเฉ‹เจ–เฉ‡
- เจ‡เจ•เจพเจˆเจ†เจ‚
โ€” game_object.rs
โ€” circul.rs
โ€” main.rs -> เจฎเฉเฉฑเจ– เจฒเฉ‚เจช

เจฒเฉ‹เจ•, เจฎเฉฐเจœเจผเจฟเจฒเจพเจ‚ เจ…เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ

เจ…เจ—เจฒเจพ เจ•เจฆเจฎ เจ‡เฉฑเจ• เจตเจฟเจ…เจ•เจคเฉ€ เจ—เฉ‡เจฎ เจ†เจฌเจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจฒเฉ‹เจก เจ•เจฐเจจเจพ เจนเฉˆเฅค เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ 32*32 เจŸเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจฌเจฃเจพเจ‡เจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

เจŸเฉˆเจจเจฟเจธ เจ•เฉ‹เจฐเจŸเจธ

เจ‡เจน เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจฟ เจŸเฉˆเจจเจฟเจธ เจ•เฉ‹เจฐเจŸ เจ•เจฟเจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ 4*2 เจŸเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเฅค เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš, เจ‡เจธ เจ†เจ•เจพเจฐ เจฆเจพ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ, เจœเจพเจ‚ 8 เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจŸเจพเจ‡เจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจธเฉ€เฅค เจชเจฐ เจซเจฟเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจธเจฟเจฐเจซเจผ เจฆเฉ‹ เจตเจฟเจฒเฉฑเจ–เจฃ เจŸเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€, เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจ•เจฟเจ‰เจ‚ เจนเฉˆเฅค

เจ•เฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจ•เฉ‡ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจฆเฉ‹ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจŸเจพเจˆเจฒเจพเจ‚ เจนเจจ: 1 เจ…เจคเฉ‡ 2.

เจ…เจฆเจพเจฒเจค เจฆเฉ‡ เจนเจฐ เจญเจพเจ— เจตเจฟเฉฑเจš เจŸเจพเจ‡เจฒ 1 เจœเจพเจ‚ เจŸเจพเจˆเจฒ 2 เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจฎ เจตเจพเจ‚เจ— เจฐเฉฑเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจพเจ‚ 180 เจกเจฟเจ—เจฐเฉ€ 'เจคเฉ‡ เจซเจฒเจฟเจช เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ‰เจธเจพเจฐเฉ€ (เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€) เจฎเฉ‹เจก

เจธเจพเจˆเจŸเจพเจ‚, เจฒเฉ‹เจ•เจพเจ‚ เจ…เจคเฉ‡ เจจเจ•เจธเจผเจฟเจ†เจ‚ เจฆเฉ€ เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจฌเจพเจ…เจฆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจ‡เฉฑเจ• เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฎเฉ‹เจก เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจธเฉ€เฅค เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ: เจœเจฆเฉ‹เจ‚ เจฌเจŸเจจ เจฆเจฌเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ†เจฌเจœเฉˆเจ•เจŸ เจšเฉเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ‡เจธเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจฆเฉ€ เจฅเจพเจ‚ เจคเฉ‡ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ. เจ‡เจธ เจฒเจˆ, เจฌเจŸเจจ 1 เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจฆเจพเจฒเจค เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจŸเจจ 2 เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ–เจฟเจกเจพเจฐเฉ€ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจชเจฐ เจธเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจ•เจฟ 1 เจ…เจคเฉ‡ 2 เจฆเจพ เจ•เฉ€ เจ…เจฐเจฅ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฎเฉˆเจ‚ เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจพเจ‡เจฐเจซเฉเจฐเฉ‡เจฎ เจœเฉ‹เฉœเจฟเจ† เจ•เจฟ เจ•เจฟเจนเฉœเฉ€ เจตเจธเจคเฉ‚ เจšเฉเจฃเฉ€ เจ—เจˆ เจธเฉ€เฅค เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจ…เจคเฉ‡ เจฐเฉ€เจซเฉˆเจ•เจŸเจฐเจฟเฉฐเจ— เจธเจตเจพเจฒ

เจนเฉเจฃ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ•เจˆ เจ—เฉ‡เจฎ เจ†เจฌเจœเฉˆเจ•เจŸ เจนเจจ: เจฒเฉ‹เจ•, เจ…เจฆเจพเจฒเจคเจพเจ‚ เจ…เจคเฉ‡ เจซเจฐเจธเจผเฅค เจชเจฐ เจตเจพเจ‡เจฐเจซเฉเจฐเฉ‡เจฎเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจนเจฐเฉ‡เจ• เจ†เจฌเจœเฉˆเจ•เจŸ เจ‡เจ•เจพเจˆ เจจเฉ‚เฉฐ เจ‡เจน เจฆเฉฑเจธเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจ†เจฌเจœเฉˆเจ•เจŸ เจ–เฉเจฆ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจนเจจ, เจœเจพเจ‚ เจ•เฉ€ เจ‡เฉฑเจ• เจซเจฐเฉ‡เจฎ เจธเจฟเจฐเจซเจผ เจ–เจฟเฉฑเจšเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจน เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจจเจนเฉ€เจ‚ เจนเฉˆ.

เจ‡เจน เจฎเฉˆเจจเฉ‚เฉฐ เจœเจพเจชเจฆเจพ เจธเฉ€ เจ•เจฟ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ•เฉเจ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจชเฉเจฐเจ—เจŸ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจฃ:

  • เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจ‡เจ•เจพเจˆ เจฆเจพ เจนเฉ‹เจฃเจพ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจน เจ‡เจ•เจพเจˆ "เจœเจพเจฃเจจ" เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉ€ เจชเฉ‡เจธเจผ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ - เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจตเจพเจ‡เจฐเจซเฉเจฐเฉ‡เจฎ;
  • เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ‡เจ•เจพเจˆเจ†เจ‚ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, is_build_mode เจœเจพเจ‡เจฆเจพเจฆ เจœเจพเจ‚ เจตเจฟเจตเจนเจพเจฐ เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ—) เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจตเจฟเจตเจนเจพเจฐ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจฆเฉ€ เจ˜เจพเจŸเฅค เจตเจฟเจฐเจพเจธเจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡เจ—เจพ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจธ เจจเฉ‚เฉฐ เจœเฉฐเจ—เจพเจฒ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจ•เฉ‹เจˆ เจธเจนเฉ€ เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เฉ€ เจฒเฉ‹เฉœ เจธเฉ€ เจ–เจพเจ•เจพ เจธเฉ€;
  • เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจตเจฟเจš เจธเฉŒเจ‚เจชเจฃ เจฒเจˆ เจ‡เจ•เจพเจˆเจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ†เจชเจธเฉ€ เจคเจพเจฒเจฎเฉ‡เจฒ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€;
  • เจ‡เจ•เจพเจˆเจ†เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจคเจฐเจ• เจฆเจพ เจฎเจฟเจธเจผเจฐเจฃ เจธเจจ เจœเฉ‹ เจœเจฒเจฆเฉ€ เจ•เจพเจฌเฉ‚ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉ‹ เจ—เจˆเจ†เจ‚เฅค

เจฎเฉˆเจ‚ เจ•เฉเจ เจนเฉ‹เจฐ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ ECS - เจ‡เจ•เจพเจˆ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจธเจฟเจธเจŸเจฎ, เจœเฉ‹ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ–เฉ‡เจกเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ ECS เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจนเจจ:

  • เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจคเจฐเจ• เจคเฉ‹เจ‚ เจตเฉฑเจ– เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ;
  • เจตเจฟเจฐเจพเจธเจค เจฆเฉ€ เจฌเจœเจพเจ เจฐเจšเจจเจพ;
  • เจกเจพเจŸเจพ-เจ•เฉ‡เจ‚เจฆเฉเจฐเจฟเจค เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐเฅค

ECS เจจเฉ‚เฉฐ เจคเจฟเฉฐเจจ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเฉฐเจ•เจฒเจชเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ:

  • เจ‡เจ•เจพเจˆเจ†เจ‚ - เจตเจธเจคเฉ‚ เจฆเฉ€ เจ•เจฟเจธเจฎ เจœเจฟเจธเจฆเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจธเฉฐเจ•เฉ‡เจค เจ•เจฐเจฆเจพ เจนเฉˆ (เจ‡เจน เจ‡เฉฑเจ• เจ–เจฟเจกเจพเจฐเฉ€, เจ‡เฉฑเจ• เจ—เฉ‡เจ‚เจฆ, เจœเจพเจ‚ เจ•เฉเจ เจนเฉ‹เจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ);
  • เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ - เจ‡เจ•เจพเจˆเจ†เจ‚ เจ‰เจนเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฃเฉ€เจ†เจ‚ เจนเจจเฅค เจ‰เจฆเจพเจนเจฐเจจ - เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ, เจธเจฅเจพเจจ เจ…เจคเฉ‡ เจนเฉ‹เจฐเฅค เจ‡เจน เจกเจพเจŸเจพ เจตเฉ‡เจ…เจฐเจนเจพเจŠเจธ เจนเจจ;
  • เจธเจฟเจธเจŸเจฎ - เจ‰เจน เจ†เจฌเจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจจเจพเจฒ เจนเฉ€ เจ‡เจธ เจกเฉ‡เจŸเจพ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจตเจฟเจตเจนเจพเจฐ เจ…เจคเฉ‡ เจคเจฐเจ• เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจ‡เฉฑเจ• เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจนเฉˆ เจœเฉ‹ เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸเจธ เจฆเฉ‡ เจจเจพเจฒ เจธเจพเจฐเฉ€เจ†เจ‚ เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจฆเฉเจนเจฐเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธเจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจฟเจ† เจ•เจฟ ECS เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ:

  • เจ‡เจ•เจพเจˆเจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ—เจค เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฟเจฐเจพเจธเจค เจฆเฉ€ เจฌเจœเจพเจ เจฒเฉ‡เจ†เจ‰เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ;
  • เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจธเจฟเจธเจŸเจฎ เจฆเฉเจ†เจฐเจพ เจ•เฉ‹เจก เจ‰เจฒเจเจฃ เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพเจ‰เจฃเจพ;
  • เจตเจพเจ‡เจฐเจซเฉเจฐเฉ‡เจฎ เจคเจฐเจ• เจจเฉ‚เฉฐ เจ‰เจธเฉ‡ เจฅเจพเจ‚ 'เจคเฉ‡ เจฐเฉฑเจ–เจฃ เจฒเจˆ is_build_mode เจตเจฐเจ—เฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ - เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจšเฅค

เจˆเจธเฉ€เจเจธ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจœเจฟเจนเจพ เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค

เจธเจฐเฉ‹เจค -> เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉฐเจชเจคเฉ€เจ†เจ‚ เจนเจจ (เจšเจฟเฉฑเจคเจฐ)
เจเจฐเฉ‹เจ–เฉ‡
- เจญเจพเจ—
โ€”position.rs
โ€” person.rs
โ€” tennis_court.rs
โ€” floor.rs
- wireframe.rs
โ€” mouse_tracked.rs
- เจธเจฐเฉ‹เจค
โ€”mouse.rs
- เจธเจฟเจธเจŸเจฎ
โ€” rendering.rs
โ€” constants.rs
โ€” utils.rs
โ€” world_factory.rs -> เจตเจฟเจธเจผเจต เจซเฉˆเจ•เจŸเจฐเฉ€ เจซเฉฐเจ•เจธเจผเจจ
โ€” main.rs -> เจฎเฉเฉฑเจ– เจฒเฉ‚เจช

เจ…เจธเฉ€เจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจตเจฟเจš เจธเฉŒเจ‚เจชเจฆเฉ‡ เจนเจพเจ‚

ECS เจจเฉ‡ เจœเจผเจฟเฉฐเจฆเจ—เฉ€ เจจเฉ‚เฉฐ เจ†เจธเจพเจจ เจฌเจฃเจพ เจฆเจฟเฉฑเจคเจพ เจนเฉˆเฅค เจนเฉเจฃ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‡เจ•เจพเจˆเจ†เจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจœเฉ‹เฉœเจจ เจ…เจคเฉ‡ เจ‰เจธ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจคเจฐเจ• เจœเฉ‹เฉœเจจ เจฆเจพ เจ‡เฉฑเจ• เจฏเฉ‹เจœเจจเจพเจฌเฉฑเจง เจคเจฐเฉ€เจ•เจพ เจธเฉ€เฅค เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‡, เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ…เจฆเจพเจฒเจคเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉ€ เจตเฉฐเจก เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‡เจ†.

เจฎเฉˆเจ‚ เจ•เฉ€ เจ•เฉ€เจคเจพ เจนเฉˆ:

  • เจตเจฟเจ…เจ•เจคเฉ€ เจจเฉ‚เฉฐ เจธเฉŒเจ‚เจชเฉ€เจ†เจ‚ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจฌเจพเจฐเฉ‡ เจกเจพเจŸเจพ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ†;
  • เจŸเฉˆเจจเจฟเจธ เจ•เฉ‹เจฐเจŸ เจตเจฟเฉฑเจš เจตเฉฐเจกเฉ‡ เจ—เจ เจฒเฉ‹เจ•เจพเจ‚ เจฌเจพเจฐเฉ‡ เจกเจพเจŸเจพ เจœเฉ‹เฉœเจฟเจ†;
  • เจ•เฉ‹เจฐเจŸเจšเฉ‚เจœเจผเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เจ•เจพเจ‚ เจ…เจคเฉ‡ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ, เจ‰เจชเจฒเจฌเจง เจ…เจฆเจพเจฒเจคเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ;
  • เจ‡เฉฑเจ• Person MovementSystem เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ…เจฆเจพเจฒเจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉŒเจ‚เจชเฉ‡ เจ—เจ เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉ€ เจญเจพเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ‰เจน เจ‰เฉฑเจฅเฉ‡ เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

24 เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเฉฐเจ—เจพเจฒ เจ–เฉ‡เจกเจฃเจพ: เจจเจฟเฉฑเจœเฉ€ เจตเจฟเจ•เจพเจธ เจฆเจพ เจคเจœเจฐเจฌเจพ

เจธเฉฐเจ–เฉ‡เจช

เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจธ เจธเจงเจพเจฐเจจ เจ—เฉ‡เจฎ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจธเฉฑเจšเจฎเฉเฉฑเจš เจ†เจจเฉฐเจฆ เจ†เจ‡เจ†เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฎเฉˆเจจเฉ‚เฉฐ เจ–เฉเจธเจผเฉ€ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฒเจˆ เจœเฉฐเจ—เจพเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ:

  • เจœเฉฐเจ—เจพเจฒ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจน เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ;
  • เจ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจจเจฆเจพเจฐ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจนเจจ, เจœเฉฐเจ—เจพเจฒ เจ•เจพเจซเจผเฉ€ เจธเจผเจพเจจเจฆเจพเจฐ เจนเฉˆ;
  • เจ‡เจ•เจธเจพเจฐเจคเจพ เจ เฉฐเจกเจพ เจนเฉˆ;
  • เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฒเฉ‹เจจเจฟเฉฐเจ—, เจจเจ•เจฒ เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเจฎเจพเจจ เจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเจพ เจธเจนเจพเจฐเจพ เจฒเฉˆเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจœเฉ‹ เจฎเฉˆเจ‚ เจ…เจ•เจธเจฐ C++ เจตเจฟเฉฑเจš เจ•เจฐเจฆเจพ เจธเฉ€;
  • เจตเจฟเจ•เจฒเจช เจตเจฐเจคเจฃ เจฒเจˆ เจฌเจนเฉเจค เจ†เจธเจพเจจ เจนเจจ เจ…เจคเฉ‡ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจขเฉฐเจ— เจจเจพเจฒ เจธเฉฐเจญเจพเจฒเจฆเฉ‡ เจนเจจ;
  • เจœเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจธเฉ€, เจคเจพเจ‚ 99% เจธเจฎเจพเจ‚ เจ‡เจน เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ‡เจน เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจ—เจฒเจคเฉ€ เจธเฉเจจเฉ‡เจนเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจนเจจ เจœเฉ‹ เจฎเฉˆเจ‚ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ.

เจœเฉฐเจ—เจพเจฒ เจตเจฟเฉฑเจš เจ–เฉ‡เจก เจตเจฟเจ•เจพเจธ เจนเฉเจฃเฉ‡ เจนเฉ€ เจธเจผเฉเจฐเฉ‚ เจนเฉˆ. เจชเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจ…เจคเฉ‡ เจ•เจพเจซเจผเฉ€ เจตเฉฑเจกเจพ เจญเจพเจˆเจšเจพเจฐเจพ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจœเฉฐเจ— เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ เจญเจพเจธเจผเจพ เจฆเฉ‡ เจญเจตเจฟเฉฑเจ– เจจเฉ‚เฉฐ เจ†เจธเจผเจพเจตเจพเจฆ เจจเจพเจฒ เจตเฉ‡เจ–เจฆเจพ เจนเจพเจ‚, เจธเจพเจกเฉ‡ เจธเจพเจ‚เจเฉ‡ เจ•เฉฐเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹