Bạn có một ý tưởng câu chuyện mà bạn muốn biến thành một cuốn tiểu thuyết? Làm thế nào về việc thêm sự hấp dẫn trực quan và tính tương tác cho cuốn tiểu thuyết đó?
Visual Novel có thể là thể loại trò chơi bạn đang tìm kiếm. Và hướng dẫn này ở đây để giúp bạn thiết lập trong 10 phút, với kinh nghiệm mã hóa tối thiểu cần có. Bắt đầu nào!
Chúng tôi sẽ sử dụng Ren’Py Visual Novel Engine, được xây dựng trên Python 2.7. Vì bản thân Python là một ngôn ngữ kịch bản, bạn sẽ có thể “viết kịch bản” cho dự án tiểu thuyết trực quan của mình trong Ren’Py.
Kể từ khi Python 3 xuất hiện, Python 2.7 đã ngừng hoạt động và không còn được duy trì tích cực nữa. Hãy yên tâm – Python 2.7 có tất cả các tính năng chúng ta cần để tạo một cuốn tiểu thuyết trực quan tuyệt vời. Ngoài ra, bản phát hành mới nhất của Ren’Py, Ren’Py SDK 7.4, cung cấp chế độ tương thích cho Python 3. Các nhà phát triển cũng bày tỏ hy vọng tích hợp hoàn toàn với Python 3 trong bản phát hành tiếp theo, Ren’Py 8.0.
Cách tải xuống và thiết lập Ren’Py
Bạn có thể tải xuống phiên bản Ren’Py mới nhất cho hệ điều hành của mình (Windows, Mac, Linux) trên trang web chính thức của nó.
Khi bạn đã tải xuống và cài đặt Ren’Py, bạn có thể mở trình khởi chạy Ren’Py, chọn một trong các dự án khởi động (Hướng dẫn, Câu hỏi) ở bên trái và nhấp vào Khởi chạy dự án.
Kiểm tra hướng dẫn để có được cảm giác về toàn bộ sức mạnh của động cơ này, hoặc Câu hỏi để xem một visual novel rất cơ bản mà bạn có thể làm trong 10 phút.

Cách tạo một dự án mới trong Ren’Py
Hãy tạo một dự án mới. tôi đã gọi cho tôi Đi rừng🌲có một cảnh đơn giản khi hai đứa trẻ khám phá một con đường mòn trong rừng.
Chú ý đến độ phân giải bạn chọn: Mặc định là 1280 x 720. Khi chúng tôi thêm hình ảnh, hình nền của chúng tôi cũng phải tuân theo các kích thước này.

Cách chạy dự án Boilerplate
Khởi chạy dự án soạn sẵn. Nhấn Bắt đầu từ menu chính. Sau hai dòng đối thoại ngắn, kịch bản kết thúc và chúng tôi được đưa trở lại menu chính.

Làm thế nào để kịch bản dự án của chúng tôi
Hãy bắt đầu viết kịch bản cho trò chơi của chúng ta dựa trên bản soạn sẵn.
Các trình soạn thảo văn bản như Sublime Text và Atom đều có đánh dấu cú pháp cho các tập lệnh Ren’Py kết thúc bằng .rpy
. Kiểm tra gói Sublime Text này và gói Atom này.
Hai dòng đối thoại mà chúng ta thấy nằm ở script.rpy
. Mở tệp đó và nội dung của nó sẽ giống như sau. Cũng giống như trong Python, các dòng bắt đầu bằng #
là các nhận xét và sẽ không được đánh giá như một phần của tập lệnh Ren’Py. Các nhận xét và mã bên dưới khá dễ hiểu.
# Declare characters used by this game
define e = Character("Eileen")
# The game starts here
label start:
# Show a background
scene bg room
# This shows a character sprite
show eileen happy
# These display lines of dialogue.
e "You've created a new Ren'Py game."
e "Once you add a story, pictures, and music, you can release it to the world!"
# This ends the game.
return
Các label
được sử dụng cho luồng điều khiển mà chúng tôi sẽ trình bày trong phần sau.
Các return
câu lệnh ở dòng cuối cùng đưa chúng ta trở lại menu chính.
Cách khai báo ký tự và thêm hội thoại
Hãy thay thế phần khai báo và đối thoại của nhân vật trong bản soạn sẵn bằng những phần trong câu chuyện của chúng ta. Đây là cách câu chuyện của tôi diễn ra:
define laura = Character('Laura')
define tom = Character('Tom')
label start:
laura "Wait up, Tom!"
laura "Tom!"
laura "I said wait up!"
laura "...Tom?"
tom "Boo!"
laura "Yikes... not again."
tom "Are you scared?"
laura "Not at all."
laura "Running off like that is dangerous, you know."
laura "We are in the forest. We could get lost."
tom "Okay okay mom. I won't do it again."
return

Cách thêm hình ảnh và chuyển tiếp
Nếu bản thân bạn không phải là nghệ sĩ, bạn có thể cân nhắc tìm kiếm nội dung trong miền sáng tạo chung. itch.io, một thị trường dành cho các trò chơi độc lập, là một nơi tuyệt vời để tìm kiếm nội dung.
Tôi đã tìm thấy tập hợp các họa tiết ký tự này cho dự án của mình. Đối với các hình nền, tôi chỉ đơn giản áp dụng các bộ lọc nghệ thuật cho các hình ảnh thông thường sáng tạo, mang lại cho các hình ảnh thực tế một màu nước thẩm mỹ đẹp mắt.
Tôi đặt tất cả hình ảnh của tôi bên trong game/images
. Lưu ý rằng bạn có thể sử dụng khoảng trắng trong tên tệp hình ảnh.

Sau đó, chúng tôi thêm vào script.rpy
những hình ảnh đó cũng như một số chuyển tiếp. Ren’Py áp dụng hiệu ứng chuyển tiếp khi thấy các từ khóa như with
và at
. Bạn có thể đọc thêm về quá trình chuyển đổi trong tài liệu ATL (Hoạt hình và Ngôn ngữ chuyển tiếp) của Ren’Py.
label start:
scene bg forest day with fade
show laura angry
laura "Wait up, Tom!"
laura "Tom!"
laura "I said wait up!"
laura "...Tom?"
hide laura
scene bg forest day with vpunch
show tom happy at right with moveinbottom
tom "Boo!"
show laura angry at left with moveinleft
laura "Yikes... not again."
tom "Are you scared?"
laura "Not at all."
show laura sad
laura "Running off like that is dangerous, you know."
laura "We are in the forest. We could get lost."
tom "Okay okay mom. I won't do it again."
return

Với việc bổ sung hình ảnh, câu chuyện của chúng ta sẽ kết hợp với nhau một cách độc đáo.
Cách thêm lựa chọn
Một trò chơi với các nhánh và kết thúc khác nhau sẽ nhân đôi niềm vui. Việc thêm menu lựa chọn vào tập lệnh Ren’Py rất đơn giản:
menu:
"Which way should we go?"
"Left":
tom "Let's check out the trail on the left!"
"Right":
tom "Right is always the right way to go!"

Cách sử dụng biến Python và luồng điều khiển
Chúng tôi có thể xác định các biến Python trong tập lệnh Ren’Py và thay đổi luồng câu chuyện của chúng tôi tùy thuộc vào giá trị của chúng. Các câu lệnh Python bắt đầu bằng một $
hoặc thụt vào python:
chặn.
Thêm các biến vào menu lựa chọn trước đó của chúng tôi:
menu:
"Which way should we go?"
"Left":
tom "Let's check out the trail on the left!"
$ is_lost = True
"Right":
tom "Right is always the right way to go!"
$ is_lost = False
scene bg forest noon with Dissolve(3.0)
scene bg forest dusk with Dissolve(3.0)
show laura sad at left with moveinleft
laura "It's getting late. Are you sure we aren't lost?"
if is_lost:
show tom sad at right with moveinleft
tom "I hope not, but I have a bad feeling about this."
else:
show tom happy at right with moveinleft
tom "We are fine. Look! There's the end of the trail."
tom "I'm the best scout around."

Xem phần cuối của bài đăng này để biết các tài nguyên thủ công của tôi để làm việc với Python trong Ren’Py.
Cách chơi nhạc
Theo tài liệu Âm thanh của Ren’Py, việc phát nhạc và hiệu ứng âm thanh dễ dàng như sau:
play music "mozart.ogg"
play sound "woof.mp3"
Cách lưu và tải trò chơi
Ren’Py đã thực hiện tất cả các công việc nặng nhọc cho chúng tôi và có một hệ thống lưu và tải tích hợp sẵn.


Tùy chỉnh khác bạn có thể làm
Hiện tại trong cuộc đối thoại của chúng tôi, toàn bộ dòng văn bản được hiển thị cùng một lúc, thay vì từng ký tự một. Chúng ta có thể thay đổi biến preference.text_cps
(CPS là viết tắt của ký tự trên giây) tính bằng options.rpy
như thế này.
default preferences.text_cps = 20

Thậm chí còn nhiều hơn nữa mà chúng ta có thể tùy chỉnh trong gui.rpy
(GUI là viết tắt của Giao diện người dùng đồ họa, bao gồm hộp văn bản và các mục lựa chọn menu mà chúng ta đã thấy) hoặc screens.rpy
.
Ren’Py còn có khả năng gì khác?
Khả năng của Ren’Py còn mở rộng ra ngoài việc hiển thị văn bản và hình ảnh. Tôi có thể đi xa hơn khi nói rằng Ren’Py có khả năng và linh hoạt như chính Python.
Với mô-đun Pygame, có thể tạo các trò chơi nhỏ phức tạp trong Ren’Py. Bản thân tôi đã tạo và mã nguồn mở một số trò chơi nhỏ, bao gồm một công cụ cờ vua tích hợp với trí tuệ nhân tạo cờ vua Stockfish cũng như một công cụ trò chơi nhịp điệu tự động tạo bản đồ nhịp cho bất kỳ tệp nhạc nào.


Trò chơi cờ vua Ren’Py 2.0 của r3dhummingbird
Trò chơi cờ vua PvP và PvC do Stockfish hỗ trợ trong Ren’Py

Trò chơi nhịp điệu Ren’Py của r3dhummingbird
Chơi trò chơi nhịp điệu trong trò chơi Ren’Py Visual Novel của bạn!

Tài nguyên
Hướng dẫn này sẽ giúp bạn bắt đầu với Ren’Py. Việc tham khảo tài liệu chính thức luôn hữu ích khi bạn tìm hiểu các tính năng nâng cao hơn để thêm tiếng vang cho dự án của mình.
Tôi cũng đã tạo một số tài liệu khóa học để giúp bạn tìm hiểu các kiến thức cơ bản về Python và khả năng của chúng trong tập lệnh Ren’Py.
RuolinZheng08/python-for-renpy-dev
[Udemy Course Material] Khái niệm cơ bản về Python dành cho nhà phát triển Ren’Py – RuolinZheng08/python-for-renpy-dev

Khái niệm cơ bản về Python dành cho nhà phát triển Ren’Py
Tìm hiểu kiến thức cơ bản về Python để xây dựng các thành phần phức tạp như hệ thống kiểm kê hoặc trò chơi nhỏ trong dự án Ren’Py của bạn

Xem video giới thiệu khóa học của tôi trên YouTube:
Cảm ơn đã đọc và vui vẻ kể câu chuyện của bạn!