Làm biểu tượng xuất hiện trên bất kỳ màu nào


7

Tôi đang phát triển một game theo phong cách RPG / roguelike. Thay vì có bản đồ như:

.........
.........
....@....
...h.....

Ôi nhìn kìa, một chú lùn.

Tôi đã có gạch nền vững chắc, Vì vậy, một loại game nhập vai dựa trên gạch mà không cần vẽ gạch. Tôi thích ý tưởng có gạch ascii cho sinh vật và đồ vật. Nó tiết kiệm rất nhiều thời gian nghệ sĩ. Tôi có thể thay đổi gạch để tôi nhận được một số loại biểu tượng hơi ... liên quan? Nhưng tốt hơn là có 4 hướng cho mỗi điều riêng biệt.

Nếu tôi làm điều này trong màu trắng và có một khu vực tuyết, bạn sẽ không thể nhìn thấy. Vì vậy, làm cho nó màu đen. Ngay khi bạn đến một nơi tối tăm, bạn lại bị mắc kẹt về vị trí của nhân vật. Có một thuật toán hoặc một cái gì đó có thể nói 'cái này quá tối giữa gạch và NPC' và thay đổi màu sắc thành thứ gì đó có thể thu được, nhưng sẽ không chuyển sang màu lục lam sáng từ màu hồng nhạt hay bất cứ thứ gì?

Câu trả lời:


8

Giả sử bạn có một màu sáng và một màu tối cho mỗi ký tự, bạn có thể kiểm tra sự khác biệt về độ chói, bằng cách chuyển đổi màu gạch và màu NPC thành HSL . Chọn màu NPC có độ chênh lệch độ chói lớn nhất từ ​​gạch.

Nếu bạn không muốn gán cả hai màu theo cách thủ công, bạn có thể chỉ cần mã hóa cứng:

if (tile_color.l > 0.5)
    character_color.l = 0.1;
else
    character_color.l = 0.9;

Và gán các cặp HS thay vì bộ ba RGB cho mỗi ký tự.

Bạn cũng có thể chỉ cần cung cấp một phác thảo sáng hơn xung quanh các ký tự tối, và một phác thảo tối hơn xung quanh các ký tự ánh sáng, mọi lúc.


Tôi có thể sử dụng Giá trị của HSV cho cùng loại hiệu ứng ở đây không?
Vịt Cộng sản

Theo trực giác, giá trị có thể "làm tối" nhưng không "làm sáng" hoặc chỉ có thể "làm sáng" nửa chừng. Để làm cho màu sáng hơn trong HSV, bạn cần đồng thời nâng cao giá trị và giảm độ bão hòa. Nhìn vào các hình trụ màu trên trang Wikipedia để xem cách thay đổi hoạt động.

5

Điều này giả định rằng bạn đang lưu trữ nghệ thuật ASCII dưới dạng bitmap thay vì hiển thị văn bản, tốt hơn cho hiệu suất, tính linh hoạt và có thể tạo điều kiện dễ dàng thực hiện các bộ gạch tùy chỉnh.

Thay vì thay đổi màu sắc tùy thuộc vào màu nền, hãy làm cho tất cả ánh sáng nghệ thuật ASCII trở nên sắc nét và có hiệu ứng đổ bóng nhẹ được hiển thị trước trên ảnh bitmap.

Điều này sẽ làm cho các nhân vật và vật phẩm hiển thị độc đáo trên tất cả các màu sắc / sắc thái / tông màu.

Chỉnh sửa: Dưới đây là một số ví dụ

Với một cái bóng văn bản thay thế

Không có bóng văn bản thay thế


Một cái bóng vẫn không hoạt động khi màu sắc quá khớp. Bạn cuối cùng chỉ nhìn thấy một cái bóng, không thể nhận dạng và trông xấu. Một phác thảo là tốt hơn, bảo tồn nhiều chi tiết của hình dạng.

@Joe Wreshnig, tôi đã chỉnh sửa câu trả lời và cung cấp các ví dụ.
Tấn

Bạn đã cung cấp hai sắc thái độ chói thấp cho phông chữ độ sáng trung bình cao. Hãy thử chỉ bóng trên nền gần bằng phông chữ và bạn sẽ thấy vấn đề. Tuy nhiên, vấn đề đã xuất hiện trên chữ "e" màu vàng trong "Văn bản" trên nền trắng.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.